Will It Vibe logoWill It Vibe?
A11Y-019Info severity-2 points

Redundant ARIA role duplicates implicit element semantics

Part of Documentation, UX & Accessibility, which counts for 15% of the overall score. When this check fires it deducts 2 points from that category, once per scan, no matter how many places it turns up.

What it detects

Elements like <button>, <img>, <nav>, or a linked <a> already expose the exact role an explicit role="..." attribute would add, so the attribute is dead weight: it adds a line to maintain and a chance for the role to drift from the element if the tag is later changed. Delete the redundant role attribute; the native element already provides it. Severity is informational since this never breaks anything, it is pure cleanup.

Why it matters

An explicit role="..." on an element that already implies that exact role through its tag (a <button> with role="button", an <img> with role="img") adds nothing: assistive technology already reads the native semantics. It is not a bug today, but it is a maintenance trap: if the tag is ever changed (a <button> refactored into something else) the stale role can silently start asserting the wrong semantics, and it is one more thing for a reviewer to double-check for no benefit.

How to fix it

Delete the redundant role attribute and let the native element speak for itself. This is a pure cleanup with no behavior change, verified by confirming the element's accessible role is unchanged before and after in devtools or an accessibility tree inspector.

The paid report includes a ready-to-paste prompt for your AI coding agent for every check it finds, pointed at the exact findings from your scan. See pricing

Does your repo trip this check?

Paste a GitHub URL or drop a project folder. Scans run in your browser and take seconds.

Scan your repo

Related Documentation, UX & Accessibility checks