Learning path · Level 1 · Tutorial 4

Organize Content with Semantic HTML

Organize an unstyled page into meaningful regions, headings, and lists so its structure remains understandable without visual styling.

  • Level: Beginner
  • Duration: 15 min
  • 7 steps
Start tutorial Back to the path
Organize Content with Semantic HTML

What you will go through

  1. Choose Meaning Before Appearance Choose HTML elements for their content purpose rather than their default visual appearance. 1 min
  2. Identify the Main Page Regions Assign introductory, navigation, primary, and closing content to suitable page-level elements. 2 min
  3. Build a Clear Heading Hierarchy Create a heading hierarchy that expresses the garden page's title, major topics, and subtopics. 2 min
  4. Choose Sections and Articles Distinguish thematic sections from self-contained articles and use a generic container only when no specific meaning applies. 2 min
  5. Represent Collections and Sequences Use semantic list markup to distinguish collections from sequences in the Maple Community Garden page. 2 min
  6. Make the Reading Order Coherent Arrange semantic HTML so an unstyled page remains coherent when read in source order. 2 min
  7. Organize and Check a Complete Page Organize an unstyled page into meaningful regions, headings, and lists so its structure remains understandable without visual styling. 3 min

What you will learn

  • Mark up page-level introductory content, navigation, main content, and footer content with suitable elements.
  • Create a heading hierarchy that represents the relationships between sections.
  • Choose section or article when the content has the corresponding meaning.
  • Represent sequences and collections with ordered or unordered lists.
  • Arrange source content in a meaningful reading order without relying on visual appearance.

Before you start

  • Create and Inspect a Local HTML Page
  • Link Local Pages with Relative Paths

Step 1 of 7

Choose Meaning Before Appearance

Choose HTML elements for their content purpose rather than their default visual appearance.

Meaning is part of the markup

Purpose comes first

HTML is not only a way to place words on a page. A semantic element describes the purpose of its content.

Ask: “What is this content?” rather than “How do I want it to look?” CSS can later change appearance, but it does not change what the HTML element means.

A <div> is useful when you need a generic grouping and no more specific purpose applies. It does not identify the kind of content inside it.

Similar appearance, different meaning

A comparison of a generic div and a paragraph element containing the same sentence. They look similar as unstyled blocks, but only the paragraph is shown as paragraph structure in a document tree.

An unstyled view can look similar, but native semantics give browsers structural information they can expose to assistive technologies.

Compare purpose with appearance

Same words, different structural information

These snippets can occupy a similar block in an unstyled page. The first is a generic group; the second identifies a paragraph. Choose based on the content’s purpose, not on a default visual effect.

html
<div>Garden updates are posted weekly.</div>

<p>Garden updates are posted weekly.</p>

Tip

A practical rule

Do not select an element because it seems likely to create a preferred font size, spacing, or color. Those are presentation decisions for CSS. First choose the element whose built-in meaning best matches the content.

Check your reasoning

Choose by meaning

A developer needs to mark a sentence that is a paragraph. Which reason for choosing <p> follows semantic HTML?

Step 2 of 7

Identify the Main Page Regions

Assign introductory, navigation, primary, and closing content to suitable page-level elements.

Recognize the page landmarks

Four meaningful page regions

Semantic HTML can identify the broad parts of a page before styling is added. For the garden page:

  • A page-level <header> contains introductory content.
  • A <nav> contains a major navigation block.
  • A <main> contains the page’s dominant content.
  • A page-level <footer> contains closing information.

These native elements create recognizable page landmarks that browsers can expose to assistive technologies. This ordinary page has one visible <main> element.

Page regions in source order

A vertical page diagram with header first, nav second, main third, and footer last.

The page-level regions are siblings in this source order: <header>, <nav>, <main>, then <footer>.

Tip

Choose nav by purpose

A link does not automatically need a <nav> wrapper. Use <nav> for a major block of navigation links, such as the garden page’s two links to important page content. A lone link within ordinary content is not automatically a navigation region.

Apply the regions to the garden page

Map content to a region

Match each garden content block to the page region that describes its purpose.

Each region has a distinct purpose in the unstyled garden page.
Garden content blockSuitable elementWhy
Introductory garden content<header>Introduces the page
Two major garden navigation links<nav>Groups major navigation
Garden information<main>Dominant page content
Run by neighborhood volunteers.<footer>Closing information

A page-level region skeleton

Create or replace your local garden.html with this page-region skeleton. Save it and refresh the browser. Later steps add the detailed main content, but this source order already identifies the page’s broad regions.

