Skip to main content Home About the Design SystemRoadmap OverviewDesignersDevelopers OverviewColorGridIconographyInteractionsSpacingTypography Overview Global colorBox shadowTypographyBorderOpacitySpaceLengthIconBreakpointsMedia queries All elements Accordion Alert Announcement Audio player Avatar Back to top Badge Blockquote Breadcrumb Button Card Chip Code block Call to action Dialog Disclosure Footer Health index Icon Jump links Menu dropdown Navigation link Navigation (primary) Navigation (secondary) Navigation (vertical) Pagination PopoverPlanned Progress stepper Scheme toggle Site status Skeleton Skip link Spinner Statistic Subnavigation Surface Switch Table Tabs Tag Tile Timestamp Tooltip Video embed OverviewColor PalettesCustomizingDevelopers All PatternsAccordionCall to ActionCardFilterFormLink with iconLogo wallSearch barSticky bannerSticky cardTabsTagTile All Personalization PatternsAnnouncement FundamentalsAccessibility toolsAssistive technologiesCI/CDContentContributorsDesignDevelopmentManual testingResourcesScreen readers Design/code status Release notes Get support

Pagination

OverviewStyleGuidelinesCodeAccessibilityDemos
OverviewStatusWhen to useStatus checklistOverviewStatusWhen to useStatus checklist

Overview

Enables navigation across pages of content using first/prev/next/last stepper buttons, numbered page links, and a direct page-input field. Authors MUST provide a single <ol> child with <li><a> page links. The active page is determined by aria-current="page" or URL match. Supports box and open variants, default and small sizes, and compact layout. Tab moves focus through steppers and input; Enter activates. Screen readers announce the <nav> landmark with the label property. Truncation with ellipsis appears automatically beyond 9 pages.

import '@rhds/elements/rh-pagination/rh-pagination.js';
<meta itemprop="description" content="Default pagination with page links and numeric input.">
<rh-pagination>
  <ol>
    <li><a href="?page=1">1</a></li>
    <li><a href="?page=2">2</a></li>
    <li><a href="?page=3">3</a></li>
    <li><a href="?page=4">4</a></li>
    <li><a href="?page=5">5</a></li>
  </ol>
</rh-pagination>

<link rel="stylesheet" href="../rh-pagination-lightdom.css">
import { Pagination } from "@rhds/elements/react/rh-pagination/rh-pagination.js";

// NOTE: React 19+ does not require these wrapper imports.
// You can use the custom elements directly as-is.

export const Demo = () => (
  <meta itemprop="description" content="Default pagination with page links and numeric input." />
  <Pagination>
    <ol>
      <li><a href="?page=1">1</a></li>
      <li><a href="?page=2">2</a></li>
      <li><a href="?page=3">3</a></li>
      <li><a href="?page=4">4</a></li>
      <li><a href="?page=5">5</a></li>
    </ol>
  </Pagination>
  <link rel="stylesheet" href="../rh-pagination-lightdom.css" />
);

Controls which end(s) of the page list are truncated with ellipsis. Accepts 'start' | 'end' | 'both' | null. Computed automatically from page count and current index. Reflected to the host attribute so light-DOM CSS can hide overflow <li> elements. Defaults to null.

Accessible label for the <nav> landmark. SHOULD be unique when multiple paginations exist on a page. Defaults to 'Page navigation'.

Accessible label for the first-page stepper button. Used by screen readers. Defaults to 'first page'.

Accessible label for the previous-page stepper button. Used by screen readers. Defaults to 'previous page'.

Accessible label for the next-page stepper button. Used by screen readers. Defaults to 'next page'.

Accessible label for the last-page stepper button. Used by screen readers. Defaults to 'last page'.

Controls pagination size. Accepts 'sm' for smaller touch targets (WCAG AA) or null for default (WCAG AAA). Defaults to null.

Visual variant. Accepts 'open' for transparent backgrounds with bottom borders, or null for the default box variant. Defaults to null.

View source on GitHub

Status

When to use

  • When you need to divide large quantities of data or content into chunks
  • When you need to enable users to navigate to through pages or locate a specific page number
  • When you need to improve the loading performance of a system
Image of four paginations; one is full size showing double truncation and a page input field. One is compact size showing only a page field input. The two below it are the open variants in the same sizes.

Status checklist

© 2026 Red Hat Deploys by Netlify