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 group 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 Readtime Scheme toggle Select Site status Skeleton Skip link Spinner Statistic Subnavigation Surface Switch Table Tabs Tag Tile Timestamp Tooltip Video embed OverviewColor PalettesCustomizingDevelopers All PatternsAccordionAlertCall to ActionCardFilterFormLink with iconLogo wallSearch barSticky bannerSticky cardTabsTagTile All Personalization PatternsAnnouncement FundamentalsAccessibility toolsAssistive technologiesCI/CDContentContributorsDesignDevelopmentManual testingResourcesScreen readers Design/code status Release notes Get support

Spinner

OverviewStyleGuidelinesCodeAccessibilityDemos
OverviewStatusWhen to useStatus checklistOverviewStatusWhen to useStatus checklist

Overview

Provides an animated loading indicator for when content is being processed or fetched. A spinner should be used when loading takes fewer than ten seconds and the content structure is unknown. Authors must not use a spinner for indeterminate loading over ten seconds; use a progress bar instead. Authors should avoid omitting a text label, as screen readers rely on role="status" to announce the ARIA live region. The element is not keyboard-focusable.

import '@rhds/elements/rh-spinner/rh-spinner.js';
<rh-spinner></rh-spinner>
import { Spinner } from "@rhds/elements/react/rh-spinner/rh-spinner.js";

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

export const Demo = () => (
  <Spinner />
);

Preset sizes for the spinner

View source on GitHub

Status

When to use

  • When loading a section is expected to take fewer than ten seconds
  • When the structure or amount of content that's loading is unknown
Image of a spinner element

Status checklist

© 2026 Red Hat Deploys by Netlify