Pagination Design

Pagination helps users move through long lists while keeping their place. It suits search results, tables and archives where users jump around or share links to a page.

By Mohamed Farhan · Updated Oct 19, 2026

Inside the example

The live example above is plain HTML with Tailwind utility classes, so you can paste it into any Tailwind project. It uses type sizes text-sm (14px) and spacing px-3 (12px), py-2 (8px), gap-1 (4px), px-1 (4px), constrained by max-w-lg. Everything sits on a 4px grid, which keeps rhythm consistent when you adapt it.

Colors use Tailwind's neutral stone scale so the pattern stays brand-agnostic. Swap stone-900 for your primary color on the main action, keep body text dark and check contrast after any change.

Anatomy

1.Previous and next
Large, clearly labelled targets.
2.Page numbers
First, last, current and neighbours.
3.Ellipsis
Shows skipped ranges.
4.Result count
'Showing 21-40 of 312' sets expectations.

Common variations

  • Numbered pagination with previous, next and page numbers.
  • Simple previous and next, for content like blog archives.
  • Load more button, which appends results while keeping the user in control.
  • Infinite scroll, for feeds where users browse rather than search.

States to design

  • Current page: highlighted and marked with aria-current.
  • Disabled previous or next: on the first or last page.
  • Loading: when the next page is fetched without a full reload.
  • Single page: pagination hidden when everything fits.

A walkthrough

A buyer searches an industrial parts catalog and gets 312 results. Below the list she sees 'Showing 21 to 40 of 312 results', Previous and Next buttons, and page numbers 1, 4, 5, 6 and 16, with page 5 highlighted. She jumps to the last page to check the oldest listings and then back to page 2.

Each page has its own URL, including her filters for brand and voltage, so when she shares page 3 with a colleague he sees exactly the same results. When she changes the sort order to price, the results reset to page 1 and the focus moves to the results heading, so she is not left at the bottom of an empty-looking page.

On her phone, the same pagination shows only Previous, the current page and Next, each large enough to tap comfortably, plus the result count. After trying both, the team later tests a 'Show 20 more' button on mobile and finds that buyers browse deeper with it, while desktop users still prefer numbered pages for comparing results.

How different products use it

Search results and stores use numbered pagination so users can return to a page and compare items.

Data tables in admin tools combine pagination with rows-per-page selectors and total counts.

Blogs and archives often use simple Newer and Older links.

Visual design guidelines

Page links should be at least 36 to 44px square for easy clicking, with the current page clearly filled or outlined. Group previous and next buttons with text labels at the edges, and center the page numbers. Show the result count nearby in quieter text.

Best practices

Do

  • Always show first and last pages.
  • Make the current page visually distinct.
  • Keep the page number in the URL so it can be shared.
  • Use generous touch targets on mobile.

Don't

  • Do not show every page number for long lists.
  • Do not reset filters when changing pages.
  • Do not use pagination where infinite scroll suits a feed better.

On mobile

On mobile, show fewer numbers: previous, current page, next, and perhaps the last page. Make targets at least 44px, and consider a 'Load more' button, which is often easier than tapping small numbers.

Common mistakes

  • Losing filters or sort order when changing pages.
  • Not updating the URL, so users cannot share or return to a page.
  • Scrolling to the wrong place after loading a new page.
  • Infinite scroll on pages with important footers.

Edge cases to plan for

  • Thousands of pages need a jump-to-page input or better filtering.
  • Results changing between pages (new items added) can cause duplicates; use cursors on the backend where possible.
  • Very few results should hide pagination entirely.
  • Filters reducing results must reset to page one.

Accessibility checklist

  • Wrap pagination in a nav with aria-label="Pagination".
  • Mark the current page with aria-current="page".
  • Give previous and next buttons text labels, not only arrows.

Implementation notes

Wrap pagination in a nav with an aria-label of Pagination, use real links with page numbers in the URL, and mark the current page with aria-current="page". After loading a new page dynamically, move focus to the results heading.

In your design system

In a design system, pagination is a component that takes the current page, total pages and a link builder, and handles truncation with ellipses internally. Provide a compact variant for mobile and a load-more variant, and pair it with a result-count component and a rows-per-page select for tables.

How to measure whether it works

Track how many users go beyond the first page. If few do, improve sorting and filtering so the best results appear first. Compare engagement between pagination and load-more variations.

Pre-launch checklist

Microcopy you can use

CountShowing 21-40 of 312 results
ControlsPrevious / Next

A step-by-step design process

  • Choose the model: numbered pages, load more or infinite scroll.
  • Decide page size and whether users can change it.
  • Design the page number logic with first, last and neighbours.
  • Keep state in the URL, including filters and sort.
  • Design the mobile version with fewer numbers and larger targets.
  • Manage focus and scroll after loading a new page.

Usability test tasks

Before shipping, run a short usability test with five or so people from your audience. Give them tasks rather than instructions and watch where they hesitate:

  • Go to the last page of results.
  • Move to page 3 and share the link.
  • Change the number of results per page.
  • Return to the results after opening an item.

Key terms

  • Offset pagination: Fetching results by page number and size.
  • Cursor pagination: Fetching results after a specific item, which avoids duplicates.
  • Infinite scroll: Loading more results automatically as the user scrolls.
  • Load more: A button that appends the next set of results.

Writing the copy

Use 'Previous' and 'Next' rather than arrows alone. Result counts should be precise and human: 'Showing 21 to 40 of 312 results'. For load-more buttons, say what will load: 'Show 20 more products'.

Prompts to generate variations

If you use an AI UI generator such as Inspo AI, these prompts are a good starting point for exploring variations of this pattern:

  • Design pagination for a data table with result count, rows-per-page select and first/last/neighbour page numbers.
  • Create a load-more pattern for an ecommerce product grid with a count of remaining products.
  • Design compact mobile pagination for search results.

Related patterns

Pagination often appears with data tables, search results and loading states for dynamic content.

Generate this pattern for your product

Inspo AI designs the full pattern with every state, grounded in how real products solve it, and exports React + Tailwind.

Generate this pattern

Sources and further reading

More UI patterns

Questions people ask

Pagination or infinite scroll?

Pagination is better for search results, tables and anything users compare or revisit. Infinite scroll suits casual browsing feeds.

How many page numbers should I show?

Usually the first, last, current page and one or two neighbours on each side, with ellipses for gaps.

Should pagination be at the top or bottom?

Bottom is standard. For long tables, adding it at the top as well helps users jump without scrolling.

Is infinite scroll bad for SEO?

It can be if content only loads on scroll. Provide paginated URLs as well so search engines can reach every item.

How many results per page?

Commonly 20 to 50 for lists and 12 to 48 for product grids. Let users change it for data tables.

Mohamed Farhan
Mohamed Farhan•Author & CEO•LinkedIn

↘ Building Inspo AI | AI-Powered Design Research & Builder Platform | Design Engineer.