Our own blog is full of inline SVG charts, bar charts, comparison tables, small data visualizations built directly into articles to illustrate a statistic. We wanted to know something specific: when an AI vision model is shown one of these charts with no surrounding article context, just the image, can it actually read the data correctly, or does it produce confident-sounding numbers that are quietly wrong? We picked three real charts already live on our own site, rendered each to a plain image, and asked three different models to read them, cold, no hints about what the chart was supposed to say.
The Stat: Of 3 real chart-reading tests, 1 was read perfectly, 1 was read with correct partial data and an honest refusal to guess an illegible digit rather than hallucinating one, and 1 was read correctly plus surfaced a genuine, unprompted design flaw in the chart itself. (Source: our own real, reproducible 3-chart test, described in full below)
The Setup
Because our live domain's DNS was intermittently unreliable during this test window, we did not screenshot the live site directly. Instead we re-rendered the actual markup of three of our own published SVG charts, the real rect, line, and text elements as published, through an independent rendering pipeline, then gave the resulting PNGs to three vision-capable models. We are noting this rendering detail honestly rather than glossing over it: these are our own real chart designs, rendered faithfully, not a live screenshot of the production page.
Chart One: A Bar Chart of Failure Patterns
The first chart, showing the top five failure patterns across a set of failing sites, was given to one model with no context beyond the image itself. It correctly read the chart's title, correctly identified all five category labels in the right order, and correctly identified the leading digit of every value shown. It explicitly and honestly declined to guess the second digit of any two-digit value, stating directly that it could not confidently read it. Looking at the chart ourselves afterward, we confirmed why: in this particular rendering, the white data-label text sits close enough to the bar's edge that the second digit genuinely loses contrast against the bar fill behind it. The model did not invent a plausible-sounding number to fill the gap. It reported exactly what it could and could not confidently read, which is a meaningfully different, and more trustworthy, failure mode than a fluent, confident, wrong answer would have been.
Chart Two: A Simple Three-Category Comparison
The second chart, a straightforward bar comparison across three categories with exact values, was read perfectly by a different model: correct title, correct category labels, correct values for all three bars, no errors of any kind. This was the simplest of the three charts in terms of visual complexity, and the clean result is a useful baseline: when a chart's data labels are unambiguous and high-contrast, model chart-reading accuracy in this test was flawless.
Chart Three: A Comparison Table With an Unprompted Design Critique
The third chart, a feature-comparison table between two platforms using checkmark and dash symbols across four rows and two columns, was read correctly in full by the third model: the title, both column headers, all four row labels, and all eight individual cell marks. What made this result notable was not the accuracy, which was complete, but an observation the model volunteered without being asked: it noted that two of the four rows showed dash marks in both columns, and that without a legend explaining what a dash actually meant (not applicable? not tested? no data?), those two rows conveyed no real comparative information to a reader at all. This is a genuine, valid design critique of the chart's own construction, the kind of note a careful human editor might make on a first read, and it came from a vision model doing nothing more than being asked to describe what it saw.
Why We Rendered Rather Than Screenshotted, Stated Plainly
It is worth being fully transparent about the one methodological wrinkle in this test. Because of an unrelated DNS reliability issue affecting our live domain during the test window, we could not simply screenshot the production page in a browser. Instead, we parsed the actual published SVG markup for these three charts, the real rect, line, text, and polyline elements exactly as they exist in the live article source, and rendered that markup faithfully through an independent rendering pipeline to produce the test images. The data, layout, colors, and text in the resulting images are the real chart as published, not a mockup or a simplified stand-in. We are naming this clearly rather than letting it pass as an unremarked live screenshot, because the distinction matters for anyone trying to reproduce or trust this specific result.
Why "Honest Uncertainty" Is the Harder Behavior to Get Right
It is worth pausing specifically on the first chart's refusal to guess a second digit, because that behavior is considerably harder to engineer reliably than either a correct read or an incorrect one. A model confidently stating a wrong number is a familiar, well-documented failure mode. A model correctly reading four of five values and explicitly flagging exactly where and why its confidence drops on the fifth is a more nuanced, more useful behavior, and one that maps directly onto what a careful human reviewer would do in the same situation: report what is known, flag what is not, and never blur the two together into a single falsely confident answer.
What This Test Actually Tells Us
None of the three results here support a simple "AI can" or "AI can't read charts" headline, and that is itself the more useful, more honest finding. One chart was read with zero errors. One chart exposed a real, physical legibility problem in our own chart's rendering, caught because the model refused to guess rather than papering over uncertainty with a confident number. One chart got a completely correct read plus a valid critique of the chart's own information design that nobody on our team had specifically flagged before. Taken together, the pattern that emerges is closer to well-calibrated than either uniformly reliable or uniformly unreliable: when the visual information is clear, the read was clear; when it genuinely was not, the honest response was a stated limitation, not a hallucinated number.
This has a direct, practical implication for anyone using inline charts on their own site: if a vision model reading your chart cold cannot confidently read a specific value, there is a real chance a low-vision human reader is running into the exact same legibility problem, and the chart's own design, not just its accessible description, is worth revisiting.
This is one of two AI-vision tests we ran on our own visual content this batch. The companion test, generating blind alt text for our hero images rather than reading data charts, turned up a related but different finding, covered here, and our broader guide to using AI for alt text covers how to apply both findings in practice.
If your own site uses data visualizations and you are not sure whether their text alternatives hold up, our free accessibility tools are a useful first pass, and our team is reachable directly at experts@wcag.world for a closer manual review of anything chart-heavy. The W3C's guidance on complex images and documented technique for accessible data visualizations are both worth reading in full.
