Landmark
HTML5
The <aside> element represents content that is tangentially related to the main content but could be separated from it. Common uses include sidebars, pull quotes, advertising, groups of navigation elements, and other content that is complementary to the main content but not essential to understanding it.
Interactive code playground requires JavaScript. Here's the code:
<main>
<article>
<h1>Introduction to CSS Grid</h1>
<p>CSS Grid is a powerful layout system that allows you to create complex, responsive layouts with ease...</p>
<aside style="float: right; width: 200px; margin-left: 1rem; padding: 1rem; background: #f0f0f0; border-left: 4px solid #667eea;">
<h2>Quick Tip</h2>
<p>Use Firefox DevTools Grid Inspector to visualize your grid layouts!</p>
</aside>
<p>Unlike Flexbox, which is one-dimensional, Grid works in two dimensions...</p>
</article>
</main>
<!-- Tangentially related content -->
The <aside> element has no element-specific attributes.
This element supports all global attributes .
A sidebar containing related articles or navigation:
Interactive code playground requires JavaScript. Here's the code:
<div style="display: grid; grid-template-columns: 1fr 250px; gap: 2rem;">
<main>
<article>
<h1>Understanding JavaScript Promises</h1>
<p>Promises are a fundamental concept in modern JavaScript for handling asynchronous operations...</p>
<p>A promise represents a value that may be available now, in the future, or never...</p>
</article>
</main>
<aside style="background: #f9f9f9; padding: 1.5rem; border-radius: 8px;">
<h2>Related Articles</h2>
<nav>
<ul style="list-style: none; padding: 0;">
<li style="margin-bottom: 0.5rem;">
<a href="/async-await">Async/Await Explained</a>
</li>
<li style="margin-bottom: 0.5rem;">
<a href="/callbacks">Understanding Callbacks</a>
</li>
<li style="margin-bottom: 0.5rem;">
<a href="/fetch-api">Using the Fetch API</a>
</li>
</ul>
</nav>
</aside>
</div>
A highlighted quote from the article:
Interactive code playground requires JavaScript. Here's the code:
<article>
<h1>The Future of Web Development</h1>
<p>Web development has evolved dramatically over the past decade. New frameworks, tools, and best practices emerge constantly.</p>
<aside style="margin: 2rem 0; padding: 1.5rem; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; font-size: 1.2rem; font-style: italic; border-radius: 8px; text-align: center;">
<p style="margin: 0;">"The best time to learn web development was 10 years ago. The second best time is now."</p>
</aside>
<p>Whether you're just starting or looking to upgrade your skills, there's never been a better time to dive into web development.</p>
</article>
Author information alongside an article:
Interactive code playground requires JavaScript. Here's the code:
<article>
<header>
<h1>10 Tips for Better Code Reviews</h1>
<p>Published: March 15, 2025</p>
</header>
<p>Code reviews are an essential part of the development process. Here are ten tips to make your code reviews more effective...</p>
<aside style="border: 2px solid #ddd; padding: 1.5rem; margin: 2rem 0; border-radius: 8px; background: #fafafa;">
<h2 style="margin-top: 0;">About the Author</h2>
<div style="display: flex; gap: 1rem; align-items: center;">
<img src="author.jpg" alt="Jane Developer" style="width: 80px; height: 80px; border-radius: 50%;">
<div>
<p style="margin: 0;"><strong>Jane Developer</strong></p>
<p style="margin: 0.5rem 0 0 0; color: #666;">Senior Software Engineer with 10+ years of experience in web development and team leadership.</p>
<p style="margin: 0.5rem 0 0 0;">
<a href="https://twitter.com/janeddev">Twitter</a> |
<a href="https://github.com/janeddev">GitHub</a>
</p>
</div>
</div>
</aside>
<p>Continuing with our tips...</p>
</article>
A table of contents for a long article:
Interactive code playground requires JavaScript. Here's the code:
<article>
<header>
<h1>Complete Guide to React Hooks</h1>
</header>
<aside style="background: #f0f7ff; border: 1px solid #b3d9ff; padding: 1.5rem; margin-bottom: 2rem; border-radius: 4px;">
<h2 style="margin-top: 0;">Table of Contents</h2>
<nav>
<ol style="padding-left: 1.5rem;">
<li><a href="#introduction">Introduction</a></li>
<li><a href="#usestate">useState Hook</a></li>
<li><a href="#useeffect">useEffect Hook</a></li>
<li><a href="#usecontext">useContext Hook</a></li>
<li><a href="#custom-hooks">Creating Custom Hooks</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ol>
</nav>
</aside>
<section id="introduction">
<h2>Introduction</h2>
<p>React Hooks revolutionized how we write React components...</p>
</section>
</article>
Definitions of terms used in the main content:
Interactive code playground requires JavaScript. Here's the code:
<article>
<h1>Understanding Blockchain Technology</h1>
<p>Blockchain is a distributed ledger technology that uses cryptographic hashing to create an immutable record of transactions...</p>
<aside style="background: #fffbea; border-left: 4px solid #f39c12; padding: 1rem; margin: 1.5rem 0;">
<h2 style="margin-top: 0; font-size: 1rem;">Key Terms</h2>
<dl style="margin: 0;">
<dt style="font-weight: bold;">Distributed Ledger</dt>
<dd style="margin-bottom: 0.5rem;">A database that is shared across multiple sites or institutions</dd>
<dt style="font-weight: bold;">Cryptographic Hashing</dt>
<dd style="margin-bottom: 0.5rem;">A process that converts data into a fixed-size string of characters</dd>
<dt style="font-weight: bold;">Immutable</dt>
<dd>Unable to be changed or modified</dd>
</dl>
</aside>
<p>The decentralized nature of blockchain makes it particularly useful for...</p>
</article>
Advertisement or promotional content:
Interactive code playground requires JavaScript. Here's the code:
<div style="display: grid; grid-template-columns: 1fr 300px; gap: 2rem;">
<main>
<article>
<h1>Latest Tech News</h1>
<p>Stay up to date with the latest developments in technology...</p>
</article>
</main>
<aside aria-label="Advertisements">
<div style="background: #f0f0f0; padding: 1rem; text-align: center; margin-bottom: 1rem; border: 1px solid #ddd;">
<p style="font-size: 0.75rem; color: #666; margin: 0 0 0.5rem 0;">Advertisement</p>
<div style="background: #ddd; height: 250px; display: flex; align-items: center; justify-content: center;">
<p>Ad Space 300x250</p>
</div>
</div>
<div style="background: #f0f0f0; padding: 1rem; text-align: center; border: 1px solid #ddd;">
<p style="font-size: 0.75rem; color: #666; margin: 0 0 0.5rem 0;">Sponsored</p>
<div style="background: #ddd; height: 600px; display: flex; align-items: center; justify-content: center;">
<p>Ad Space 300x600</p>
</div>
</div>
</aside>
</div>
A promotional call-to-action related to the content:
Interactive code playground requires JavaScript. Here's the code:
<article>
<h1>Getting Started with Python</h1>
<p>Python is one of the most popular programming languages for beginners and professionals alike...</p>
<aside style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2rem; margin: 2rem 0; border-radius: 12px; text-align: center;">
<h2 style="margin-top: 0;">Ready to Level Up?</h2>
<p>Join our comprehensive Python course and become a professional developer in 12 weeks.</p>
<button style="background: white; color: #667eea; border: none; padding: 1rem 2rem; font-size: 1rem; border-radius: 4px; cursor: pointer; font-weight: bold;">
Start Learning Today
</button>
<p style="font-size: 0.9rem; margin: 1rem 0 0 0; opacity: 0.9;">30-day money-back guarantee</p>
</aside>
<p>Let's explore the basic syntax of Python...</p>
</article>
Social media feeds or related widgets:
Interactive code playground requires JavaScript. Here's the code:
<div style="display: grid; grid-template-columns: 2fr 1fr; gap: 2rem;">
<main>
<article>
<h1>Company Blog Post</h1>
<p>We're excited to announce our latest product updates...</p>
</article>
</main>
<aside>
<section style="background: #f9f9f9; padding: 1.5rem; margin-bottom: 1.5rem; border-radius: 8px;">
<h2 style="font-size: 1.2rem; margin-top: 0;">Follow Us</h2>
<div>
<a href="#" style="display: block; margin-bottom: 0.5rem;">📘 Facebook</a>
<a href="#" style="display: block; margin-bottom: 0.5rem;">🐦 Twitter</a>
<a href="#" style="display: block; margin-bottom: 0.5rem;">📷 Instagram</a>
<a href="#" style="display: block;">💼 LinkedIn</a>
</div>
</section>
<section style="background: #f9f9f9; padding: 1.5rem; border-radius: 8px;">
<h2 style="font-size: 1.2rem; margin-top: 0;">Newsletter</h2>
<p style="font-size: 0.9rem;">Get weekly updates delivered to your inbox.</p>
<form>
<input type="email" placeholder="Your email" style="width: 100%; padding: 0.5rem; margin-bottom: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
<button style="width: 100%; padding: 0.5rem; background: #667eea; color: white; border: none; border-radius: 4px; cursor: pointer;">Subscribe</button>
</form>
</section>
</aside>
</div>
The meaning of <aside> depends on its context:
<!-- Outside main/article: site-wide sidebar (complementary landmark) -->
< p > Site-wide related content... </ p >
<!-- Inside article: tangentially related to the article -->
< p > Additional information specific to this article... </ p >
<!-- Multiple asides are allowed -->
< aside > <!-- Pull quote --> </ aside >
< aside > <!-- Author bio --> </ aside >
< aside > <!-- Related links --> </ aside >
Use <aside> only for content that is supplementary, not essential:
<!-- Good: Supplementary information -->
< h1 > How to Bake Bread </ h1 >
< p > Follow these steps to bake perfect bread... </ p >
< p > Use a kitchen scale for more accurate measurements. </ p >
<!-- Wrong: Essential content in aside -->
< h1 > How to Bake Bread </ h1 >
<!-- Ingredients are essential, not tangential -->
Give asides descriptive headings:
<!-- Good: Descriptive heading -->
< h2 > Related Articles </ h2 >
<!-- Less clear: No heading -->
When you have multiple asides, label them:
< aside aria-label = " Quick reference " >
< aside aria-label = " Additional resources " >
Not every sidebar needs to be an <aside>:
<!-- Avoid: Generic navigation that isn't tangentially related -->
< nav aria-label = " Primary " >
< a href = " /about " > About </ a >
<!-- Better: Use nav directly -->
< nav aria-label = " Primary " >
< a href = " /about " > About </ a >
<!-- Good: Related navigation -->
< nav aria-label = " Related tutorials " >
< a href = " /js " > JavaScript </ a >
An <aside> at the page level creates a complementary landmark:
<!-- Creates a complementary landmark -->
< main > Main content </ main >
Screen readers can navigate to complementary landmarks using shortcuts.
An <aside> inside <article>, <section>, <nav>, or <main> is NOT a landmark:
<!-- This aside is NOT a landmark -->
When you have multiple asides, provide unique labels:
< aside aria-label = " Related articles " >
< h2 > You Might Also Like </ h2 >
< aside aria-label = " Author information " >
< h2 > About the Author </ h2 >
Browser Version Chrome 5+ Firefox 4+ Safari 5+ Edge All versions IE 9+
<!-- Wrong: Main navigation in aside -->
< nav aria-label = " Primary " >
< a href = " /about " > About </ a >
<!-- Correct: Primary navigation without aside -->
< nav aria-label = " Primary " >
< a href = " /about " > About </ a >
<!-- Wrong: Essential recipe steps in aside -->
< h1 > Chocolate Cake Recipe </ h1 >
<!-- Correct: Essential content in main flow -->
< h1 > Chocolate Cake Recipe </ h1 >
< p > For extra moisture, add a tablespoon of coffee. </ p >
<!-- Wrong: Aside just for layout -->
<!-- Correct: Div for non-semantic layout -->