Skip to content
§9.4.2

Header Body Column Count Mismatch

The header has fewer cells than the rows—how is the gap closed?

✅ NormativeSettled. The requirement holds as written.📄 Page ruleCan be applied from the page alone.Read §9.4.2 in the RFC ↗

The requirement

Every row of a table MUST carry the full column count. Where the header and the body disagree, the short side MUST be padded with empty cells, one per missing position, and MUST NOT be padded with a duplicated or invented value.

When it applies

Sketch of the printed page — layout, not output
Header:  | Duration | Factor | Trend |     ← 3 columns
Body:    | 1        | 0.94   |             ← Trend all-blank → body reads as 2
         | 2        | 0.91   |

Reading the examples. Each one pairs a source page with the output the rule expects. ✅ Sample: the rule applies. ❌ Counter-sample: it looks like it applies and does not, or a rendering got it wrong. A non-conforming output, in red, is shown only for contrast. … marks content left out of an excerpt.

Header wider than the body

The usual cause is a column whose body is uniform or empty — all 1.000, all blank, all —. The column MUST be restored as cells, empty where the page prints nothing, and its header label MUST be kept: a column proven only by its header still exists (Barely-Existing Columns and Headers (§9.3.1)).

Header narrower than the body

The usual cause is a missed span in the header: a group label that carries a colspan, or a stub that takes a rowspan. The header's spans SHOULD be re-read against the page before the body is treated as the side that is short.

Padding

  • Padding MUST be individual empty cells, one per missing position — not a span across the gap. A span claims the page merged those cells; it did not, they were simply not printed. The same reasoning pads a jagged half cell by cell in Triangles and Matrix Tables (§9.8.2).
  • Body cells MUST NOT be fabricated or duplicated to reach a count. An empty cell asserts nothing; a copied value asserts something false about the page. Where it cannot be decided which side is wrong, the output renders the cells that are printed and pads with empty cells rather than guess at content.
01

✅ SampleThe rule applies

The header declares four price columns ($2,000–$5,000)702

Rows like Corporal Punishment print one merged note — "Medical Payments Not Available" — spanning all four instead of per-column values, and parent rows such as 612. Owned Watercraft Liability Coverage print no values at all: their four value positions are empty cells. The coverage labels are indented up to three steps.

Source page
Header Body Column Count Mismatch — The header declares four price columns ($2,000–$5,000). Source page.
Expected output · excerpt
Basic Limit Rule# Coverage F - Medical Payments $2,000 $3,000 $4,000 $5,000
…
b. not otherwise classified .58 1.15 1.73 2.30
c. Corporal Punishment Medical Payments Not Available
611. Incidental Low Power Recreational Motor Vehicles .58 1.15 1.73 2.30
612. Owned Watercraft Liability Coverage
1. Outboard, Inboard or Inboard-Outboard engines or Motors
a) Up to 15 feet:
Up to 50 hp. 1.73 3.45 5.18 6.33
…
Header Body Column Count Mismatch · Source page

The header declares four price columns ($2,000–$5,000)

Header Body Column Count Mismatch — The header declares four price columns ($2,000–$5,000). Source page.

More

Rule id tables-header-body-column-count-mismatch · tables columns repair