auditmysitev2.0.2

Landmarks are not uniquely named

landmarks/not-unique

WCAG success criterion
1.3.1 (level A)
Outcome class
Hint only. An automated check that by design reports review hints only: its findings are marked for manual review, never as confirmed violations.
Area
Accessibility, Structure & Semantics
Default severity
medium
axe-core rule
landmark-unique

Why we flag this

Screen reader users cannot distinguish similar regions.

Repeated landmark roles without unique aria-label/aria-labelledby values.

What the rule checks

Scope. Rendered landmarks: banner and contentinfo (document-scoped header/footer or role), main, navigation, complementary (top-level aside, or a named aside in a section), and named form/region/section.

Expectation. Asks for review at every landmark that shares its role and accessible name (both unnamed counts as the same name) with another rendered landmark: such landmarks cannot be told apart. The name may come from aria-label, aria-labelledby or title. An unnamed aside inside article/section is generic, not complementary; a header inside main/article is generic, not banner. Copies hidden per breakpoint are not exposed. A SHOULD in ARIA, hence review. One review per offending element.

Source. WAI-ARIA 1.2 landmark roles (several landmarks of one role should have unique labels); ARIA Authoring Practices, Landmark Regions; review for SC 1.3.1

Detection: shared; needs dom, computed_style.

Failing example

The check flags this for review. Corpus case landmark_aside_named_duplicate. The page may contain further findings for other rules.

landmark_aside_named_duplicate.htmlHTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Named nested asides corpus case</title>
</head>
<body>
    <!-- A named aside stays complementary even inside an article (HTML-AAM),
         so two nested asides with the same name are indistinguishable
         landmarks. -->
    <main>
        <h1>Two articles</h1>
        <article>
            <h2>First article</h2>
            <aside aria-label="Related">Related to the first article</aside>
        </article>
        <article>
            <h2>Second article</h2>
            <aside title="Related">Related to the second article</aside>
        </article>
    </main>
</body>
</html>

Passing example

The check passes here and reports nothing. Corpus case landmark_header_in_main. The page may contain further findings for other rules.

landmark_header_in_main.htmlHTML
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Header and footer scoped to main corpus case</title>
</head>
<body>
    <!-- #639: only the body-scoped header/footer are banner/contentinfo;
         the ones inside main/article are generic per HTML-AAM. -->
    <header class="site-header">
        <nav aria-label="Main navigation"><a href="/">Home</a></nav>
    </header>
    <main id="main">
        <div class="chapter">
            <div class="content">
                <header class="grid">
                    <h1>Chapter title</h1>
                    <p>Chapter introduction.</p>
                </header>
                <article>
                    <header><h2>Article heading</h2></header>
                    <p>Article text.</p>
                    <footer>Article footer</footer>
                </article>
            </div>
        </div>
    </main>
    <footer class="site-footer">Site footer</footer>
</body>
</html>

This page is generated from the rule catalogue and the rule contracts; see therule overview for how the outcome classes are derived.