BlogFindings
Do AI crawlers read images? 52,077 on 1,006 home pages, and 18,171 carried an empty alt
Lantad asked all 1,419 hostnames in this repository's committed corpus for robots.txt on 23 September 2026 and read each home page with no JavaScript executed. 1,076 answered HTTP 200 with HTML and carried 52,077 image elements between them. 18,171 of those declared an empty alt, 1,935 carried no alt attribute at all, and on 73 pages not one image on the page described itself.
So the question worth measuring is not whether images matter. It is how much of a page's meaning is currently locked inside them, and what the markup hands over in their place. This run asked all 1,419 hostnames in this repository's two committed corpus seed files for robots.txt as LantadBot, then requested each home page once and read the raw bytes with no JavaScript executed. 1,076 answered HTTP 200 with HTML. Those pages carried 52,077 image elements, 37,975 inline svg elements and 1,452,613 words of visible text, and the gap between the first two numbers and the third is the finding. This is the same corpus and the same method used when this blog measured what JavaScript actually adds to the prose on a page, and the same reading of raw bytes behind the count of how many home pages carry no structured data at all.
In short
- Do AI crawlers read images: a crawler that fetches HTML and runs no JavaScript receives no pixels, so the alt attribute, the figure caption and any ImageObject markup are the entire description of an image, and Lantad measured all three across 1,076 home pages on 23 September 2026.
- Of the 52,077 image elements on those pages, 31,971 carried descriptive alt text, 18,171 carried an empty alt and 1,935 carried no alt attribute at all, so 38.6 percent of images handed a text-only reader nothing.
- The 31,971 descriptive alt values came to 196,238 words against 1,452,613 words of visible page text, so alt text is 13.5 percent of everything readable in this corpus and not a rounding error.
- Site builders decide this more than editors do: Framer-served home pages carried descriptive alt on 32.2 percent of their images against 74.8 percent on WordPress small business sites, and nocodeweek.io emitted a valueless alt attribute on all 262 of its images.
- Inline SVG is now the more common image element and almost none of it is labelled: 37,975 inline svg elements appeared on 776 of the 1,076 pages and 2,508 of them, 6.6 percent, carried a title element or an aria-label.
| Stage | Count | What happened |
|---|---|---|
| Hostnames asked | 1,419 | The committed corpus, an editorial frame rather than a random draw |
| robots.txt disallows LantadBot at the root | 12 | Left alone, not requested further |
| Home page returned no status at all | 33 | Connection failure or timeout |
| Home page answered with something other than 200 and HTML | 298 | 212 answered 403, 55 answered 503 and 10 answered 429 |
| Home pages read | 1,076 | The denominator for everything below |
| Carried at least one image element | 1,006 | 70 pages carried none |
| Image elements read | 52,077 | A median of 32 per page on the pages that had any |
| Inline svg elements read | 37,975 | On 776 of the 1,076 pages |
Do AI crawlers read images, or only what the markup says about them?
Four documents settle what an image is supposed to carry, and none of them was written with an answer engine in mind, which is why they are useful here.
The WHATWG HTML Living Standard, read at html.spec.whatwg.org/multipage/images.html on 23 September 2026, states in section 4.8.4.4 that "Except where otherwise specified, the alt attribute must be specified and its value must not be empty; the value must be an appropriate replacement for the image". It then gives the test this whole post is built on: "the intent is that replacing every image with the text of its alt attribute does not change the meaning of the page". That is a parity requirement stated in a specification, and it is the same requirement Lantad applies to a rendered page under the name prose parity. The standard also lists the narrow cases where the attribute may be omitted, and they are cases where nobody knows what the image shows, such as a webcam or a photograph upload, not cases where a template forgot.
The MDN reference for the img element, last modified on 11 September 2026, says the alt attribute "Defines text that can replace the image in the page" and lists when a browser will fall back to it, including non-visual browsers and an image that fails to load. Google's image SEO documentation, carrying Last updated 2026-03-02 UTC, is more explicit about the machine reading it: "Google uses alt text along with computer vision algorithms and the contents of the page to understand the subject matter of the image". Note the order, and note the middle term. Google has computer vision and is telling you it uses alt text anyway. A crawler collecting HTML for a language model has the first and the third of those inputs and not the second.
The fourth says the same thing with no reference to search at all. WCAG 2.2, a W3C Recommendation dated 12 December 2024, makes success criterion 1.1.1 Non-text Content a Level A requirement: "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose". Three separate constituencies, a specification body, a search engine and an accessibility standard, converge on one instruction, which is part of why the numbers below are worth stating plainly rather than dramatising. Nobody has been told to do something obscure.
| Document | Date it carries | What it requires |
|---|---|---|
| WHATWG HTML Living Standard, section 4.8.4.4 | Read 2026-09-23 | The alt attribute must be specified and must not be empty, except in named cases |
| MDN img element reference | Modified 2026-09-11 | alt defines text that can replace the image in the page |
| Google image SEO documentation | 2026-03-02 UTC | Google uses alt text along with computer vision algorithms and the contents of the page |
| WCAG 2.2, success criterion 1.1.1 | 12 December 2024 | All non-text content has a text alternative serving the equivalent purpose, Level A |
What 52,077 images actually told a crawler
Every image element on the 1,076 pages was sorted into one of three states, which is the whole of the measurement and is deliberately crude: the alt attribute is absent, the alt attribute is present and empty, or the alt attribute holds text. A valueless attribute, written as a bare alt with no equals sign, parses as the empty string under the HTML rules and was counted as empty rather than absent, because that is what a conforming parser does with it.
31,971 of the 52,077 images, 61.4 percent, carried alt text. 18,171, 34.9 percent, carried an empty alt. 1,935, 3.7 percent, carried no alt attribute at all. Those last two categories are not the same failure and it matters which one you have. An empty alt is a statement, and under the specification it is the correct statement for an image that adds nothing a reader needs, such as a spacer or a decorative flourish. A missing attribute is silence: the author said nothing, so a consumer cannot tell a decorative image from a load-bearing one. 237 of the 1,006 pages with images, 23.6 percent, carried at least one image with no alt attribute.
The 31,971 descriptive values came to 196,238 words. Set against the 1,452,613 words of visible text on the same pages, alt text is 13.5 percent of everything a text-only client can read in this corpus. That is the number that reframes the subject. Alt text is usually filed as an accessibility chore or a minor ranking input, and at this scale it is neither: it is roughly one word in eight of the readable page, written by whoever was least likely to be reviewing copy. For an AI crawler assembling a description of a business, that eighth is doing real work.
Quality inside the descriptive group is harder to judge and the measurement here is deliberately conservative. 803 of the 31,971 values, 2.5 percent, match a filename pattern, meaning a string like a bare image file name or an undifferentiated hyphenated token. evolvehealing.net, a Squarespace site, carried 70 descriptive values of which 55 match, including "gold banner 1_edited.jpg", "Screenshot (280).png" and "mama mag logo .png". Those are not descriptions; they are what a content management system writes when nobody types anything. 2.5 percent is a floor rather than an estimate, because a pattern test cannot catch a human-written value that is merely useless, and this blog has made the same caveat about pattern matching when it counted defects in schema markup across 612 home pages.
The 73 pages where not one image described itself
73 of the 1,006 pages carrying images had zero descriptive alt values on the entire page. 49 of those had five or more images and 43 had ten or more, so these are not one-image pages that happen to score zero. They are pages with a full complement of pictures and no text about any of them.
The largest is nocodeweek.io, which served 262 image elements, every one of them a Framer-hosted asset and every one carrying a bare alt attribute with no value. Re-requested by hand the same day, the page returned 262 image elements, zero with an alt value of any kind, and 798 words of visible text. Nothing there is a mistake in the ordinary sense. A builder emitted a template, the template writes a valueless alt on every image it places, and the result is 262 formally correct declarations that none of the pictures on the page mean anything. A second shape appears on cas.cn, the Chinese Academy of Sciences, which served 127 images of which 126 carried no alt attribute at all, alongside 141 words of visible text. That is the silence case at scale on an institutional site.
The distribution by corpus category is where this stops being anecdote. Home pages served by Framer carried descriptive alt on 32.2 percent of their images and an empty alt on 67.5 percent. WordPress small business sites carried descriptive alt on 74.8 percent. Shopify direct to consumer stores reached 74.7 percent and news sites 72.2 percent. The ordering tracks the tooling, not the sector's resources or its sophistication: the categories at the bottom are the visual site builders and the marketing pages built in them, and the categories at the top are the platforms whose upload dialog asks for a description and stores it against the asset. This is the same platform-decides-your-output pattern this blog found when it measured that 35 of 36 Framer sites served markdown while one robots.txt named a crawler, and it is the argument for reading the stack guide for your own builder rather than a generic checklist.
One more count belongs here because it bounds the damage. 57 pages declared an og:image, giving a social card a picture, while carrying no descriptive alt on any image in the body. The page is prepared to describe itself to a link preview and not to a reader. 802 of the 1,076 pages, 74.5 percent, declared an og:image at all, which makes it one of the best-adopted tags in the corpus and a fair measure of how much effort these teams are willing to spend when a payoff is visible.
| Corpus category | Sites read | Images | Descriptive alt | Empty alt |
|---|---|---|---|---|
| WordPress small business | 37 | 1,363 | 74.8 percent | 19.3 percent |
| Shopify direct to consumer | 33 | 3,570 | 74.7 percent | 21.6 percent |
| Ecommerce | 63 | 3,721 | 73.0 percent | 23.6 percent |
| News | 60 | 5,235 | 72.2 percent | 25.2 percent |
| Healthcare | 95 | 2,535 | 72.1 percent | 22.3 percent |
| Education | 102 | 3,064 | 69.4 percent | 20.1 percent |
| Travel | 78 | 3,962 | 67.3 percent | 21.4 percent |
| Government | 85 | 1,964 | 65.2 percent | 32.8 percent |
| Local media | 30 | 1,054 | 62.5 percent | 34.3 percent |
| SaaS | 117 | 9,342 | 60.1 percent | 38.4 percent |
| Wix and Squarespace | 54 | 1,361 | 58.9 percent | 39.7 percent |
| Static documentation | 30 | 554 | 57.9 percent | 22.4 percent |
| Finance | 95 | 2,763 | 56.4 percent | 39.2 percent |
| Single page app startups | 45 | 2,360 | 53.9 percent | 44.2 percent |
| Webflow | 42 | 2,758 | 43.2 percent | 56.7 percent |
| Bubble and no-code | 42 | 1,482 | 42.6 percent | 56.3 percent |
| SaaS marketing | 37 | 2,463 | 41.3 percent | 57.8 percent |
| Framer | 31 | 2,526 | 32.2 percent | 67.5 percent |
37,975 inline SVGs, and 6.6 percent carried a label
The image element is no longer where most of the pictures are. 37,975 inline svg elements appeared across 776 of the 1,076 pages, which is 72.1 percent of the corpus, and on 314 pages there was more inline svg than there were image elements. Icons, logos, arrows, chart furniture and a good deal of what used to be a sprite sheet now arrive as vector markup pasted directly into the document.
An inline svg has its own way of describing itself. The accessible name comes from a title element inside the svg, or from an aria-label on it. 2,508 of the 37,975, 6.6 percent, carried one or the other. On 539 of the 776 pages with inline svg, not a single one of them was labelled. The raw counts are worth holding next to the alt figures: 35,467 unlabelled vector graphics against 20,106 images with no description, so the newer format is the larger silence by a factor of roughly 1.8.
The honest reading of that number is narrower than it first looks, and this is where a post like this one has to stop itself. Most inline svg genuinely is decoration. A chevron in a dropdown and a hairline divider need no accessible name, and labelling them would make a screen reader worse rather than better, which is the same reasoning that makes an empty alt correct on a spacer. So 6.6 percent is not 93.4 percent of a problem. What the number does establish is the scale of the surface: 37,975 against 52,077, so more than four in ten of the graphical elements in this corpus are now in a format where the default is no text, embedded in the document rather than referenced from it, which means it costs bytes in every crawl while contributing nothing to what is read. spearmintlove.com served 756 inline svg elements and none carried a title or an aria-label. visitbritain.org served 694, of which 6 did.
Where it does bite is logos and wordmarks, because those are the entity signal. A company whose name appears on its home page only as vector paths in an unlabelled svg has told a crawler nothing about who publishes the page, which is the input behind entity confidence and the thing an answer engine needs before it can attribute anything to you. The structured data route out of that is well documented and lightly used here: 253 of the 1,076 pages, 23.5 percent, carried an ImageObject node, 955 nodes between them, against 620 pages carrying JSON-LD of any kind. schema.org's own page for the type records usage on 10M+ domains based on monthly aggregations from Google's web index in August 2026, which is a count of domains rather than a rate, so it says the type is common without saying what share of pages anywhere carry it.
The 22 pages where the alt text outweighed the page
Running the parity test in the other direction turns up the inconvenient cases. On 22 of the 1,076 pages the alt text contained more words than the visible page text did, and on 121 pages it made up at least a quarter of everything readable. On those pages the image descriptions are not a supplement to the content. They are the content, as far as a text-only client is concerned.
featherhaus.com is the clearest instance and it was re-fetched by hand and confirmed. The page returned 100 words of visible text and 1,572 words of alt text across 44 images, a ratio of nearly sixteen to one. The alt values are Instagram captions, carried across by an embedded feed, and they read like it: one runs "Merry Christmas from my family to yours!" with emoji attached, another lists a treatment's skin type, technique, pain level and appointment time. Three more are raw camera filenames of the DCIM variety. So the most substantial prose the site offers a crawler is social media copy that nobody wrote for the page, sitting in an attribute, alongside filenames that say nothing. maroc.ma, the Moroccan government portal, returned 74 words of visible text against 104 words of alt across 115 images, most of them the strings "Logo" and "Icon".
This is a different failure from the one usually discussed and it deserves naming separately. The familiar version is a page whose prose is trapped in a JavaScript bundle, which this blog measured directly in finding that 11 of 271 pages returned no readable words until the bundle ran, and which is the case what GPTBot sees exists to show you. This one is the opposite: the bytes are all present and correct, and the meaning has simply migrated into an attribute that was designed to hold a substitute rather than a source. An answer engine that quotes you from an alt attribute is quoting whatever your embed pulled in, and you will not have reviewed it.
96 of the 1,076 pages returned fewer than 100 visible words in total, and 40 of those carried at least one image. A page in that state has effectively delegated its argument to pictures, and the grading Lantad applies to it says so: the scan reports what was measured and what was not rather than issuing a confident score over missing evidence, which is the rule the methodology page sets out and the reason a grade is withheld rather than guessed.
featherhaus.com
- 44 image elements, 43 with descriptive alt
- 100 words of visible text
- 1,572 words of alt text
- Alt values are Instagram captions carried by an embed
- Three alt values are raw camera filenames
maroc.ma
- 115 image elements, 108 with descriptive alt
- 74 words of visible text
- 104 words of alt text
- Most common alt values are Logo and Icon
- 7 images carry an empty alt
What this run did not measure, and what to check on your own site
Four limits, stated because a measurement post that hides them is worth less than no measurement.
No image was fetched. This run read markup and counted attributes; it never requested a single image file, so it cannot say whether any of those URLs resolve, whether the pictures match their descriptions, or whether a crawler that does fetch images gets anything useful from them. No JavaScript ran either, so an image inserted by a script after load was not seen, and 2,600 image elements arrived with no src attribute at all, 1,722 of them holding the address in a data attribute for a lazy loader to promote later. Those 2,600 are counted in the 52,077 and their alt attributes are counted with the rest, which is the right call for a reader of raw bytes and the wrong one if you want to know what a browser eventually shows. The corpus is also an editorial sample of 1,419 hostnames rather than a random draw from the web, so the category comparisons describe these sites and not their industries, a caveat that applies to everything on the research page as well.
The claim this post does not make is the interesting one. It does not say that any named crawler ignores images, because the vendors do not all document that and inventing their behaviour is exactly the failure this blog exists to avoid. What is documented is narrower and enough: Google states it combines alt text with computer vision, and the crawler tokens Lantad evaluates are listed with their published sources on the AI crawlers reference and on the bot page. What this run establishes is the supply side. Whatever any engine chooses to do with images, 38.6 percent of the images in this corpus and 93.4 percent of the inline svg offer it nothing to work with in the document itself.
Three checks are worth running on your own site, in order of what they cost. Count the images on your most important page and count how many carry alt text that a stranger could use to picture the image without seeing it; the ratio is the whole of the finding above reproduced on one page, and it takes about ten minutes. Then check whether your builder writes a default, because the category table above says the tool decides this for most sites, and the fix is a template change rather than an editorial programme. Then look at your logo and any wordmark, and confirm your company name appears somewhere in the text of the page and not only as vector paths, which is the cheapest single repair on this list and the one that touches how an answer engine identifies you most directly. The same reasoning applies to the structured data you already publish, and none of it requires you to write a word of new copy for humans.
-
Markup readMeasured 52,077 image elements and 37,975 inline svg elements in the raw bytes of 1,076 home pages -
Image files fetchedNot measured No image URL was requested, so nothing is claimed about whether they resolve or what they show -
JavaScript inserted imagesNot measured No script ran, and 2,600 image elements arrived with no src attribute -
Crawler behaviour on imagesNot measured Vendor documentation does not state it uniformly, so this run reports supply rather than consumption -
Alt text qualityPartly measured 803 values match a filename pattern, which is a floor and not an estimate of how many are useless -
CorpusEditorial sample 1,419 hostnames chosen for coverage, so category figures describe these sites and not their industries
Lantad
Published .
Ask whether AI crawlers read images and you get an argument rather than an answer, because the question hides three separate steps and people are usually disagreeing about different ones. A crawler that requests your HTML and does not execute JavaScript receives a document containing the address of an image, not the image. Whether it later fetches those bytes is a second decision, and whether anything then looks at the pixels is a third. In the document itself the only description of the picture is whatever the markup says about it: the alt attribute, a caption if the image sits in a figure, and a schema.org node if somebody wrote one. Everything else is a URL.
Common questions
Do AI crawlers read images?
Not from the document. A crawler that requests your HTML and runs no JavaScript receives the address of an image, not the image itself, so the only description available in the page is the alt attribute, a figure caption, or a schema.org node. Whether a given engine separately fetches the file and looks at the pixels is a vendor decision that is not uniformly documented. Lantad measured the supply side on 23 September 2026: 38.6 percent of the 52,077 images on 1,076 home pages offered no text description at all.
Is an empty alt attribute a mistake?
No, and this is the distinction that matters. The WHATWG HTML Living Standard treats an empty alt as the correct declaration for an image that adds nothing a reader needs, such as a spacer or a decorative flourish. A missing alt attribute is different: it says nothing, so a consumer cannot tell a decorative image from a load-bearing one. In this corpus 18,171 images carried an empty alt and 1,935 carried no attribute at all.
Does alt text actually affect how AI describes my site?
Lantad did not measure any engine's output, so it cannot answer that with a figure. What it can say is that alt text made up 13.5 percent of all readable words on the 1,076 pages read, 196,238 words against 1,452,613, so it is a material share of what a text-only client receives. Google's image SEO documentation, last updated 2026-03-02 UTC, states that Google uses alt text alongside computer vision and the contents of the page.
Why does my site builder affect this?
Because the template writes the attribute, not the editor. Framer-served home pages in this corpus carried descriptive alt on 32.2 percent of their images against 74.8 percent on WordPress small business sites, and nocodeweek.io emitted a valueless alt attribute on all 262 of its images. Platforms whose upload dialog asks for a description and stores it against the asset score highest, which makes this a template change rather than an editorial programme.
See what AI can read on your site
Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.