Tables a screen reader can actually read
A table is a grid of relationships, and a screen reader has to rebuild those relationships from the markup. When the markup does not carry them, the reader gets a stream of values with nothing to attach them to.
The header row is not a style choice
In Confluence, making the first row a header does two separate things. Visually it turns the row grey and bold. Structurally it marks those cells as headers, so that a screen reader announces “Owner: IT” instead of just “IT” when the user moves through the grid. Without it, a twelve-column release table becomes twelve unlabelled values per row.
To fix it: click into the table, open the table toolbar, and turn on the header row. Ten seconds, and it is usually the single highest-value accessibility fix in a documentation space.
Some tables also want a header column — where the first cell of each row names the thing that row is about. A matrix of environments against regions needs both.
Merged cells break the grid
Merging cells is how a table stops being a grid. A screen reader pairs each value with its headers by position; once a cell spans two columns or three rows, that position arithmetic no longer describes what a sighted reader sees, and the announcements come out wrong in ways that are hard to predict.
Two reliable ways out:
- Repeat the value instead of merging. A “Region” column that says “EMEA” three times is slightly uglier and completely unambiguous.
- Split into several simple tables. If the merged cell was acting as a section heading inside the table, it wanted to be a real heading with its own table underneath.
Tables used for layout
A two-column table holding a picture on the left and a paragraph on the right is not a table of data; it is a layout, and announcing “table with one row and two columns” before it just costs the listener time. Confluence has page layouts with real columns — use those instead.
The tell is usually structural: no header row, one row or one column, or block content like images, panels and headings sitting inside the cells.
The table that grew sideways
Most documentation has one: started with four columns in 2021, now has seventeen, scrolls horizontally on every screen, and three of the headers are empty because nobody knew what to call the new columns. It fails accessibility, and it also fails everybody else.
The usual repair, in order:
- Delete the columns nobody has filled in for a year.
- Name every remaining header, including the ones holding icons or links — “Status”, “Actions”.
- Split by the dimension that keeps repeating. One table per environment often beats one table with an environment column.
- Move anything that is prose out of the cells and onto the page.
Captions and context
A sentence immediately before the table saying what it contains helps everyone, and gives a screen-reader user the context they need before entering the grid. It costs one line and is the cheapest thing on this page.