HTML <th> Tag

Learn about the HTML <th> tag (in both tl;dr and normal format), including its definition, syntax, use-cases and plenty of examples to go along with it.
Josh Hartman
Josh Hartman
Last updated: Apr 04, 2024

Purpose and Function

The primary purpose of the <th> HTML tag is to define header cells within an HTML table. Unlike regular data cells (<td>), header cells provide essential context and labels for the data in the table. This semantic markup is crucial for accessibility, as it allows screen readers and other assistive technologies to interpret and convey the table's structure more effectively.

When a screen reader encounters a table with <th> elements, it announces the cell content as a header, making it easier for users to navigate and comprehend the table's content. This enhances the overall accessibility of your web page, catering to a wider audience.


The implementation of the <th> tag is simple and follows the standard HTML syntax. You enclose the header text within the <th> opening and closing tags. It's important to place <th> tags within the <tr> (table row) element. Here's a basic example:

<table> <thead> <tr> <th>Heading 1</th> <th>Heading 2</th> </tr> </thead> <tr> <td>Data 1</td> <td>Data 2</td> </tr> </table>
Header 1 Header 2
Data 1 Data 2

In this example, "Header 1" and "Header 2" serve as labels for the corresponding columns, distinguishing them from regular data cells.

Real-World Use-Cases and Examples

Basic Table Header

In everyday scenarios, you might use the <th> tag to create a table with clear headers:

<table> <thead> <tr> <th>Name</th> <th>Age</th> <th>Occupation</th> </tr> </thead> <tbody> <tr> <td>John Doe</td> <td>30</td> <td>Software Engineer</td> </tr> <tr> <td>Jane Smith</td> <td>25</td> <td>Graphic Designer</td> </tr> <tr> <td>Bob Johnson</td> <td>45</td> <td>Project Manager</td> </tr> <tr> <td>Alice Brown</td> <td>35</td> <td>Data Analyst</td> </tr> </tbody> </table>
Name Age Occupation
John Doe 30 Software Engineer
Jane Smith 25 Graphic Designer
Bob Johnson 45 Project Manager
Alice Brown 35 Data Analyst

This table provides a clear structure, allowing users to understand that the first column represents names, the second represents ages, and the third represents occupations.

Spanning Columns

The <th> tag can also be used to span multiple columns, providing a more complex structure:

<table> <thead> <tr> <th colspan="2">Personal Information</th> </tr> </thead> <tbody> <tr> <td>Name</td> <td>Age</td> </tr> <!-- More rows with data --> </tbody> </table>
Personal Information
Name Age

Here, the "Personal Information" header spans two columns, grouping related information together.

Styling and Formatting

Styling <th> elements is essential for improving the visual presentation of your tables. By applying CSS, you can control various aspects of the <th> appearance, such as background color, text color, font weight, borders, and padding:

th { background-color: #f2f2f2; color: #333; font-weight: bold; border: 1px solid #ddd; padding: 8px; }

This CSS snippet styles <th> elements with a light gray background, bold text, a border, and adequate padding for better visual appeal.

Accessibility and SEO

Ensuring accessibility involves providing additional information to assistive technologies and optimizing for search engines.

When using the <th> tag, the scope attribute is crucial for accessibility. It specifies whether the header applies to a row ("row") or a column ("col"). For example:

<table> <thead> <tr> <th scope="col">Header 1</th> <th scope="col">Header 2</th> </tr> </thead> <tbody> <tr> <td>Data 1</td> <td>Data 2</td> </tr> </tbody> </table>
Header 1 Header 2
Data 1 Data 2

Here, the scope="col" attribute indicates that the headers apply to columns.

For SEO, use descriptive and meaningful header text. This not only helps search engines understand the content but also improves the overall user experience.

Common Mistakes

While using the <th> HTML tag for table headers is essential, there are common mistakes that developers should be aware of to ensure proper implementation and maintain best practices:

1. Misuse of <th> for Aesthetic Purposes

One common mistake is using <th> solely for aesthetic reasons without considering its semantic meaning. Remember that <th> is designed for table headers, not just for bold or centered text. Ensure that each <th> accurately represents a header cell within your table.

<!-- Incorrect: Using th for styling only --> <th style="font-weight: bold; text-align: center;">Styled Header</th>

2. Omitting Scope Attribute

The scope attribute helps define the context of a header cell—whether it pertains to a column or a row. Omitting this attribute can lead to confusion for screen readers and impact the table's accessibility.

<!-- Incorrect: Missing scope attribute --> <th>Header</th>

3. Improper Nesting of <th>

Nesting <th> elements incorrectly can result in a distorted table structure. Each <th> should be appropriately placed within the <thead> or <tbody> section, depending on whether it represents a header for columns or rows.

<!-- Incorrect: Nesting th outside thead or tbody --> <table> <tr> <th>Header 1</th> <th>Header 2</th> </tr> </table>

4. Overlooking Content Descriptions

Providing concise and meaningful content within <th> is crucial for accessibility and SEO. Avoid vague or overly abbreviated headers, as they may not convey the necessary information to all users.

<!-- Incorrect: Unclear header content --> <th>Col1</th>

5. Ignoring Responsive Design

Failing to consider responsive design can lead to issues on smaller screens. Ensure that your tables are designed to be readable and user-friendly across various devices.

<!-- Incorrect: Unclear header content --> <th>Long Header Text That Might Get Cut Off</th>

By being mindful of these common mistakes, you can maximize the effectiveness of the <th> tag, creating well-structured and accessible tables for your users.


The <th> HTML tag is a powerful tool for creating well-organized and accessible tables. By understanding its purpose, implementing it effectively, styling with CSS, and considering accessibility and SEO, you can elevate your tables to provide a positive user experience for all.

Josh Hartman

Josh Hartman

I'm Josh, the founder of HTML Tables and eklipse Development, a Webflow Professional Partner. I've always loved seamless web experiences and take pride in merging code with creative design. Aside from this website, I'm currently building How Much Concrete, a state-of-the-art concrete calculator. Beyond the digital realm, I love the outdoors & fitness. Find me on a trail or in the gym!

More HTML Table Tags

Tag Description
<table> Creates a table element
<th> Creates a header cell in a <table>
<tr> Creates a row in a <table>
<td> Creates a cell for data in a <table>
<caption> Creates a caption in a <table>
<colgroup> Specifies a set of one or more columns within a <table> for formatting purposes
<col> Creates a column within a <colgroup> element
<thead> Groups the header content in a <table>
<tbody> Groups the body content in a <table>
<tfoot> Groups the footer content in a <table>