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

Icon

OverviewStyleGuidelinesCodeAccessibilityDemos
OverviewStatusWhen to useIcons and setsStatus checklistOverviewStatusWhen to useIcons and setsStatus checklist

Overview

Use to display Red Hat brand icons as decorative or informational elements. Hidden from assistive technology by default (role="presentation"). When accessible-label is set, gains role="img" and aria-label for screen readers. Must not be the sole interactive element; wrap in a button or link for keyboard access. Supports lazy, idle, and eager loading. Avoid setting aria-hidden manually.

import "@rhds/elements/rh-icon/rh-icon.js";
<rh-icon icon="hat"></rh-icon>
import { Icon } from "@rhds/elements/react/rh-icon/rh-icon.js";

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

export const Demo = () => (
  <Icon icon="hat" />
);

Icon set to load from. Accepts 'standard' | 'ui' | 'microns' or any registered custom set name. Controls default sizing: standard=40px, ui=16px, microns=12px. Defaults to 'standard'.

Name of the icon within the specified set. When changed, triggers a new icon load. Setting to undefined clears the rendered icon. Defaults to undefined.

Accessible label for the icon. When set, applies role="img" and aria-label so screen readers announce the icon. When absent, the icon uses role="presentation" and is hidden from assistive technology. USE for icons that convey meaning not present in surrounding text. Defaults to undefined.

Controls when the icon data is fetched.

  • eager: loads immediately, blocking the main thread
  • idle: waits for browser idle via requestIdleCallback
  • lazy (default): waits for the element to enter the viewport via IntersectionObserver. Defaults to 'lazy'.
View source on GitHub

Status

When to use

  • When you want to supplement the meaning of text with a visual element
  • When you need to represent a UI function with an approved Red Hat icon
  • When you need an icon to occupy a certain amount of space

Icons and sets

<rh-icon> exclusively uses the official Red Hat brand icons.

Browse the icon sets

Image of three icons

Status checklist

© 2026 Red Hat Deploys by Netlify