Website Spec
← Accessibility
Required

Semantic HTML and landmarks

Use the right HTML element for the job. Landmarks like <header>, <nav>, <main>, and <footer> let assistive technologies announce structure and skip between regions.

What it is

Semantic HTML is the practice of using the element whose name matches its meaning — a heading is <h1> to <h6>, a list is <ul> or <ol>, a button is <button>, a navigation block is <nav>. Landmarks are the small set of elements (<header>, <nav>, <main>, <aside>, <footer>, <section> with a name, <form> with a name, <search>) that screen readers expose as a skippable region list.

Why it matters

Assistive technology builds its model of the page from the tags. A screen-reader user presses a key to jump from heading to heading, from landmark to landmark, from form to form. None of that works on a page made of <div> soup. WCAG 1.3.1 (Level A) requires that information, structure, and relationships conveyed visually are also available programmatically — which in practice means using the right element.

How to implement

A typical page skeleton:

<body>
  <a class="skip-link" href="#main">Skip to main content</a>

  <header>
    <a href="/" aria-label="Home">…logo…</a>
    <nav aria-label="Primary">
      <ul><li><a href="/about">About</a></li>…</ul>
    </nav>
  </header>

  <main id="main">
    <article>
      <h1>Page title</h1>
      <p>…</p>
      <h2>Section heading</h2>
      <p>…</p>
    </article>

    <aside aria-labelledby="related">
      <h2 id="related">Related</h2>
      …
    </aside>
  </main>

  <footer>
    <nav aria-label="Footer"><ul>…</ul></nav>
  </footer>
</body>

Key rules:

Common mistakes

Verification

Sources