Structure — Is the important data machine-readable instead of implied by visual layout?
Weight within the pillar
4 points
Share of the overall score
about 0.8 of 100
Kind of change
Engineering — a code change and a deploy
Two numbers rather than one, because a check's weight is inside its pillar and the pillar is a share
of the whole. The largest check in the smallest pillar moves your score less than a middling one in
the largest, and knowing which you are looking at is the difference between fixing the right thing
and fixing the loudest thing.
Why an agent cares
Agents are asked to compare things more than anything else, and a real table is the only form in which a comparison survives being read by a machine.
Worth saying plainly: this is not a search-engine ranking factor and passing it will not move you up
a results page. It measures something else — whether software with no browser, no JavaScript
and a few hundred tokens of budget can tell what your page is and do something with it. Those are the
conditions an AI assistant reads you under, and they are much harsher than a browser's.
How to fix it
Give every table a <thead> with <th scope="col"> cells.
That remediation is the one the scanner itself offers when this check fails, read from the same code
that does the scoring rather than written alongside it. If it were typed out separately it could
drift from the check that judges it, which is the failure that makes published advice worthless.
How often the web fails this
Measured on 2026-09-06 against AX specification v1.5.1, across a
sample of 292 public websites.
Result
Sites
Share of those assessed
Failed
7
88%
Warned
0
0%
Passed
1
13%
Did not apply
284
excluded from the shares
The last row is kept out of the percentages deliberately. A check that did not apply to
284 of 292 sites is not a check most of the web passes, and folding those in is the
commonest way this sort of table is used to say something untrue.
At 88% this is one of the things nearly everybody gets wrong, which cuts both ways: you are not unusual for failing it, and fixing it separates you from most of your competitors rather than catching you up with them.
Testing it on your own site
npx axray-cli your-site.com
All 70 checks against one URL, this one among them, with what was found rather than only whether it
passed. Add --min 70 in a pipeline and the command exits non-zero below that score, so a
change that breaks what agents can read fails the build instead of shipping.
Questions about this check
What does the "Tabular data is marked up as a table" check mean?
Agents are asked to compare things more than anything else, and a real table is the only form in which a comparison survives being read by a machine. It sits in the Structure pillar of the Agent Experience rubric and is worth 4 points within that pillar, which works out at about 0.8 points of the overall score out of 100.
How do I fix table-semantics?
Give every table a <thead> with <th scope="col"> cells. It is an engineering change rather than a setting, so it needs a deploy rather than an edit.
Is it unusual to fail table-semantics?
No. Of 8 public sites where this check applied, 7 failed it — 88%. The measurement was taken on 2026-09-06 against AX specification v1.5.1, and no site is named.
How do I test table-semantics on my own site?
Run npx axray-cli your-site.com from a terminal. It runs all 70 checks against one URL and prints this one among them, with what it found rather than only whether it passed. It is free, needs no account and installs nothing.
The rest of the Structure pillar
Is the important data machine-readable instead of implied by visual layout?