Skip to main content
HTML Validation

Table cell spans past the end of its row group established by a “tbody” element; clipped to the end of the row group.

About This HTML Issue

When you use the rowspan attribute on a table cell, you’re telling the browser that cell should vertically span across multiple rows. However, each row group element — <thead>, <tbody>, and <tfoot> — acts as a boundary. A cell’s rowspan cannot extend beyond the row group that contains it. If a <tbody> has 2 rows and a cell in the first row declares rowspan="4", the cell tries to span into rows that don’t exist within that group. The validator reports that the cell span is “clipped to the end of the row group.”

This matters for several reasons. First, assistive technologies like screen readers rely on accurate table structure to navigate cells and announce row/column relationships. A rowspan that overshoots its row group creates a mismatch between the declared structure and the actual rendered table, which can confuse users. Second, browsers handle this inconsistently — most will silently clip the span, but the rendered result may not match your intent. Third, if you later add a separate <tbody> or <tfoot> after the current group, the clipped span won’t bridge into it, potentially breaking your layout in unexpected ways.

To fix this, you have two options: reduce the rowspan value to match the number of remaining rows in the row group, or add enough rows to the group so the span fits. You should also check whether your row group boundaries (<thead>, <tbody>, <tfoot>) are placed where you actually intend them.

Note that this same issue applies to colspan exceeding the column count of a row group, though the warning message specifically mentions rowspan clipping to the end of the row group established by a <tbody> (or <thead> / <tfoot>) element.

Examples

Incorrect: rowspan exceeds available rows in <tbody>

This <tbody> has only 2 rows, but the first cell declares rowspan="4":

<table>
  <tbody>
    <tr>
      <td rowspan="4">Spans too far</td>
      <td>Row 1</td>
    </tr>
    <tr>
      <td>Row 2</td>
    </tr>
  </tbody>
</table>

The cell tries to span 4 rows, but only 2 exist in the <tbody>. The browser clips it to 2 rows, and the validator reports the error.

Fixed: Reduce rowspan to match available rows

<table>
  <tbody>
    <tr>
      <td rowspan="2">Spans two rows</td>
      <td>Row 1</td>
    </tr>
    <tr>
      <td>Row 2</td>
    </tr>
  </tbody>
</table>

Fixed: Add rows to accommodate the span

If you actually need the cell to span 4 rows, add the missing rows:

<table>
  <tbody>
    <tr>
      <td rowspan="4">Spans four rows</td>
      <td>Row 1</td>
    </tr>
    <tr>
      <td>Row 2</td>
    </tr>
    <tr>
      <td>Row 3</td>
    </tr>
    <tr>
      <td>Row 4</td>
    </tr>
  </tbody>
</table>

Incorrect: rowspan crosses a row group boundary

This is a common source of the error — a span in one <tbody> trying to reach into the next:

<table>
  <tbody>
    <tr>
      <td rowspan="3">Tries to cross groups</td>
      <td>Group 1, Row 1</td>
    </tr>
    <tr>
      <td>Group 1, Row 2</td>
    </tr>
  </tbody>
  <tbody>
    <tr>
      <td>Group 2, Row 1</td>
    </tr>
  </tbody>
</table>

The cell with rowspan="3" cannot span from the first <tbody> (2 rows) into the second <tbody>. Each group is independent.

Fixed: Merge the row groups or adjust the span

If the rows logically belong together, combine them into a single <tbody>:

<table>
  <tbody>
    <tr>
      <td rowspan="3">Spans all three rows</td>
      <td>Row 1</td>
    </tr>
    <tr>
      <td>Row 2</td>
    </tr>
    <tr>
      <td>Row 3</td>
    </tr>
  </tbody>
</table>

Find issues like this automatically

Rocket Validator scans thousands of pages in seconds, detecting HTML issues across your entire site.

Help us improve our guides

Was this guide helpful?

Ready to validate your sites?
Start your free trial today.