Semantic HTML for SEO: Using Main, Article, Nav and Aside Correctly

Semantic HTML for SEO Semantic HTML for SEO

Two Elementor pages can look identical while exposing different structures to browsers. One may be a stack of generic div containers. The other may identify its site navigation, primary content, article and supporting information with native HTML elements.

Semantic HTML gives an element meaning beyond its visual shape. It tells software what a region does, not how wide it is or which colour it uses. That meaning can support accessibility, make templates easier to maintain and give search systems cleaner page structure. It does not create an automatic ranking increase.

This guide maps the main structural elements to their actual jobs, shows valid nesting, explains when a div is the correct choice and provides an Elementor workflow for checking the rendered DOM. It extends the HTML section of our Mastering On-Page SEO Elements guide.

What semantic HTML means on a working page

HTML elements fall into two practical groups for this task:

  • A semantic element communicates a role or content relationship. Examples include main, article, nav, aside, header, footer and section.

  • A generic element such as div groups content without assigning that kind of meaning.

The distinction is not “good tag versus bad tag.” A div is correct for layout, styling or scripting without a structural role. Problems arise when every container becomes section, minor links become nav, or several visible main elements appear.

Google’s SEO guide for web developers recommends semantic HTML where possible and says text intended for indexing should be accessible in the DOM. Its broader Starter Guide also warns that the web contains large amounts of invalid HTML, so Google Search cannot depend on every semantic distinction in the HTML specification. The balanced reading is clear: use accurate elements because they improve the document, not because each tag carries a fixed ranking value.

A landmark map for a WordPress article

Several native HTML elements create accessibility landmarks when used in the right context. Landmarks allow assistive-technology users to move between major page regions without reading everything in sequence.

Page regionSuitable elementMain purposeRepeat on one page?
Site headerheaderSite identity and introductory or navigational aidsYes in nested content, but one top-level banner is the usual page pattern
Primary navigationnavA major block of links for site or page navigationYes; label repeated navigation regions
Dominant page contentmainContent unique to the current pageOnly one visible main in a standard document
Self-contained postarticleA composition that can stand or be reused independentlyYes
Thematic subsectionsectionA named grouping within a document or articleYes
Supporting contentasideTangential content that remains meaningful separatelyYes; distinguish multiple regions where needed
Article or site footerfooterAuthorship, related links, copyright or closing informationYes; its scope depends on its nearest sectioning ancestor

The W3C ARIA Authoring Practices Guide advises giving repeated landmarks unique labels. Two nav elements can represent “Primary” and “Article.” Concise labels avoid repeating a landmark type already announced by a screen reader.

 

AISEOjournal.net

Interactive visual guide

Semantic HTML for SEO

See how main, article, nav and aside describe a page—and when a plain div is correct.

100%
Semantic HTML structure for a WordPress article page A page anatomy diagram shows a top-level header, primary navigation, one main region containing an article and thematic section, a complementary aside, and a site footer. Selecting a tag highlights its appropriate region. PAGE JOB → NATIVE ELEMENT → ACCESSIBLE STRUCTURE Use meaning for structure; use CSS for appearance <header> Site identity and introductory aids · top-level use creates the banner landmark <nav> Major navigation links Home SEO guides Tools About Repeat when needed Label each landmark <main> The dominant content · one visible main in a normal page <article> self-contained post <section> A named thematic group Commonly introduced by a descriptive heading <div class="card-grid"> Neutral wrapper for layout, styling or scripts—no invented meaning <aside> Complementary content Related guides Author profile Separate, yet related Not required article content <footer> Copyright, policies and site-level closing information Scope follows the nearest sectioning ancestor Does the container express a real page role? YES Choose the matching tag NO Keep a neutral <div>

Select a tag · drag to pan · pinch or wheel to zoom · double-click to fit

✓ Correct relationship<main><article><section>…</section></article></main>
× Faulty relationship<main>…<main>duplicate dominant region</main>…</main>

Sources: Google Search Central · WHATWG HTML Standard · W3C WAI Landmark Regions · Elementor container documentation.


Use main for the page’s dominant content

The main element represents the document’s dominant content. On a blog post, it normally wraps the article area while excluding the global header, navigation, sidebar and site footer.

The WHATWG HTML Standard permits only one main without the hidden attribute in a document. This restriction matters in Elementor templates. A theme may already output main, while a page builder container is also changed to main, producing nested or competing regions.