html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Maple Community Garden</title>
</head>
<body>
  <header>
    <h1>Maple Community Garden</h1>
  </header>
  <nav>
    <a href="#visit">Visit the Garden</a>
    <a href="#news">Garden News</a>
  </nav>
  <main>
  </main>
  <footer>
    <p>Run by neighborhood volunteers.</p>
  </footer>
</body>
</html>
Expected output
Maple Community Garden

Visit the Garden Garden News

Run by neighborhood volunteers.

Browser-default spacing and link appearance can vary. The empty `<main>` has no visible content, so it does not add a line to the page.

Practice: identify each page region

Build the region skeleton

Complete each blank with the complete page region that matches the content purpose named by its comment.

html
<body>
  <!-- introductory page content -->
  

  <!-- major navigation links -->
  

  <!-- dominant page content -->
  

  <!-- closing page information -->
  
</body>

Step 3 of 7

Build a Clear Heading Hierarchy

Create a heading hierarchy that expresses the garden page's title, major topics, and subtopics.

Read the page as a topic tree

Headings express relationships

Heading elements describe a topic relationship, not a preferred text size. <h1> is the page title; <h2> introduces a major topic; <h3> introduces a subtopic within that major topic.

For this page, use one descriptive <h1>: Maple Community Garden. The major topics are Visit the Garden and Garden News, so they are siblings at the same <h2> level. Their related subtopics use <h3>.

The garden page hierarchy

A hierarchy diagram showing Maple Community Garden as h1; Visit the Garden and Garden News as sibling h2 headings; and their related h3 subtopics.

Sibling topics share a heading level. A subtopic uses the next deeper heading level.

Move between major topics and subtopics

Choose levels explicitly

Use explicit heading levels in the markup. Putting a heading inside another container does not change its level.

Do not skip from an <h2> to an <h4> when opening a subtopic. After an <h3> subtopic, another <h3> is a sibling subtopic. Returning to <h2> starts the next major topic.

Heading markup

This heading order describes the garden page from its overall subject to its subtopics.

html
<h1>Maple Community Garden</h1>

<h2>Visit the Garden</h2>
<h3>What to Bring</h3>
<h3>How to Join a Work Session</h3>

<h2>Garden News</h2>
<h3>Seed Swap</h3>

Tip

Meaning before appearance

A browser may display headings at different default sizes, but size is not the reason to choose a heading level. Choose the level from the content relationship first; styling can be added later.

Check the complete relationship map

Apply the heading hierarchy

A draft has one page title, then major topics, but it uses <h4> for What to Bring. Which revision assigns heading levels correctly for the complete garden page and fixes the skipped level?

Step 4 of 7

Choose Sections and Articles

Distinguish thematic sections from self-contained articles and use a generic container only when no specific meaning applies.

Group by purpose

Two meanings, two elements

A <section> groups one thematic part of a larger document. It normally begins with a heading that names that topic.

An <article> is a self-contained composition: its content should still make sense if it is encountered independently. A news announcement is a common example.

For the garden page, Garden News is a topic within the main content, so it is a <section>. Seed Swap is one complete announcement within that topic, so it is an <article>.

A topic containing an announcement

Diagram showing a Garden News section inside main, containing a self-contained Seed Swap article.

A thematic section can contain a self-contained article.

Compare the choices

Quick comparison

Choose an element for the meaning of the content, not for the amount of space it occupies on screen.

Meaning determines the element choice.
Content situationSuitable elementWhy
A major topic of the page<section>A thematic grouping, usually with a heading
One complete announcement<article>Can make sense on its own
A grouping with no specific meaning<div>Generic container only when needed

Place the announcement in its topic

Garden News structure

Add this structure inside the existing <main> in your local garden.html. The broader topic and the announcement keep the heading levels already established for the page.

html
<section id="news">
  <h2>Garden News</h2>
  <article>
    <h3>Seed Swap</h3>
    <p>Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.</p>
  </article>
</section>

Tip

Keep scopes separate

A <section> or <article> does not automatically become a page landmark merely because that tag is present. A <header> or <footer> nested inside an article or section describes that smaller piece of content; it is not the page-level header or footer landmark.

Practice the distinction

Choose by meaning

Match each content purpose to the most suitable HTML element.

Tap an item and then its matching pair.

Apply the structure

Complete the news structure

Complete all four wrapper blanks in the Garden News structure. Keep the displayed heading levels unchanged.

html
<main>
  < id="news">
    <h2>Garden News</h2>
    <>
      <h3>Seed Swap</h3>
      <p>Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.</p>
    </>
  </>
</main>

Step 5 of 7

Represent Collections and Sequences

Use semantic list markup to distinguish collections from sequences in the Maple Community Garden page.

Select the list type

Choose by meaning

