How screen readers “see” your site

What users actually hear: headings, landmarks, alt text, and a fast checklist with NVDA/VoiceOver so your pages make sense by ear.

a11yaccessibilityscreen-readerssemanticshtml

Many people listen to the web. Screen readers speak what they find in your HTML — headings, paragraphs, buttons, links, and section roles. If structure is missing, users hear: “button… button… unlabeled link…” and get lost.

Why it matters

Semantics is the difference between noise and a clear route:
“Heading level 1: About → Navigation → Main → Contact link…”

What a screen reader “sees”

Readers follow the document structure, not colors or font sizes:

  • H1: “About us”
  • Paragraph: “We build websites without pain”
  • Link: “Contact”
  • Button: “Send request”

So visual intent must be explicit in HTML.

Markup essentials

1) Ordered headings

  • One H1 per page, then H2/H3 as needed.
  • Don’t fake hierarchy with CSS alone — use proper tags.
<main>
  <h1>About us</h1>
  <h2>Team</h2>
  <h3>Design</h3>
</main>
2) Landmarks
Use standard regions so readers expose quick navigation:

html
Copy code
<header>…</header>
<nav aria-label="Primary navigation">…</nav>
<main id="content">…</main>
<aside aria-label="Sidebar">…</aside>
<footer>…</footer>
3) Alt text
Meaningful images: short, purpose-driven alt.

Decorative images: empty alt="" (so they’re skipped).

html
Copy code
<img src="/images/flow.png" alt="Booking flow: request → confirmation → payment">
<img src="/images/ornament.svg" alt="">
4) Link/button names
Text should state what happens:

html
Copy code
<a href="/contact">Contact us</a>
<button type="submit">Send request</button>
Quick ways to check
🧩 Headings: single H1; H2/H3 in order.

📦 Landmarks: have <main>, <nav>, <header>, <footer>.

🖼️ Alt: meaningful images have alt; decor uses alt="".

⌨️ Keyboard: Tab order is logical; focus visible.

🗣️ Reader test: NVDA (Windows), VoiceOver (macOS/iPhone). Walk the page by arrows/Tab.

👓 Accessibility Tree: Chrome DevTools → Accessibility tab.

60-second checklist
 Exactly one H1

 Headings reflect meaning, not CSS size

 Navigation in <nav>, content in <main>

 All important images have alt

 Keyboard focus is visible and logical

 Tried with NVDA or VoiceOver

Bottom line
Accessibility isn’t extra — it’s basic care. A site that’s readable by ear works better for people, search engines, and future you. 💙