Exploring the new search element in HTML
by Roland
Introduction
HTML keeps moving toward better semantics. Small additions, but meaningful ones.
The <search> element is one of those additions. It doesn’t change how things look or behave, but it does make intent clearer — for browsers, assistive tech, and anyone reading your code.
So instead of asking “what does this do?”, you can start asking “does this describe what I mean?”.
What <search> actually does
<search> is a semantic container for search-related UI.
That’s it.
It behaves like a <div>, but with meaning attached. It tells user agents: this section is for search.
That meaning is what makes it useful.
Why <search> is worth using
It makes intent explicit You no longer rely on structure alone to imply meaning. The element itself communicates purpose.
It improves accessibility by default
Assistive technologies can recognize a search region without needing extra roles like role="search".
It makes code easier to scan Search areas stand out immediately in the markup, instead of being buried in generic containers.
How to use <search>
Use it as a wrapper around a search form:
<search>
<form action="/search" method="get">
<input type="search" name="q" placeholder="Search..." aria-label="Search">
<button type="submit">🔍</button>
</form>
</search>
It doesn’t replace <form>.
It complements it.
Think of it as adding meaning, not changing behavior.
Browser Support
Support is already solid in modern browsers like Chrome, Edge, and Safari.
Older browsers will simply treat <search> as a generic block element. No breakage, no visual impact.
That makes it safe to use today.
<search>
Baseline 2023 newly available
Supported in Chrome: yes.
Supported in Edge: yes.
Supported in Firefox: yes.
Supported in Safari: yes.
Since October 2023 this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
When to use <search>
Use it when the intent is clearly search:
- Site-wide search (header or navigation)
- Filtering or searching within an app
- Searching within a specific section (like docs or tables)
If it’s not search, don’t use it.
When not to use it
<search> is not a replacement for <form>.
It doesn’t submit data. It doesn’t handle input.
It only describes the purpose of what’s inside it.
Closing thoughts
<search> is a small addition, but that’s the point.
Better semantics rarely come from big features. They come from small, deliberate improvements like this.
You don’t need to change how you build forms. You just describe them more accurately.
And over time, that clarity adds up in accessibility, in maintainability, and in how we understand the web itself.