Skip to main contentCarbon Design System

Loading

Loading indicators are used when retrieving data or performing slow computations and help notify users that a process is underway.

Live demo


    This live demo contains only a preview of functionality and styles available for this component. View the full demo on Storybook for additional information such as its version, controls, and API documentation.

    Accessibility testing status

    For every latest release, Carbon runs tests on all components to meet the accessibility requirements. These different statuses report the work that Carbon has done in the back end. These tests appear only when the components are stable.

    Overview

    The loading component provides visual feedback indicating a process or action is in progress. It helps set users’ expectations during wait times by signaling that the system is working behind the scenes. Depending on the context, it can be used as a full-page overlay or placed within a specific section or UI element. Use a loading indicator if the expected wait time exceeds three seconds.

    Example of the loading component in a UI

    Example of the loading component in a UI

    When to use

    • Use when retrieving data or performing slow computations to indicate that a request is being processed.
    • Use when the entire page or a key section is processing, such as after a user submits or saves data.

    When not to use

    • Avoid using loading indicators for progressively displaying content; use skeleton states for a better experience.
    • Do not use loading indicators if user interaction is required to proceed; use alternatives like tooltips, progress indicators, or notifications instead.
    • For full-screen loads, skeleton states are preferred over indicators to create a smoother experience.
    • Refrain from using multiple loading indicators simultaneously, as it may overwhelm users.

    Formatting

    Anatomy

    Large loading component anatomy

    1. Loading indicator: A circular animated icon indicating that a process is underway. It serves as the primary visual cue for the loading state.

    Sizing

    The loading component is available in two sizes: large and small. The large loading indicator size is the default size.

    Large and small sizes of the loading component

    Large and small sizes of loading component

    Large size

    The large loading indicator is most commonly used to display loading in full-screen takeover situations. It can also appear on sections within a page, in modals, and on individual tiles. A background overlay is typically placed behind the large loading indicator so the user cannot interact with the elements currently in the loading state.

    Example of the large loading component in a UI

    Example of the large loading component in a UI

    Small size

    The small loading indicator is best suited for contextual or localized loading experiences within a specific UI element, particularly in inline loading scenarios. It works well for quick-loading tasks and can be placed within or near the triggering element—such as a button—to indicate that a process is underway. Common examples include saving after clicking on a button, uploading a file, or placing the indicator beside label text to communicate the loading status. For detailed guidance, refer to the inline loading component Usage tab.

    Example of the small loading component in a UI

    Example of the small loading component in a UI

    Placement

    Large loading placement

    The large loading indicator is commonly used for full-screen and component-level loading scenarios. For full-screen loading, place the indicator at the center of the viewport and apply a semi-transparent overlay to signal that the entire interface is inactive.

    Example of the large loading indicator placement for full-screen loading with an overlay

    Example of the large loading indicator placement for full-screen loading with an overlay

    When used within a component, such as a modal, tile, or side panel, center the indicator in that space and use an overlay to prevent interaction with the content while it is loading.

    Example of the large loading indicator placement for component-level loading with overlay

    Example of the large loading indicator placement for component-level loading with an overlay

    Small loading placement

    The small loading indicator is ideal for inline or localized loading within elements like buttons or compact content areas. It should appear inline with or adjacent to the related action without using overlays. During the loading state, any related action buttons—such as “Cancel”—should be temporarily disabled. For more information about inline loading, refer to the inline loading component Usage tab.

    Example of the small loading indicator placement for inline loading

    Example of the small loading indicator placement for inline loading

    Content

    Main elements

    The loading indicator can be paired with an optional label to provide additional context during a loading state.

    For large loading indicators, adding a brief status message below the indicator, such as “Loading data…” can help set users’ expectations. The label text is not included by default in the component but can be customized to include it if needed.

    Example of the large loading indicator with label text

    Example of the large loading indicator with label text

    For small loading indicators, especially in inline use, content should be concise and placed near the related action. For more detailed guidance, refer to the inline loading component’s Content section.

    Further guidance

    For further content guidance, see Carbon’s content guidelines.

    Behaviors

    States

    The loading component has two states: inactive and active. For detailed visual information about the various states for this component, see the Style tab.

    StateWhen to use
    InactiveThe inactive loading state is when no data is being loaded and has no visual indicator.
    ActiveThe active loading state indicates that the action is still in progress.

    Interactions

    For large loading indicators, a semi-transparent overlay is applied over the page or component, blocking all interaction. During this state, users should not be able to interact with any elements, as the overlay indicates the interface is temporarily unavailable.

    For small loading indicators in inline loading scenarios, interactive elements like buttons should be temporarily disabled while loading is in progress. This prevents repeated actions and ensures a smooth user experience. For more guidance, see the inline loading component Interactions section.

    Feedback

    Help us improve this component by providing feedback, asking questions, and leaving any other comments on GitHub.