Semantic HTML Elements
Semantic HTML is about giving meaning to your markup. Instead of just using generic <div>
and <span>
tags everywhere, you can use semantic tags that describe the purpose of content.
This helps:
- 🧩 Structure your page logically
- 🔍 Improve SEO
- ♿ Make it accessible to screen readers
🗂️ What Are Semantic Elements?
A semantic element clearly describes its meaning both to the browser and to the developer.
✅ Examples of Semantic Elements:
Tag | Meaning / Usage |
---|---|
<header> | Page or section header |
<footer> | Page or section footer |
<main> | Main content of the document (unique) |
<section> | Thematic grouping of content |
<article> | Independent, self-contained content |
<aside> | Side content, like ads or sidebars |
<nav> | Navigation links |
<figure> | Image, diagram, or chart with caption |
<figcaption> | Caption for the <figure> |
<mark> | Highlighted or marked text |
<time> | Machine-readable dates or times |
🧪 Simple Example
<body>
<header>
<h1>My Blog</h1>
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
</nav>
</header>
<main>
<article>
<h2>How to Learn HTML</h2>
<p>This article will help you...</p>
</article>
<aside>
<h3>Related Posts</h3>
<ul>
<li><a href="#">CSS Basics</a></li>
<li><a href="#">JavaScript Intro</a></li>
</ul>
</aside>
</main>
<footer>
<p>© 2025 W3Buddy. All rights reserved.</p>
</footer>
</body>
🎯 Best Practices
- Use only one
<main>
per page. - Use
<article>
for blog posts, news articles, comments, etc. - Use
<section>
to divide content logically within a page or article. - Don’t misuse
<section>
or<article>
when a<div>
would suffice. They should add meaning, not just structure.
🧠 When to Use Which?
Use Case | Tag to Use |
---|---|
Website or blog header | <header> |
Main content area (only once) | <main> |
Blog post or product card | <article> |
Sub-topic or feature section | <section> |
Sidebar with extras/ads | <aside> |
Navigation bar | <nav> |
Website footer | <footer> |
👀 Why Semantic HTML Matters
1. SEO Friendly
Search engines understand what’s important (e.g., content inside <main>
or <article>
). Helps with ranking.
2. Accessibility
Screen readers can help users jump directly to meaningful parts (like “main content” or “navigation”).
3. Cleaner Code
Much easier to read and maintain than a soup of <div class="header">
, <div class="main">
, etc.
🧪 Bonus: Combining with ARIA (Advanced)
For advanced accessibility, you can also add ARIA roles:
<main role="main">
<section aria-labelledby="contact-title">
<h2 id="contact-title">Contact Us</h2>
...
</section>
</main>
But in most cases, semantic HTML already implies the role, so you don’t need to add it.
✅ Summary
Semantic tags bring meaning, not just structure. Use them instead of random <div>
s to:
- Enhance accessibility
- Improve SEO
- Write cleaner, future-proof HTML
📘 Next Topic: HTML Meta Tags and SEO Basics