Do AI engines actually read the tables on your page?
They read the words in them. Whether they keep the structure that makes those words mean something is a different question, and it is the one that matters. A table's meaning lives in the relationship between a header and a cell, and that relationship is fragile once a page becomes plain text.
This is the part people skip. They build a beautiful comparison table, confirm the text is in the HTML, and assume the job is done. But "Yes" in a cell is meaningless on its own. It only means something while it is still attached to the column it sat under and the row it sat beside.
So the useful question is not whether engines read tables. It is whether the information in your table can still be reconstructed after the table stops being a table.
What happens to a table when a page is prepared for retrieval?
A page gets broken into pieces and each piece is turned into a representation that can be searched by meaning rather than by keyword. That process works on sequences of text. A table is a two dimensional thing being flattened into a one dimensional one, and flattening always loses something.
How much it loses depends on how the flattening is done. A table converted carefully into rows that repeat their headers keeps most of its meaning. A table stripped to a bare run of cell values keeps almost none. Both are plausible implementations, and they produce very different outcomes for the same page.
The same splitting logic decides which single passage gets quoted back to a reader. A table that spans a chunk boundary can be split mid structure, so the half that gets retrieved may not include the header row at all.
Why is a table harder to quote than a paragraph?
Because a paragraph is self contained and a table cell is not. If an engine wants to answer a question, it needs a span of text that states something complete. A paragraph usually does. A cell containing "14 days" does not, unless whatever assembled it also carried along which product and which column that belonged to.
This is why I keep noticing the same pattern on client sites. The page has the answer, the answer is genuinely in the HTML, and the page still does not get quoted. The information exists but it is not in a quotable shape.
A paragraph that says the trial runs for fourteen days is quotable. A cell that says fourteen days is data waiting for context. If you only have the second one, you are relying on somebody else's reassembly step working perfectly.
Does it matter whether your table is a real table?
It matters a great deal. A real HTML table with proper header cells declares the relationship between headers and data in the markup itself. A grid built from styled div elements looks identical to a person and declares nothing at all. Anything parsing the page has to guess.
This is one of the few places where the old accessibility advice and the new retrieval advice agree completely. Screen readers need header associations to announce a cell meaningfully. Any text extraction step needs the same associations for the same reason. Build the table properly and you serve both.
Rendering matters too. If the table only exists after JavaScript runs, then whether it is read at all depends on whether that step happened, which is a separate problem from structure. It is worth knowing how your site handles content that only appears after rendering.
What does Google's own guidance say about marking up table content?
Google's structured data guidelines are explicit on the point that matters here. They state that your structured data must be a true representation of the page content, and instruct you not to mark up content that is not visible to readers of the page. Markup is not a place to smuggle in data.
The guidelines also say to put the structured data on the page that it describes, to use the most specific applicable type and property names defined by schema.org, and not to block your structured data pages to Googlebot using robots.txt, noindex or any other access control methods. Google lists three supported formats: JSON-LD, which it recommends, Microdata and RDFa.
The practical reading is that markup is a clarifier, not a substitute. It can restate the structure of something a reader can already see. It cannot add a table that is not on the page, and Google says so directly.
Should you replace your tables with prose?
No. Keep the table and add the prose. The table is the right tool for a person scanning a comparison, and stripping it out to please a parser makes the page worse for the human it was built for. Add a short passage that states the same conclusion in sentences.
I write one or two sentences under most comparison tables that say the thing the table is for. Not a description of the table, which helps nobody, but the actual finding: which option suits which situation and why. That passage is quotable on its own and survives any flattening.
It also forces a useful discipline. If you cannot state in a sentence what your table proves, the table may not be proving anything. That is a content problem the markup was never going to fix, and it sits alongside the design decisions that make a comparison table worth citing in the first place.
How do you test whether your table survives?
Strip the page yourself and look at what is left. Save the rendered HTML, remove the tags, and read the result as a flat run of text. If you cannot tell what the numbers refer to, neither can anything else working from the same text.
It takes a few minutes and it is uncomfortable in a useful way. Most people are surprised by how much of their page turns into orphaned fragments. The header row disappears into the stream and the cells become a list of values with no anchor.
For the markup side, Google names the Rich Results Test and the URL Inspection tool as the way to check technical compliance. Those tell you whether the structured data is valid and reachable. They do not tell you whether your prose restates the table, which is the part you have to check by reading.
What is the honest limit of what anyone knows here?
Nobody outside these companies can tell you exactly how a given engine converts your page into text before retrieving from it. I have not seen that step documented for ChatGPT, Perplexity, Claude or Gemini, and I would not build a strategy on a guess about it.
What I will say with confidence is the shape of the risk. Every implementation I can imagine either preserves header and cell relationships or loses them, and you cannot control which one you get. You can only control whether your page still makes sense in the worse case.
That is why my advice here is defensive rather than clever. I am not optimising for a parsing behaviour I cannot observe. I am making sure the page reads correctly if the structure is thrown away, which costs two sentences and removes the dependency entirely.
What should you do next?
Open your most important comparison or pricing table and read it with the tags removed. Then write the one sentence that says what the table proves, and put that sentence on the page near it. That single change does more than any markup you could add.
After that, check the table is a real table with real header cells rather than a grid of styled boxes. If it is the second kind, rebuilding it properly improves accessibility and extraction at the same time, which is a rare thing to get for one piece of work. The same question applies one layer down to anything your page assembles with script rather than serving as text, which I went through in what an AI engine sees when your page needs JavaScript.
If you want a second pair of eyes on a page that should be getting quoted and is not, send it over. Working out why a page is invisible is one of my favourite problems. Let's chat.
Get found, cited and the back office automated
Let's make your site the source AI engines quote and wire up the systems behind it.
Read more blogs
Let's get your website found and cited by AI
Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.