Skip to content


The Pagination component enables the user to select a specific page from a range of pages.

Press Enter to start editing
Press Enter to start editing
Press Enter to start editing
Press Enter to start editing


You can optionally enable first-page and last-page buttons, or disable the previous-page and next-page buttons.

Press Enter to start editing

Custom icons

It's possible to customize the control icons.

Press Enter to start editing

Pagination ranges

You can specify how many digits to display either side of current page with the siblingCount prop, and adjacent to the start and end page number with the boundaryCount prop.

Press Enter to start editing

Page: 1

Press Enter to start editing
Press Enter to start editing


For advanced customization use cases, a headless usePagination() hook is exposed. It accepts almost the same options as the Pagination component minus all the props related to the rendering of JSX. The Pagination component is built on this hook.

import usePagination from '@mui/material/usePagination';

Table pagination

The Pagination component was designed to paginate a list of arbitrary items when infinite loading isn't used. It's preferred in contexts where SEO is important, for instance, a blog.

For the pagination of a large set of tabular data, you should use the TablePagination component.

Rows per page:

21–30 of 100

Press Enter to start editing

You can learn more about this use case in the table section of the documentation.



The root node has a role of "navigation" and aria-label "pagination navigation" by default. The page items have an aria-label that identifies the purpose of the item ("go to first page", "go to previous page", "go to page 1" etc.). You can override these using the getItemAriaLabel prop.


The pagination items are in tab order, with a tabindex of "0".


See the documentation below for a complete reference to all of the props and classes available to the components mentioned here.