Semantic HTML: The Superpower Your Components Are Missing by Hasti Sutaria on June 6, 2025 25 views

🚇 It All Started on a Metro Ride…
A few weeks ago, I was taking the metro back home — headphones in, scrolling through random stuff on my phone — when I stumbled upon this absolutely stunning website.
The UI was breathtaking: buttery smooth transitions, bold typography, glassmorphism done right, and a color palette that deserved an award. As a frontend developer, I couldn’t help but admire the craftsmanship.
“This is gold,” I thought.
“I’ll check out their layout and maybe borrow some inspiration later.”
I didn’t save the link. Rookie mistake, I know — but hey, it’s 2025. How hard could it be to find a site again?
Turns out… very.
🔍 The 2-Day Search Saga
Later that night, I tried Googling what I remembered:
- The brand name
- A product description
- A few obvious keywords
Nothing.
Not on page 1. Not on page 10.
Even incognito, using different search engines — still nothing.
This went on for two days — every time I had a few spare minutes, I tried again.
“How can something so beautifully designed be this invisible online?”
That question led me down a rabbit hole, and what I discovered was a reminder that great visuals without great HTML is like a Ferrari with no engine.
🤯 The Realization: They Were Invisible to Search Engines
Once I finally found the site (by digging through my browser history), I took a look under the hood.
The culprit?
A complete absence of semantic HTML.
Their homepage was a soup of <div class="title">
, <span class="text">
, and other anonymous containers. There was:
- No
<main>
, so search engines didn’t know what the central content was. - No
<h1>
, so the page had no clear title. - No
<article>
,<section>
, or<nav>
, so the structure was invisible to crawlers. - No
aria-label
s, so accessibility tools were as lost as I was.
Visually? Beautiful.
Structurally? A haunted house. 👻
🎯 What Even Is Semantic HTML?
Semantic HTML uses elements that describe their purpose. Instead of a generic <div>
, you use:
<header>
for site headers<nav>
for navigation<main>
for main content<section>
for logical sections<article>
for standalone content pieces<aside>
for related content<footer>
for page footers- And proper heading levels:
<h1>
to<h6>
These aren’t just for style. They help search engines to rank, screen readers to interpret, and even developers to maintain your page’s structure.

📈 Real Impact: Semantic = Searchable = Successful
Back to that metro website: what happens when you build for screens, not for systems?
Here’s what they were missing out on:
- Search visibility: Search engines couldn’t parse or rank their pages properly.
- Link sharing: Their page titles were missing, so previews on Slack and social media were blank.
- Accessibility: Visually impaired users couldn’t use screen readers to understand their product.
- Maintainability: Even for devs, the code was hard to navigate or reuse.
And all of that for what? A prettier UI?
If they had just used a proper <h1>
and a few <section>
, I probably would’ve found them on day one.
🛠️ A Simple Semantic Upgrade (Before & After)
❌ Before:
<div class="title">About Us</div>
<div class="content">We build fast, modern websites.</div>
✅ After:
<section>
<h1 class="title">About Us</h1>
<p class="content">We build fast, modern websites.</p>
</section>
✅ Looks the same.
✅ Loads the same.
✅ Now discoverable, indexable, and accessible.
💨 Why It Matters (More Than You Think)
1. Accessibility:
Screen readers rely on semantic tags to help users navigate your app. Without them, it’s like giving someone a map with no labels.
2. SEO:
Search engines aren’t impressed by pretty UIs — they parse tags. If your site is one big div
, engine shrugs and walks away.
3. Developer Experience:
Semantic markup makes your code easier to understand at a glance. Less guesswork, more flow.
4. Future-Proofing:
Browsers evolve, specs change. But semantic HTML? It’s the OG. Still going strong — even after a decade.
🧩 How Search Engines and Browsers Use Semantic HTML
Semantic HTML isn’t just “nice to have” — it’s actively used by browsers, crawlers, and accessibility tools to understand and interpret your content. Here’s how:
🔍 Search Engines:
- Content Prioritization: Tags like
<main>
,<article>
, and<h1>
signal what your page is about. Search engines weigh these elements more heavily when determining relevance. - Indexing Efficiency: Proper semantic structure allows crawlers to efficiently scan and categorize your content — instead of parsing a sea of
<div>
s with no meaning. - Rich Snippets & Previews: Search engines use headings, meta info, and semantic context to generate better preview snippets (titles, descriptions) on Google, Bing, etc.
- Ranking Signals: Pages that are accessible, well-structured, and easy to interpret generally get better SEO scores — especially as Google’s algorithms evolve to prioritize user experience.
🧭 Browsers:
- Default Styling & Behavior: Browsers apply default styles to semantic tags — like margins for
<h1>
or<section>
— which help layout and readability out of the box. - Landmark Navigation: Semantic tags define regions of the page. This helps browser extensions, keyboard navigation, and dev tools offer better UX and debugging experiences.
♿ Accessibility Tools (like screen readers):
- Landmarks & Roles: Tags like
<nav>
,<header>
, and<footer>
help screen readers let users jump directly to those parts of the page. - Contextual Understanding: When screen readers encounter
<article>
, they know it’s standalone content. When they find<aside>
, they announce it as “complementary content.” - Headings Hierarchy: Tags like
<h1>
to<h6>
help build a mental model for users — allowing them to skip to relevant sections easily, just like scanning headlines in a newspaper.
⭐ Real Talk: Why Don’t We Use It?
- “I’m using a component library.” Cool. But are you wrapping those components in semantic containers? Remember “Component Libraries Talk Pretty — Semantic HTML Talks Smart”
- “It doesn’t affect how it looks.” Right — but it does affect how it’s understood. And that’s what matters under the hood.
- “Divs are just easier.” So is skipping tests. Doesn’t make it a good decision. “Less
<div>
s, More Meaning. Your HTML deserves better.”
👊 Quick Fixes That Pack a Semantic Punch

Also:
- Use
<label>
for form inputs. - Use
<article>
for blog posts or user-generated content. - Use
<aside>
for sidebars or extra info. - Use
<h1>
to<h6>
correctly — don’t style<div>
s to look like headings.
Pro Tip: Semantic Wrappers + React = ❤️
You can keep your component architecture and go semantic:
const NavItem = ({ href, label }) => (
<li><a href={href}>{label}</a></li>
);
const Header = () => (
<header>
<nav>
<ul>
<NavItem href="/" label="Home" />
<NavItem href="/about" label="About" />
</ul>
</nav>
</header>
);
You’re still modular. Still styled. But now? You’re meaningful too.
🔍 Fun SEO Test: Search Your Own Site
Next time you build a component-heavy app, try this:
- Visit your homepage.
- Open DevTools.
- Run a Lighthouse audit → Check “SEO” and “Accessibility.”
- If you’re getting flagged for missing
<h1>
, no landmarks, or unlabelled buttons, you know what to do.
🧠 Final Thoughts: Style Catches the Eye. Semantics Build Trust.
In a world full of fancy UIs and pixel-perfect CSS, semantic HTML is the superpower most components are missing.
It makes your app:
- Searchable 🔍
- Accessible ♿
- Scalable 📈
- Maintainable 🧹
And if you care about being found by users, search engines, or screen readers, then you have to care about the structure beneath the style.
💬 One Rule I Now Live By:
“If I can’t find your site online, you didn’t build a website. You built a slideshow.”
Start writing semantic HTML — and let your components do more than just look pretty.