A list is structure, not decoration. Choose the element from the relationship between the items:

  • An unordered list is a collection: moving an item does not change what the collection means.
  • An ordered list is a sequence: moving an item changes the instructions.

For the garden page, supplies are a collection, while work-session instructions are a sequence. Browser bullets and numbers are only one possible visual result; native list structure communicates the meaning.

Two kinds of list

A comparison diagram showing ul with list items as a reorderable collection and ol with list items as a numbered sequence.

Use an unordered list for a collection and an ordered list for steps whose order matters.

Write valid list markup

Nest list items directly

In these simple lists, each item is marked with an <li> element nested directly inside its list container. Do not type bullet characters or step numbers into separate paragraphs: paragraphs do not provide native list structure.

Inside the existing <main> in your local garden.html, add the complete Visit the Garden section below. It includes its id, heading hierarchy, and both lists.

Visit the Garden markup

Add this complete section inside <main> in garden.html.

html
<section id="visit">
  <h2>Visit the Garden</h2>
  <h3>What to Bring</h3>
  <ul>
    <li>Gloves</li>
    <li>Water bottle</li>
  </ul>
  <h3>How to Join a Work Session</h3>
  <ol>
    <li>Meet at the gate</li>
    <li>Sign in</li>
    <li>Choose a task</li>
  </ol>
</section>

Decide from item relationships

Check the decision

Which semantic choice fits the two garden lists?

Apply the list structure

Complete both lists

Complete each missing paired list structure. Include its container, every list item, and its closing tag.

html
<section id="visit">
  <h2>Visit the Garden</h2>
  <h3>What to Bring</h3>
  
  <h3>How to Join a Work Session</h3>
  
</section>

Step 6 of 7

Make the Reading Order Coherent

Arrange semantic HTML so an unstyled page remains coherent when read in source order.

Source order is structural

Read the document in source order

Source order is the sequence in which content appears in the HTML markup. Before any styling is added, that sequence should read like a clear document: introductory content, navigation, primary content, then closing information.

A heading hierarchy describes which topics belong under other topics. Source order describes when each topic and its content are encountered. Put a heading before the material it introduces, and keep instructions in their intended sequence.

Structure works as a reading path

A vertical diagram showing header, navigation, main content, and footer in top-to-bottom source order. Inside main, a heading appears before content and a list.

Page regions identify broad areas; headings introduce topics; lists keep related items in a meaningful order.

Check more than the browser view

A coherent body sequence

This body content reads coherently from top to bottom. The markup—not its unstyled appearance—communicates the page regions, topic relationships, and list meaning.

html
<body>
  <header>
    <h1>Maple Community Garden</h1>
  </header>
  <nav>
    <a href="#visit">Visit the Garden</a>
    <a href="#news">Garden News</a>
  </nav>
  <main>
    <section id="visit">
      <h2>Visit the Garden</h2>
      <h3>What to Bring</h3>
      <ul>
        <li>Gloves</li>
        <li>Water bottle</li>
      </ul>
      <h3>How to Join a Work Session</h3>
      <ol>
        <li>Meet at the gate</li>
        <li>Sign in</li>
        <li>Choose a task</li>
      </ol>
    </section>
    <section id="news">
      <h2>Garden News</h2>
      <article>
        <h3>Seed Swap</h3>
        <p>Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.</p>
      </article>
    </section>
  </main>
  <footer>
    <p>Run by neighborhood volunteers.</p>
  </footer>
</body>

Tip

Check the markup too

A browser can display content in a readable-looking way even when its markup is misplaced or too generic. Check the element choices, heading levels, list type, and source order—not only the visible result.

Practice: rebuild the reading path

Put the page back in reading order

Arrange these HTML source blocks into a coherent reading order. Keep every native element and its content unchanged.

  1. <header> <h1>Maple Community Garden</h1> </header>
  2. </main> <footer> <p>Run by neighborhood volunteers.</p> </footer>
  3. <main>
  4. <section id="news"> <h2>Garden News</h2> <article> <h3>Seed Swap</h3> <p>Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.</p> </article> </section>
  5. <section id="visit"> <h2>Visit the Garden</h2> <h3>What to Bring</h3> <ul> <li>Gloves</li> <li>Water bottle</li> </ul> <h3>How to Join a Work Session</h3> <ol> <li>Meet at the gate</li> <li>Sign in</li> <li>Choose a task</li> </ol> </section>
  6. <nav> <a href="#visit">Visit the Garden</a> <a href="#news">Garden News</a> </nav>

Step 7 of 7

Organize and Check a Complete Page

Organize an unstyled page into meaningful regions, headings, and lists so its structure remains understandable without visual styling.

See the complete structure

