Site search is often an afterthought. Drop in a search box, wire it up to return results, and call it done. But search is critical for accessibility because it’s how many users bypass complex navigation entirely. A screen reader user on an e-commerce site isn’t going to drill through category menus. Most likely, they’ll reach for search. If your search doesn’t work well, you’ve blocked a primary navigation path.
The search input itself
The search field needs a proper label, and placeholder text doesn’t count. It disappears when users start typing, and screen readers don’t always announce it reliably. Use a visible label (preferable) or aria-label if visual design requires hiding it.
The search button also needs clear text or an aria-label if it’s icon-only. “Search” is better than a magnifying glass alone.
Announcing results
When search results load, screen reader users need to know. Use an ARIA live region to announce how many results were found.
<form role="search">
<label for="search-input">Search</label>
<input type="search" id="search-input" name="q">
<button type="submit">Search</button>
</form>
<div aria-live="polite" aria-atomic="true" class="sr-only">
Showing 47 results for running shoes
</div>
<div id="search-results">
<!-- Results content here -->
</div>The live region announces the result count. If there are no results, announce that too: “No results found for running shoes.”
Search results need structure
Present results with clear headings. Each result should be a distinct unit. Consider using a list structure so screen readers announce “3 of 47 results.”
Include enough context in each result. Product name alone isn’t enough – include category, price, or availability if relevant.
—
Site search isn’t just a text box and a submit button. It’s a complete interaction that needs proper labels, result announcements, helpful error states, and structured results. When search works well, it becomes the primary navigation method for many users.
Don’t Miss Out
Get practical accessibility tips in your inbox every week.