ARIA progressbar elements must have accessible names

Accessibility isn’t only about avoiding violations — it’s about ensuring your product can be used confidently by everyone. This guide explains the principle of this rule, shows what goes wrong in real-world code, and provides a verified fix that meets WCAG and the European Accessibility Act (EAA).

Why this matters and how to fix it

Why this matters

Progress bars communicate the status of ongoing tasks, such as uploading files or submitting forms. Without a clear accessible name, users relying on screen readers hear only a changing numeric value with no indication of what process is being tracked. This breaks the user’s mental model and can make it seem as though the interface is frozen or incomplete.

How to fix this issue

Add a descriptive name to each progress bar using aria-label or aria-labelledby. For example, use aria-label='File upload progress' to indicate what the bar measures. Ensure the name stays constant while the numeric value updates dynamically. Test that screen readers announce both the name and current value as it changes.

Automated detection · Manual review recommended

Developer guidance

Developers often forget labeling dynamic indicators when integrating upload components or async workflows. Ensure every progressbar in your component library includes a mandatory 'label' prop. Set up automated tests that simulate real-time value updates and confirm accessible announcements remain consistent across browsers and assistive tech.


Code examples

Incorrect Implementation

<div role="progressbar" aria-valuenow="70"></div>

Correct Implementation

<div role="progressbar" aria-valuenow="70" aria-label="File upload progress"></div>
eu icon getwcag

Trusted by organizations across Europe working toward WCAG and EAA conformance