<body>
  <header>Site header</header>
  <nav aria-label="Primary">Site links</nav>

  <main>
    <article>Current blog post</article>
  </main>

  <footer>Site footer</footer>
</body>

Before assigning main in Elementor, inspect the page source or rendered Elements panel. If the theme already wraps the content in main, keep the inner Elementor container as div or choose a more specific element based on its job.

Use article for self-contained content

An article represents a complete composition that can stand independently or be reused, such as a blog post, news story, forum entry, review or comment. The test is conceptual: would this content still make sense if it appeared in a feed, archive or another context?

A Single Post template can place the title, byline, body and article footer inside article. A related-post card can also qualify if it presents a self-contained entry. A decorative hero does not.

Articles can be nested. Comments are a common example:

<article class="post">
  <header>Post title and byline</header>
  <p>Post content...</p>

  <section aria-labelledby="comments-title">
    <h2 id="comments-title">Comments</h2>
    <article class="comment">First reader comment...</article>
    <article class="comment">Second reader comment...</article>
  </section>

  <footer>Article update and related links</footer>
</article>

The outer footer belongs to the post because its nearest sectioning ancestor is the outer article. It is not the site-wide footer.

Use nav for major navigation blocks

The nav element identifies a section containing navigation links to other pages or locations within the current page. It suits the primary menu, breadcrumb navigation, pagination and a substantial table of contents.

Not every group of links needs nav. WHATWG states that nav is primarily intended for major navigation blocks. A short terms-and-privacy list in the footer can remain inside footer without an extra nav wrapper.

Pages can contain several navigation landmarks. Give each a distinct accessible label:

<nav aria-label="Primary">
  <!-- main site menu -->
</nav>

<nav aria-label="Article">
  <!-- table of contents links -->
</nav>

Avoid identical unlabeled navigation landmarks. A screen-reader landmark list containing three entries called “Navigation” gives the user no clue which one opens the site menu, article contents or pagination.

Use aside for related but separate material

The aside element contains material tangentially related to its surrounding content. Examples include an author biography, a related-resource panel, a glossary note, advertising or a sidebar that remains understandable when separated from the article.

An aside is not a universal two-column tag. If the right-hand column contains a core step in the article, separating it as complementary content misrepresents its importance. Keep essential information within the article flow, regardless of its visual position.

An aside inside an article supports that article. A top-level aside next to main can represent a site-level complementary region. Label repeated asides as “Author”, “Related guides” or “Sponsored”.

Header and footer follow their nearest context

header is not limited to the top of the website. It represents introductory or navigational material for the page or for the section containing it. An article header can contain its title, author and publication date. A section header can introduce one chapter of a long guide.

Likewise, footer belongs to its nearest sectioning ancestor. A footer inside article can contain article-level information, while a footer directly under body applies to the page.

At the top level, header and footer commonly expose banner and content-information landmarks. W3C notes that nested versions do not create those same top-level landmarks.

Section is not a replacement for every div

section represents a thematic grouping, commonly with a heading. Chapters, tab panels and major parts of a guide can qualify. WHATWG explicitly says section is not a generic container and recommends div when an element exists only for styling or scripting.

Use this decision test:

  1. Does the group have a distinct topic or purpose?

  2. Would that group reasonably appear in the document outline?

  3. Can a descriptive heading or accessible label identify it?

If the answers are no, keep a div. Grid wrappers, background layers, spacing containers, icon groups and responsive alignment wrappers rarely need sectioning semantics.

This is correct:

<section aria-labelledby="formats-title">
  <h2 id="formats-title">Image formats</h2>
  <div class="card-grid">
    <article>WebP guide...</article>
    <article>AVIF guide...</article>
  </div>
</section>

The section names a topic, the div controls the grid and each card is independently meaningful.

A faulty semantic structure and its repair

The following markup uses semantic-looking elements but assigns them by visual position:

<main class="site-shell">
  <header class="hero">Sale banner</header>
  <main class="post-content">Article...</main>
  <nav class="social-icons">Share links</nav>
  <section class="spacer"></section>
  <aside class="checkout-step">Required payment details...</aside>
</main>

Problems include two visible main elements, a promotional hero treated as the page header, a minor share-link group promoted to major navigation, an empty section, and essential checkout information marked as tangential.

