HTML <thead> Tag

Learn about the HTML <thead> 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: May 28, 2024

Purpose and Function

The <thead> HTML tag plays a pivotal role in organizing and structuring the header content of an HTML table. Its primary function is to encapsulate one or more <tr> (table row) elements, which, in turn, contain <th> (table header) elements. This grouping signifies the header section of the table, providing a clear delineation from the table body and enhancing the overall organization and readability of the table.


To integrate the <thead> tag, you nest it within the <table> element, encapsulating the header content. Here's a basic example:

<table> <thead> <tr> <th>Header 1</th> <th>Header 2</th> </tr> </thead> <tbody> <tr> <td>Data 1</td> <td>Data 2</td> </tr> <!-- Additional rows --> </tbody> </table>
Header 1 Header 2
Data 1 Data 2

In this example, the <thead> element contains a row with two header cells (<th>), defining the column headers for the subsequent data.

Real-World Use-Cases and Examples

Multi-Row Header

Consider a scenario where you need to create a table with a more complex header structure:

<table> <thead> <tr> <th rowspan="2">Header 1</th> <th colspan="2">Header 2</th> </tr> <tr> <th>Subheader 1</th> <th>Subheader 2</th> </tr> </thead> <tbody> <!-- Data rows --> </tbody> </table>
Header 1 Header 2
Subheader 1 Subheader 2

This example showcases a table with a multi-row header where the first column spans two rows, and the second column spans two columns.

Styling and Formatting

Styling within <thead> elements can be accomplished through CSS to enhance visual appeal or ensure consistency:

thead { background-color: #f2f2f2; font-weight: bold; text-align: center; }

This CSS snippet sets a background color, bold font, and center alignment for the header row within the <thead>.

Accessibility and SEO Considerations

For accessibility, ensure that header content within <thead> is appropriately marked up using <th> elements. This helps screen readers interpret the content and improves the overall accessibility of the table.

For SEO, use meaningful and relevant header content within <thead>. Search engines may leverage this information to understand the context and relevance of the table content.

Common Mistakes

1. Incorrect Placement Outside <table>

Placing <thead> outside of a <table> structure is incorrect, as <thead> should always be a child of the <table> element.

<!-- Incorrect: thead outside a table --> <thead> <tr> <th>Header 1</th> <th>Header 2</th> </tr> </thead>

2. Omitting <tr> Inside <thead>

Omitting the <tr> element inside <thead> is incorrect; each header row should be wrapped within a <tr> element.

<!-- Incorrect: Missing tr inside thead --> <table> <thead> <th>Header 1</th> <th>Header 2</th> </thead> </table>

3. Not Using <th> Elements Inside <thead>

Using <td> elements instead of <th> inside <thead> is incorrect; headers should be marked up with <th> for semantic clarity.

<!-- Incorrect: Using td instead of th inside thead --> <table> <thead> <tr> <td>Header 1</td> <td>Header 2</td> </tr> </thead> </table>

4. Incorrect Nesting Order

The nesting order of <tr> and <th> inside <thead> is incorrect; <th> elements should be directly nested within the <tr> element.

<!-- Incorrect: Incorrect nesting order of tr and th inside thead --> <table> <thead> <th>Header 1</th> <tr> <th>Header 2</th> </tr> </thead> </table>

5. Not Considering Responsive Design

Overlooking responsive design within <thead> is incorrect; header text should remain legible on smaller screens for a better user experience.

<!-- Incorrect: Not considering responsive design inside thead --> <thead> <tr> <th>Long Header Text That Might Get Cut Off</th> </tr> </thead>

By avoiding these common mistakes, you can effectively use the <thead> tag to structure the header of your tables, ensuring proper rendering and maintaining a positive user experience.


The <thead> HTML tag serves as a foundational element for structuring tables, particularly for organizing header content. Its use contributes to improved semantic structure, enhancing accessibility and providing valuable context for search engines. By applying thoughtful styling and adhering to accessibility and SEO best practices, developers can create tables that not only look appealing but also ensure a positive user experience and enhanced discoverability. Embrace the versatility of <thead> to optimize your tables and elevate your web content.

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>