Skip to content

Engineering

Semantic HTML

Using elements for what they mean rather than how they look, so machines can understand the page.

A button that is a `div` with a click handler looks identical and is broken in ways nobody with a mouse will notice: it is not reachable by keyboard, not announced as a button, not activatable by space or enter, and not exposed to any assistive technology.

Semantic markup is the cheapest accessibility work available, because it is free at build time and expensive to retrofit. Correct headings, lists, landmarks, buttons and labels give you most of a screen reader experience with no extra code.

It is also what search and AI crawlers parse. A page whose structure is expressed only in CSS classes is harder to interpret than one whose structure is in the markup.

Most accessibility remediation budgets are spent replacing markup that could have been correct for free.
Why it matters

Commonly misunderstood

What people get wrong

The claim

ARIA attributes fix it.

What is actually true

The first rule of ARIA is not to use it when a native element would do. ARIA layered over wrong markup usually makes the experience worse, because now the announcement and the behavior disagree.

Next step

Working through a semantic html decision?

Tell us the situation. We will give you the tradeoffs as we see them, including when the answer is that you do not need what you are being sold.

No pitch deck. A 30-minute conversation about what you are trying to achieve.