Combine meaning and reading order

You have now chosen each structure for its meaning. The final task is to assemble those choices in one local document and check two things:

  1. The unstyled browser view has a coherent reading sequence.
  2. The source markup communicates why each part exists.

A readable page is useful evidence, but it is not enough by itself. Inspect the source as well: page regions identify major areas, heading levels show topic relationships, section and article express different kinds of grouping, and list types show whether order matters.

One page, several structural signals

Diagram of an unstyled garden page flowing from header to nav, main, and footer. Inside main are two sections, an article, a bulleted list, and a numbered list.

The source order moves through page regions and then through the topics and content inside <main>.

Check key structural choices

Complete targeted markup

Complete each paired tag. Choose elements for the introductory page content, the Garden News topic, and the self-contained announcement.

html
<body>
  <>
    <h1>Maple Community Garden</h1>
  </>
  <main>
    < id="news">
      <h2>Garden News</h2>
      <>
        <h3>Seed Swap</h3>
        <p>Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.</p>
      </>
    </>
  </main>
</body>

Build and check the local page

Apply the complete structure

In your local editor, replace the contents of garden.html with this complete document. Save the file, then refresh it in your browser. The page should be understandable in its plain browser-default view, with no CSS, JavaScript, or external assets.

Complete reference markup

Save this as garden.html, then refresh your local browser tab. Use the expected result to check the reading sequence, then use the checklist below to verify the markup itself.

html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Maple Community Garden</title>
</head>
<body>
  <header>
    <h1>Maple Community Garden</h1>
  </header>
  <nav>
    <a href="#visit">Visit the Garden</a>
    <a href="#news">Garden News</a>
  </nav>
  <main>
    <section id="visit">
      <h2>Visit the Garden</h2>
      <h3>What to Bring</h3>
      <ul>
        <li>Gloves</li>
        <li>Water bottle</li>
      </ul>
      <h3>How to Join a Work Session</h3>
      <ol>
        <li>Meet at the gate</li>
        <li>Sign in</li>
        <li>Choose a task</li>
      </ol>
    </section>
    <section id="news">
      <h2>Garden News</h2>
      <article>
        <h3>Seed Swap</h3>
        <p>Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.</p>
      </article>
    </section>
  </main>
  <footer>
    <p>Run by neighborhood volunteers.</p>
  </footer>
</body>
</html>
Expected output
Maple Community Garden

Visit the Garden  Garden News

Visit the Garden

What to Bring
• Gloves
• Water bottle

How to Join a Work Session
1. Meet at the gate
2. Sign in
3. Choose a task

Garden News

Seed Swap
Neighbors are organizing a seed swap at the garden. Bring spare seeds to share.

Run by neighborhood volunteers.

Browser fonts, heading sizes, spacing, bullet shapes, and link styling vary. The important expected result is this top-to-bottom content order; the two navigation links appear before the main content.

Run a structural check

Compare your source and browser result with this checklist:

  • The page-level regions are siblings inside <body> and occur in source order from introductory content through closing information.
  • There is one visible <main> containing the dominant page content.
  • Heading levels express the topic relationships without a skipped level.
  • Each thematic grouping has the appropriate section structure, while the announcement is a self-contained article.
  • The supplies are an unordered list, and the work-session instructions are an ordered list.
  • In the unstyled browser view, every heading appears before the content it introduces and the instructions remain in their intended sequence.

If something looks readable but fails a source check, revise the markup rather than relying on appearance.

Summary

What you verified

A plain browser view helps you check source order. The markup confirms the meaning behind that view.

  • Page regions identify major parts of the document.
  • Heading levels describe topic relationships.
  • Section and article express different kinds of grouping.
  • Unordered and ordered lists communicate different meanings.
  • Source order must remain coherent without styling.

Verify and reflect

Report one confirmed relationship

After saving and checking your local garden.html, report one structural relationship you confirmed. Name the content involved, the semantic element or heading/list relationship you checked, and how its source order supports understanding.

Write at least 40 characters (0/40).

Complete

Congratulations! You completed: Organize Content with Semantic HTML

You organized and checked a complete semantic HTML page. You can now use page regions, heading levels, sections, articles, lists, and source order to make an unstyled document understandable.

Download the App now to have access to + 5000 free courses, exercises, certificates and lots of content without paying anything!

  • 100% free online courses from start to finish

    Thousands of online courses in video, ebooks and audiobooks.

  • More than 60 thousand free exercises

    To test your knowledge during online courses

  • Valid free Digital Certificate with QR Code

    Generated directly from your cell phone's photo gallery and sent to your email

Cursa app on the ebook screen, the video course screen and the course exercises screen, plus the course completion certificate