Skip to component content

Navigate paged results with native Bootstrap pagination controls.

Usage

Use .pagination when a long result set is divided into discrete pages. Wrap the list in a labelled navigation region, keep Previous and Next at the edges, and mark the current page with aria-current="page" so assistive technology can identify the active position.

Disable boundary controls when they cannot move, and include accessible labels for icon-only Previous, Next, and ellipsis items. Use an ellipsis only where skipped pages are intentional; do not hide nearby pages that help the user understand where they are in the range.

Match the density to the surrounding surface with Bootstrap size variants, and keep pagination close to the collection it controls. For tables or filtered lists, update the visible result range and disabled states whenever filtering changes the page count.

Default

Use page numbers with Previous/Next and an ellipsis for long result sets.

Pagination
<nav aria-label="Pagination">
  <ul class="pagination">
    <li class="page-item">
      <a class="page-link" href="#" aria-label="Previous"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">Previous</span></a>
    </li>
    <li class="page-item">
      <a class="page-link" href="#">1</a>
    </li>
    <li class="page-item active" aria-current="page">
      <a class="page-link" href="#">2</a>
    </li>
    <li class="page-item">
      <a class="page-link" href="#">3</a>
    </li>
    <li class="page-item disabled">
      <span class="page-link"><i class="lucide lucide-ellipsis" data-icon="inline-start" aria-hidden="true"></i><span class="visually-hidden">More pages</span></span>
    </li>
    <li class="page-item">
      <a class="page-link" href="#" aria-label="Next"><span class="d-none d-sm-inline">Next</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
    </li>
  </ul>
</nav>

Disabled boundary

Keep Previous disabled on the first page while remaining actions stay available.

Pagination
<nav aria-label="Pagination">
  <ul class="pagination">
    <li class="page-item disabled">
      <span class="page-link" role="link" aria-disabled="true" aria-label="Previous"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">Previous</span></span>
    </li>
    <li class="page-item active" aria-current="page">
      <a class="page-link" href="#">1</a>
    </li>
    <li class="page-item">
      <a class="page-link" href="#">2</a>
    </li>
    <li class="page-item">
      <a class="page-link" href="#">3</a>
    </li>
    <li class="page-item">
      <a class="page-link" href="#" aria-label="Next"><span class="d-none d-sm-inline">Next</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
    </li>
  </ul>
</nav>

Sizes

Use compact and larger controls with Bootstrap size variants when the layout needs density.

Pagination
<div class="d-flex flex-column gap-3">
  <nav aria-label="Pagination">
    <ul class="pagination pagination-sm">
      <li class="page-item">
        <a class="page-link" href="#" aria-label="Previous"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">Previous</span></a>
      </li>
      <li class="page-item active" aria-current="page">
        <a class="page-link" href="#">1</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">2</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#" aria-label="Next"><span class="d-none d-sm-inline">Next</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
      </li>
    </ul>
  </nav>
  <nav aria-label="Pagination">
    <ul class="pagination pagination-lg">
      <li class="page-item">
        <a class="page-link" href="#" aria-label="Previous"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">Previous</span></a>
      </li>
      <li class="page-item active" aria-current="page">
        <a class="page-link" href="#">1</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">2</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#" aria-label="Next"><span class="d-none d-sm-inline">Next</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
      </li>
    </ul>
  </nav>
</div>

RTL

Use the same page range, active state, and skipped-pages marker across Arabic and Hebrew RTL examples, with English as the LTR comparison.

<div dir="rtl">
  <nav aria-label="Pagination">
    <ul class="pagination">
      <li class="page-item">
        <a class="page-link" href="#" aria-label="السابق"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">السابق</span></a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">1</a>
      </li>
      <li class="page-item active" aria-current="page">
        <a class="page-link" href="#">2</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">3</a>
      </li>
      <li class="page-item disabled">
        <span class="page-link"><i class="lucide lucide-ellipsis" data-icon="inline-start" aria-hidden="true"></i><span class="visually-hidden">صفحات إضافية</span></span>
      </li>
      <li class="page-item">
        <a class="page-link" href="#" aria-label="التالي"><span class="d-none d-sm-inline">التالي</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
      </li>
    </ul>
  </nav>
</div>
<div dir="rtl">
  <nav aria-label="Pagination">
    <ul class="pagination">
      <li class="page-item">
        <a class="page-link" href="#" aria-label="הקודם"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">הקודם</span></a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">1</a>
      </li>
      <li class="page-item active" aria-current="page">
        <a class="page-link" href="#">2</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">3</a>
      </li>
      <li class="page-item disabled">
        <span class="page-link"><i class="lucide lucide-ellipsis" data-icon="inline-start" aria-hidden="true"></i><span class="visually-hidden">עמודים נוספים</span></span>
      </li>
      <li class="page-item">
        <a class="page-link" href="#" aria-label="הבא"><span class="d-none d-sm-inline">הבא</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
      </li>
    </ul>
  </nav>
</div>
<div dir="ltr">
  <nav aria-label="Pagination">
    <ul class="pagination">
      <li class="page-item">
        <a class="page-link" href="#" aria-label="Previous"><i class="lucide lucide-chevron-left" data-icon="inline-start" aria-hidden="true"></i><span class="d-none d-sm-inline">Previous</span></a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">1</a>
      </li>
      <li class="page-item active" aria-current="page">
        <a class="page-link" href="#">2</a>
      </li>
      <li class="page-item">
        <a class="page-link" href="#">3</a>
      </li>
      <li class="page-item disabled">
        <span class="page-link"><i class="lucide lucide-ellipsis" data-icon="inline-start" aria-hidden="true"></i><span class="visually-hidden">More pages</span></span>
      </li>
      <li class="page-item">
        <a class="page-link" href="#" aria-label="Next"><span class="d-none d-sm-inline">Next</span><i class="lucide lucide-chevron-right" data-icon="inline-end" aria-hidden="true"></i></a>
      </li>
    </ul>
  </nav>
</div>

Component reference

Status
Accepted
Runtime
native HTML/CSS
Markup
Bootstrap/native HTML
Reference

For Bootstrap's source behavior and sizing variables, see the Bootstrap Pagination documentation.

Settings

Theme
Choose how Moo UI looks on this device.
Sidebar
Choose how the sidebar sits on the page.
Theme Builder
Tune catalog tokens and chart colors for this browser.
Base color
Theme color
Chart color
Heading font
Body font
Radius
Direction
Choose the reading direction. RTL flips the layout live.
Reset

Restore the default appearance.