Skip to main content

Confirm

Are you sure?

Accessibility & HTML · Checked on every page

Semantic HTML usageWhat it checks and how to fix it

What it checks

Checks the page structure for the four primary landmarks (main, header, nav, footer, or their ARIA roles), a single main element, duplicated landmarks of the same kind that are not told apart with aria-label, and interactive markup misuse: clickable div or span elements, links without an href, and href="#" or javascript: links. Missing 3 or more landmarks, or 10 or more misused elements, fails; any other issue is a warning.

Why it matters

Screen reader users jump between landmarks the way sighted users scan a page, so missing or ambiguous landmarks make a page hard to navigate. A clickable div is not focusable or operable from the keyboard and is not announced as a button. Semantic structure also helps search engines and AI assistants find the main content of the page.

How to fix it

Use the HTML5 sectioning elements, one main per page, and real buttons for actions.

<header>
  <nav aria-label="Primary">...</nav>
</header>
<main id="main">
  ...
</main>
<footer>
  <nav aria-label="Footer">...</nav>
</footer>

When the same landmark appears more than once (two navs), give each a distinct aria-label.

Replace fake buttons and placeholder links:

<!-- Before -->
<div onclick="openMenu()">Menu</div>
<a href="#" onclick="share()">Share</a>

<!-- After -->
<button type="button" onclick="openMenu()">Menu</button>
<button type="button" onclick="share()">Share</button>

Use <a href> only for navigation to a URL and <button> for everything that performs an action.

Monitor this automatically

Full Stack Audit runs this check and 126 others on your site on a schedule, and emails you when one that passed starts failing.

More Accessibility & HTML checks