</>
ValidateHTML

Redundant ARIA Role

Every HTML element carries an implicit ARIA role. An <a href> is already a link, a <nav> is already a navigation landmark, a <ul> is already a list. Writing the role again changes nothing for assistive technology and adds a second source of truth that can drift from the first.

Find this error in your own code. Paste your HTML or enter a URL, free and instant.Open the validator
28.2%
of sites tested

How common is this error?

We ran this validator over the home page of the Tranco top 5,000 websites in August 2026. 748 of the 2,655 sites we could reach hit it. That makes it the 8th most common HTML problem we found, across 6,095 occurrences. See the full study.

Most frequent wording: Redundant role "link" on <a>

Why It Matters

Harmless at runtime, costly in maintenance, and found on 28% of sites. The real risk is what redundancy teaches: a codebase full of roles that do nothing trains its authors to sprinkle roles without checking, and eventually one lands on an element where it overrides the correct semantics with a wrong one.

Common Causes

  • Older accessibility guidance from the HTML5 transition, when landmark roles were added for browsers that did not yet map the new elements.
  • Linters or checklists that ask for landmark roles without distinguishing implicit from explicit.
  • Copying markup from a tutorial written before the implicit mappings were reliable.

Code Examples

Invalid
<a href="/pricing" role="link">Pricing</a>
<nav role="navigation">...</nav>
<header role="banner">...</header>
<ul role="list"><li role="listitem">One</li></ul>
Valid
<a href="/pricing">Pricing</a>
<nav>...</nav>
<header>...</header>
<ul><li>One</li></ul>

How to Fix

  • 1Delete the role when it matches the element's implicit one. The first rule of ARIA is not to use ARIA when native HTML already says it.
  • 2Keep a role only when it genuinely differs, such as role="tablist" or role="alert", which no element implies.
  • 3Check the implicit role before adding one: MDN lists it for every element.
  • 4Treat a redundant role as a smell worth reading. If someone felt the need to add it, the surrounding markup may not be as semantic as it looks.

Frequently Asked Questions

Do redundant roles hurt accessibility?
Not directly: the announced result is the same. They cost clarity and create a second place to keep correct. The exception below is the one case where the redundancy is doing real work.
Why do people add role="list" to a <ul>?
Because Safari removes list semantics when the list has list-style: none, so a styled navigation list stops being announced as a list. Adding role="list" restores it. That usage is deliberate and worth keeping. Our validator reports it as redundant because it is redundant per spec, and you can safely ignore it in that specific case.
Should I add landmark roles for older browsers?
No. Every browser and screen reader combination in current use maps <nav>, <main>, <header> and <footer> to their landmark roles. The compatibility reason for writing them expired years ago.

Check Your HTML Now

Our validator detects this error automatically and shows the exact line number.

Open HTML Validator

Related HTML Errors

← View all HTML errors