7 min read

How to Make Tables in a PDF Accessible

Tables are one of the hardest things to get right in an accessible PDF. A sighted reader scans a table in two dimensions and instantly links a value to its row and column. A screen reader user only gets that link if the table is tagged with proper header cells.

Header cells and scope

In an accessible table, the cells that label rows and columns are tagged as header cells (TH) rather than data cells (TD), and each header declares its scope — whether it labels a row or a column. With that in place, a screen reader announces "Revenue, Q1, 12,000" instead of just "12,000".

Layout tables are different

If a table is used only to position content on the page — not to present data — it should not be tagged as a table at all. Tagging a layout grid as a data table makes a screen reader announce phantom rows and columns.

How to fix a table in Acrobat Pro

  1. 1Open the Tags panel and find the Table tag for the table in question.
  2. 2Use the Table Editor (right-click the table > Table Editor) to inspect each cell.
  3. 3Change cells that label rows or columns from TD to TH.
  4. 4Set the scope of each header cell to Row or Column.
  5. 5For complex tables with merged or spanning cells, assign explicit header IDs so each data cell points to the right headers.
  6. 6Re-run the accessibility check to confirm the table passes.

Keep tables simple

Merged cells, nested tables, and split headers are all hard for assistive technology to interpret. Wherever you can, redesign complex tables into simpler ones at the source. A simple table with one header row and one header column is far easier to make accessible and to read.

Upload your PDF here to see which tables are missing header cells or are mis-tagged.

Check your PDF for free

See exactly which PDF/UA and WCAG 2.1 AA issues your document has — instant, no signup.

Frequently asked questions

What makes a PDF table accessible?
The cells that label rows and columns must be tagged as header cells (TH) rather than data cells (TD), each with the correct scope. Then a screen reader can announce "Revenue, Q1, 12,000" instead of just "12,000".
Should every table be tagged as a table?
No, only data tables. If a table is used purely to position content on the page, tagging it as a data table makes a screen reader announce non-existent rows and columns — so it should not be tagged as a table.

Related how-to fixes