What if your semantic HTML isn't actually accessible? Learn why common tags fail in screen readers and how to verify your code in the accessibility tree.
#1about 6 minutes
How browsers create the accessibility tree from HTML
Browsers parse HTML into the DOM for visual display and simultaneously create an accessibility tree to convey semantic information to assistive technologies.
#2about 2 minutes
Categorizing semantic HTML as good, bad, or ugly
Semantic HTML elements can be categorized as good (meaningful and accessible), bad (non-semantic like divs), or ugly (semantic but with accessibility caveats).
#3about 3 minutes
Making the section element accessible with ARIA labels
A section element is ignored by the accessibility tree unless it is given an accessible name via an `aria-label` or `aria-labelledby`, which promotes it to a landmark region.
#4about 2 minutes
How context affects header and footer accessibility
The header and footer elements are only exposed as landmarks to assistive technologies when they are direct children of the body element.
#5about 2 minutes
Using anchor tags for navigation and buttons for actions
Anchor tags should be used for navigation to a new page or location, while buttons should be used to perform an on-page action to meet user expectations.
#6about 2 minutes
Why text styling tags are ignored by screen readers
Semantic tags for emphasis or importance like `<em>`, `<strong>`, `<b>`, and `<i>` are not audibly announced by screen readers, requiring alternative methods to convey meaning.
#7about 3 minutes
The inconsistent screen reader support for del and ins tags
The `<del>` and `<ins>` elements, often used for pricing, have improving but still unreliable support across screen readers and browsers, which can lead to confusion.
#8about 2 minutes
Accessibility issues with hr, br, and abbr tags
Elements like `<hr>`, `<br>`, and `<abbr>` can create disruptive experiences or have unreliable support, demonstrating that browser compatibility does not equal screen reader compatibility.
#9about 1 minute
Stop fighting the browser and use elements correctly
The key takeaway is to use HTML elements for their intended semantic purpose, such as using buttons for actions instead of making divs clickable.
Related jobs
Jobs that call for the skills explored in this talk.
The Web We Broke (And Why AI Agents Are Paying the Price) - AgentCon BerlinThis is the accompanying post to the talk Chris Heilmann gave at AgentCon in Berlin on 19/05/2026, you can also see the slides and listen to it in this screencast:
Thirty years of developer shortcuts, bloated JavaScript, and inaccessible HTML have l...
Christina Schaireiter
Semantic HTML Elements You’re (Probably) Not Using But ShouldSemantic HTML is one of the simplest ways to make your pages more accessible, meaningful, and easier to maintain, without adding libraries or rewriting layouts. Here are five underrated elements that quietly (but meaningfully) improve UX, accessibili...
Daniel Cranney
The State of HTML 2024: What can we learn from it?The results of the State of HTML 2024 survey are in! Though the name suggests it’s HTML-only, the survey focuses on the web platform in a more general sense, giving us some fascinating insights into not only the state of the web, but also some sense ...
Daniel Cranney, Chris Heilmann
Dev Digest 215: Agent Memory, JS2026, Googlebot Analysis & Canvas❤️HTMLInside last week’s Dev Digest 215 .
🗿 Make AI talk like a caveman
🧠 A guide to context engineering for LLMs
🤖 Simon Willison on agentic engineering
🔐 Axios supply chain attack post mortem
🛡️ Designing AI agents to resist prompt injection
🎨 HTML in c...
From learning to earning
Jobs that call for the skills explored in this talk.