How Accessibility Changed the Way I Build the Web
Okay, it's been a few months now of optimizing multiple web projects with accessibility improvements, and it has completely changed my perspective on how a digital experience is even experienced.
Have you ever experienced a webpage through a screen reader?
If you're reading this, probably not.
If you're hearing this, you'll understand just how much improving a site’s accessibility can dramatically shift your perception of the web.
What I Thought Accessibility Was (Spoiler: I Was Wrong)
When I first thought about accessibility, I imagined it meant bumping up contrast, making sure buttons were keyboard-friendly, and checking boxes on a compliance tool.
Turns out, accessibility is a bit more than that. It’s about building interfaces that are truly usable by people of all abilities. That includes users who rely on screen readers, navigate only with a keyboard, or experience color in ways many of us don't think about.
Listening to the Web (Literally)
One of the most humbling experiences? Turning on a screen reader and trying to navigate one of my own sites.
It felt like someone took a puzzle, shook the pieces in a bag, and poured them into my ears. No context. No structure. Just a mess.
That’s when I started learning about the power of semantic HTML and ARIA attributes.
Here are some tags and attributes that completely changed things:
📌 <nav>
Wrap your primary navigation in this. It lets screen readers announce, "Navigation landmark", so users know where the menus live.
<nav aria-label="Main navigation">
<ul>
<li><a href="/about">About</a></li>
<li><a href="/services">Services</a></li>
</ul>
</nav>
Why it matters: Without it, a screen reader just sees a pile of links. With it, it’s like giving them a map—and nobody wants to backpack across a site blindfolded.
📝 <label>
with for
Forms without labels are like IKEA furniture without instructions—confusing and possibly dangerous.
<label for="email">Email:</label>
<input type="email" id="email" />
Why it matters: The label ensures screen readers can say “Email Address input” instead of just “Edit text”. Super helpful when you’re not looking at the screen.
🔊 aria-live="polite"
Great for things that update dynamically, like toast messages or loading states.
<div aria-live="polite">
{#if isLoading}
<p>Loading your results...</p>
{/if}
</div>
Why it matters: It politely (not abruptly) tells assistive tech that something has changed. Think of it as the digital version of “Pardon the interruption…”.
🎯 role="button"
(when using non-semantic elements)
<div role="button" tabindex="0" onclick={handleClick}>
Click me!
</div>
Why it matters: Screen readers don’t know your <div>
is clickable unless you tell them. This gives it a proper identity.
Bonus tip: Please just use if you can. Don’t reinvent the click.
What Most People Forget
- Focus states
A lot of us love to do this:
*:focus {
outline: none;
}
Why? Because they “don’t like the blue outline.” Well, guess what—people who navigate by keyboard REALLY need that outline. It’s their version of a mouse pointer. If you're styling focus, style it better, don’t remove it.
- Heading hierarchy matters
Don’t jump from an <h1>
to an <h4>
just because it "looks better" in the design.
Assistive tech users often use headings to navigate. Skipping levels is like tearing out pages from a table of contents.
- Alt text isn't optional
If your site has images and no alt text, a screen reader will just say “image” or worse—read the file name. Yes, “IMG_28743_final_final_NEW2.png” out loud. Think of the children.
<img src="/hero.jpg" alt="Family enjoying a backyard barbecue" />
If the image is purely decorative, use:
<img src="/decorative.jpg" alt="" role="presentation" />
The Unexpected Joy of Doing It Right
Once I started treating accessibility like a core feature instead of a compliance checklist, something cool happened:
- My code got cleaner (semantic HTML forces you to think).
- My designs got more thoughtful.
- And most importantly—I was building for more people.
And hey, if my mom ever uses a screen reader, I want her to feel like the site was built just for her.
Final Thought: It can be a lot, but it’s worth it.
Accessibility can feel overwhelming at first, but it’s like learning to ride a bike. At first, you wobble and fall, but soon you’re cruising down the street with the wind in your hair. (not mine, I’m basically bald)
If you’ve never tried navigating your site without a mouse or through a screen reader, give it a shot today. It might surprise you—and it’ll definitely humble you.
Tools I Recommend
- VoiceOver (Mac)
- NVDA (Windows)
- axe DevTools (Browser Extension)
- tota11y (by Khan Academy)
- DYNOMAPPER – Visual sitemap + accessibility testing
- WAVE – Automated accessibility testing by WebAIM
- Polypane – Accessibility-focused browser for devs
Got questions? Need a starting point?
Just start small: write better alt text. Use actual buttons. Don’t skip heading levels. It all stacks up.
And remember: if the web is for everyone, then build like you mean it.