A repaired version might use one outer main, a div for the banner and spacer, a labelled share group without a navigation landmark, and a normal section for the required checkout step. Semantic quality comes from accurate relationships, not the number of specialised tags.

Set semantic tags in Elementor without guessing

Elementor containers use div by default in many layouts, and that is safe for purely visual wrappers. Elementor’s container layout documentation provides an HTML Tag dropdown for choosing a suitable element. Older section and column interfaces expose a similar control under Layout, as shown in Elementor’s HTML tag instructions.

Use this implementation sequence:

  1. Open the template responsible for the page region, not only the post body.

  2. Identify the container’s job in plain language: dominant content, independent article, major navigation, complementary content, thematic section or visual wrapper.

  3. Check whether the WordPress theme or parent template already supplies that element.

  4. Choose the HTML Tag value that matches the role; retain div for layout-only containers.

  5. Add a concise accessible label when multiple landmarks share the same type.

  6. Update the template and inspect several affected pages.

Do not infer semantics from an Elementor template name. A container named “Main Content” can sit inside a theme-generated main; inspect the output.

Verify the rendered DOM and accessibility landmarks

Open the published page in a private browser window and use developer tools:

  1. Right-click the content area and select Inspect.

  2. Search the Elements panel for <main, <article, <nav, <aside, <header, <footer and <section.

  3. Confirm that one visible main contains the dominant page content.

  4. Trace each element’s ancestors to learn whether a header, footer or aside is page-level or article-level.

  5. Check the accessibility tree or landmarks panel for names and duplicate regions.

  6. Inspect desktop and mobile layouts because responsive duplicates may remain in the DOM.

The browser console can produce a compact list:

[...document.querySelectorAll('main,article,nav,aside,header,footer,section')]
  .map((el) => ({
    tag: el.tagName.toLowerCase(),
    label: el.getAttribute('aria-label') || '',
    hidden: el.hidden || el.offsetParent === null
  }));

This output finds native elements, but it does not judge whether the assigned meaning is correct. Read the content and test the landmark list with an accessibility inspector.

Semantic HTML checks for Elementor templates

  • Keep one visible, hierarchically correct main.

  • Use article for self-contained posts, comments or cards, not ordinary layout blocks.

  • Reserve nav for major navigation and label multiple navigation regions.

  • Use aside only when the content is complementary or tangential.

  • Apply header and footer according to their nearest content context.

  • Use section for thematic groups that deserve a place in the document structure.

  • Keep div for styling, grids, spacing and script hooks without semantic roles.

  • Inspect the rendered DOM rather than trusting editor labels.

  • Check global templates and reusable components before making page-level repairs.

  • Retest representative URLs after changing a Theme Builder template.

Questions about semantic HTML SEO

Does semantic HTML directly improve Google rankings?

Google recommends semantic HTML where possible, but no reliable evidence supports a fixed ranking boost for changing a div to section or article. Accurate markup can help systems interpret the page and improves accessibility and maintenance. Use it as structural quality, not a ranking guarantee.

What is the difference between main and article?

main identifies the dominant content of the entire document, with one visible instance in a standard page. article identifies a self-contained composition and can repeat or nest. A blog page can therefore contain one main holding one or more articles.

Can a page contain more than one nav or aside?

Yes. A page can have several navigation or complementary regions when each has a valid purpose. Give repeated landmarks distinct labels so users can tell them apart.

Does every section need a heading?

A section should represent a thematic group and is commonly identified by a heading. If a container has no meaningful topic or label and exists only for layout, use div. Do not add empty headings to justify a section.

How do I change semantic HTML tags in Elementor?

Select the relevant container, section or column, open its Layout settings and choose the appropriate HTML Tag. Check the surrounding theme output first, retain div for visual wrappers, and inspect the published DOM after updating the template.

Let each element describe its real job

Semantic HTML works when the rendered structure matches the content model. main identifies the page’s dominant content, article contains an independent composition, nav marks major navigation, aside holds complementary material and section groups a named topic. header and footer take their meaning from context, while div remains the right tool for neutral layout.

Elementor gives editors control over these tags, which also means templates can introduce duplication or misleading landmarks. Map each region before changing it, inspect the published DOM and review accessibility landmarks after every global edit.

For connected guidance on metadata, headings, image elements and rendered HTML, return to Mastering On-Page SEO Elements: Meta Tags, HTML, and Image Optimization Explained.

References

Click to rate this post!
[Total: 0 Average: 0]
Add a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use