Lists and tables

Use lists for groups and tables for genuine row-and-column data.

Difficulty
beginner
Time
40 minutes
Last verified
9/21/2026

What you will build

Add a task list and weekly progress table with associated headers.

Understand the idea first

Lists express order or grouping. Tables support row-and-column comparison; they are not page layout tools.

Build it step by step

<h2>Next tasks</h2>
<ol>
  <li>Finish HTML</li>
  <li>Check the structure</li>
  <li>Start CSS</li>
</ol>
<table>
  <caption>
    This week's study progress
  </caption>
  <thead>
    <tr>
      <th scope="col">Day</th>
      <th scope="col">Topic</th>
      <th scope="col">Time</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Monday</th>
      <td>Structure</td>
      <td>35 minutes</td>
    </tr>
  </tbody>
</table>
  1. Use ol when order matters and ul when it does not.
  2. Match three headers with three cells in every row.
  3. Keep the caption because it names the comparison.
  4. Add today's row with a row header.

Read the important lines

  • Every list item is an li.
  • tr is a row, th a header, and td data.
  • scope connects a header to its row or column.

Common mistakes and what to check

SymptomWhat to check
Table used for page columnsUse CSS for visual layout.
A row has too few cellsMatch every row to the header count.
Caption missingName what the data compares.

Practice without copying

Add an unordered Resources list and a Completed table column.

Check the answer after you try

Use ul; every row becomes four cells and the new header uses scope="col".

Completion check

  • My page contains the required new content
  • I can explain the key tags or attributes without the answer
  • I deliberately created and fixed at least one error

Your privacy choices

Necessary storage is always on. Optional analytics and support services load only after consent.