Header cells, Scope and Headers, tables spanning many pages, number formats – and how to tell that a table is not really a table at all.
A table in a PDF is accessible when a screen reader can announce, for every cell, which row and which column it belongs to. For that, it must be tagged as a table, its header cells must be marked up as header cells and, for complex tables, the relationship must be stored explicitly. Public budgets – in Germany the Haushaltsplan, the budget a municipality or state adopts for one or two years – are the acid test: hundreds of pages, multi-level headers (actual results, budget estimates, forecasts over several years), total rows, footnotes and figures that mean nothing without context.
How screen readers read tables
Screen reader users move through a table cell by cell. When moving to a new column or row, the screen reader announces the corresponding header cell: ‘Estimate 2027, staff costs, 4,812,300’. If the header cells are missing, all you hear is ‘4,812,300’ – and you have to remember the relationship across dozens of rows. This is the core of WCAG 1.3.1 (Info and Relationships): relationships that are visible must also be technically recognisable.
The building blocks
- Table, TR, TH, TD: the table consists of rows (TR) with header cells (TH) and data cells (TD); optionally divided into THead, TBody and TFoot (WCAG technique PDF6).
- Scope: every header cell states what it applies to – the column (Column), the row (Row) or both (Both). PDF/UA-1 requires this attribute if the relationship is not defined via Headers and IDs.
- Headers and ID: with multi-level headers, each data cell explicitly refers to the IDs of all header cells that apply to it.
- RowSpan and ColSpan: merged cells must be marked as such, otherwise the relationships shift.
A budget, in concrete terms
A typical sub-budget income statement (Teilergebnisplan) has columns such as ‘No.’, ‘Type of income and expenditure’, ‘Result 2025’, ‘Estimate 2026’, ‘Estimate 2027’ and several forecast years. Sensibly marked up, this means:
- The header row consists of TH cells with Scope Column.
- The column with the description (‘Staff costs’) is a row header: TH with Scope Row. That way the screen reader names the budget line with every amount.
- Total and balance rows (‘Ordinary result’) are normal rows with their own row header, not just text set in bold.
- If there are two header levels – for example ‘Forecast’ above three year columns – you need either ColSpan in the upper level or a relationship defined via Headers. The simpler solution is often to merge the levels: ‘Forecast 2028’ instead of ‘Forecast’ above ‘2028’.
Tables spanning several pages
- One logical table is one table: if a table runs over several pages, it should remain a single Table element in the tag tree. Tags are not tied to pages.
- Repeated header rows on the following pages are usually marked as artefacts in practice; otherwise the screen reader reads them out as additional data rows in the middle of the table.
- Carried-forward totals (‘Carried forward from page 12’) are an aid for print. Whether they remain as content or become artefacts is something you should decide deliberately and consistently.
- Separate tables are correct when the contents really are separate – for example when each sub-budget starts with its own table.
Tables without headers
Not every table has a visible header row. In two-column listings (‘Product area: Schools and culture’), the left column is the row header and is marked up as TH with Scope Row. If a data table has no header cells at all, a screen reader cannot announce any relationship – a problem under WCAG 1.3.1, even if not every checking tool reports it. In that case a header row belongs in the source document, or it is fair to ask whether it needs to be a table at all.
When tables are not tables
Many tables in administrative documents are layout grids: the letterhead with the logo on the left and the address on the right, the signature block, two-column text, a table of contents with dot leaders. Tagged as a table, they confuse: the screen reader announces ‘table with 2 columns and 3 rows’ where there is only text. Such tables are dissolved – into paragraphs, lists or, for the table of contents, into the structure elements intended for it. Conversely, there is data aligned only with tabs or spaces that looks like a table. It needs a real table structure.
Numbers, units, abbreviations
- Units in the header: ‘in EUR thousands’ belongs in the header cell or the table caption – then it is announced too.
- Negative values: check with a screen reader whether the minus sign is announced. Values that can only be recognised as negative by red text fail WCAG 1.4.1 (Use of Color).
- Empty cells, dashes, zeros: use them consistently and explain in a legend what ‘–’ means.
- Abbreviations in header cells, such as ‘VE’ (Verpflichtungsermächtigung, commitment appropriation) or ‘HH-Rest’ (Haushaltsrest, budget carry-over), should be explained once in the document.
- Offer the data as well: providing the figures as a spreadsheet or as open data does not replace the accessible PDF, but makes analysis easier for many people.
Common mistakes
- The header row is only formatted in bold but tagged as TD.
- Merged header cells without ColSpan – all relationships shift by one column.
- Each page is a separate table, and the repeated header row is read as a data row.
- The table was created from the spreadsheet via ‘Print to PDF’ and has no tags.
- Empty columns or rows serve only as spacers.
- Entire tables are inserted as images.
How DokAudit helps
DokAudit automatically tags tables with header cells, repairs typical structural errors and dissolves layout tables. Unclear tables are recognised with AI support; the result is only accepted if the standards check does not rate it worse. With multi-level headers and very large documents such as a complete budget, you should spot-check the relationships with a screen reader – the cleanest solution remains a simply structured table in the source document. We also practise working with tables in our training courses; tables from a PDF can also be exported for further processing with the PDF to Excel tool.
Sources:
As of: 09/2026. This article gives a general overview and is not legal advice. The legal and standards texts in force are authoritative; in individual cases, the law of the German states (Länder) may differ.