Skip to main content
WCAGrules
Quick navigation

ARIA state

aria-current

Marks the one item in a set that represents the here and now, such as the current page in a nav.

It picks out one item in a set and says this is the one you are on. Move it and the announcement moves with it. The value names what kind of current you mean, page or step or date or time or location, and true covers everything else.

Which roles may carry aria-current

Value
token
Filed as
A state, which is how ARIA files it and not a rule about how often it changes.
Roles that may carry it
Any role. This one is global, which is why no individual role lists it.

Global means no role has to grant permission for it. There is one more place to check, because ARIA in HTML sets rules per element as well as per role, and it allows no aria-* attributes at all on a datalist or on the html element. Past that, the way a global attribute goes wrong is rarely where it sits. It is whether it is still true, which is the next section.

Every role above comes from the specification's own list for this attribute, checked name for name. The normative definition stays with the W3C, in the aria-current section of the ARIA specification.

Keeping aria-current true

This is the one that goes stale on client-side routing, because the URL changes and the nav does not. Left where it was, it now tells a screen reader user they are on last month's page while they are looking at this month's. Two more rules keep it honest. Only one element in a set should carry it, so moving it means clearing the old one in the same step. And any value the spec does not recognise is read as true rather than ignored, so a typo still marks the item, just without saying what kind of current it is. It is also not a stand-in for aria-selected. Where a widget already has selection, aria-selected is the one that means it.

How aria-current gets checked

There are test rules that check an ARIA attribute is one that exists, is allowed on the role underneath it, and carries a value of the right type. What they map to is ARIA's own author requirements rather than any WCAG criterion, so a misplaced attribute breaks ARIA without being a WCAG failure by itself. It becomes one under 4.1.2 Name, Role, Value the moment the missing or wrong value means the control's state cannot be worked out programmatically, which is what usually happens next.

Nothing automated catches the failure this page is about. A stale value is a valid value, on a permitted role, with the right type. It is only wrong about the world.

Attributes you will meet alongside aria-current

  • aria-atomic Whether an update should be read whole, or only the part that changed.
  • aria-busy Says a region is still being updated, so wait before announcing it.
  • aria-controls Points at what this control operates. A combobox has to say what it opens.
  • aria-describedby Points at further description, read after the name. Hints and error text usually go here.
  • aria-details Points at richer explanation elsewhere in the page, which people can navigate to rather than have read out.
  • aria-flowto Overrides reading order by pointing at what should be read next. Rarely the right answer.
  • aria-hidden Removes an element from the accessibility tree while leaving it on screen.
  • aria-keyshortcuts Lists the keyboard shortcuts that activate this control, so they can be announced and checked for clashes.

Every ARIA state and property · Every ARIA role · ARIA explained

Go somewhere useful

Find tools, resources and your workspace.

29 destinations