Ensure every id attribute value is unique
Rule ID: duplicate-id
User Impact: minor
Guidelines: Deprecated
Every id attribute on a page must be
unique. This rule ensures no two elements share the same
id, which is critical for accessibility
and valid HTML.
What is being tested?
The rule checks that each element using the
id attribute has a unique value across
the document.
Why it matters
Duplicate IDs can break important features:
- Screen readers may only detect the first instance, skipping others.
- Form labels and table headers may stop working properly.
- JavaScript may only act on the first element with that ID, ignoring the rest.
How to fix the problem
- Rename duplicate
idvalues to ensure uniqueness. - For repeated elements, use distinct IDs like
button-1,button-2, etc. - Check your HTML with the W3C Markup Validator to spot duplicate IDs.
Example code
Incorrect example: (duplicate id)
<label for="email">Email</label> <input type="text" id="email"> <input type="text" id="email">
Correct example: (unique ids)
<label for="email">Email</label> <input type="text" id="email"> <input type="text" id="email-2">
Best practices
- Use IDs only when necessary, such as for form labels or ARIA attributes.
- Prefer
classselectors for styling or JavaScript targeting when multiple elements are involved. - Be consistent with ID naming to avoid confusion or future duplication.
Important notes
- Duplicate IDs don’t just affect accessibility — they can also break JavaScript functionality.
- Even though WCAG 2.0 does not require valid HTML, valid markup helps prevent many accessibility issues.
Other Rules
Interested in other web accessibility rules? Please see these other rules: