We measured our own website last week. The pricing page is 42,239 characters of HTML. Strip the markup, the scripts, the styling and the navigation, and the actual content is 8,284 characters. Four-fifths of the page is scaffolding. A human never notices, because a browser turns the scaffolding into layout. An AI answer engine has no browser. It reads the file.
That ratio held across our site: the Iris page came out at 21% content, the Loquelle page at 25%. If you run a WordPress or Shopify store with a page builder, yours will be worse.
What an answer engine is doing with your page
When someone asks ChatGPT, Perplexity, Claude or Gemini a question and the model reaches for the web, it fetches pages, extracts what it believes is the content, and keeps a compressed representation of it. That extraction step is the whole ballgame. Nobody guarantees it gets your page right. A deeply nested layout, content injected by JavaScript, the same navigation repeated on every page, cookie banners and chat widgets in the markup — each one is a chance for the extractor to keep the wrong thing or drop the right thing.
This is different from classic SEO. Google has spent twenty-five years learning to render and understand messy HTML, and it is extremely good at it. Answer engines are younger, are optimising for cost at enormous scale, and are far more willing to take the cheap path: fetch, strip tags, truncate, move on. Your beautifully engineered page competes with a competitor's plain one, and the plain one is easier to read.
llms.txt: a front door, not a magic file
The convention that has emerged is llms.txt — a Markdown file at the root of your domain, at yoursite.com/llms.txt, that says what the site is and links to the pages that matter. It is deliberately boring: a heading with your domain, a one-line summary, then a linked list.
Be clear about what it does and does not do. It is not a ranking signal, no engine has promised to read it, and publishing one will not make you cited tomorrow. What it does is remove ambiguity. If a crawler does look, it finds a clean statement of what you offer and where the real pages are, written by you rather than inferred from your navigation menu. It costs almost nothing to publish and it cannot hurt you. That is a reasonable bet, and it is the same bet the industry made on robots.txt and sitemap.xml before they were universal.
The part most people miss: the Markdown twin
An index is only as useful as what it points at. If llms.txt links to the same 42,000-character HTML page, you have moved the problem, not solved it. The second half of the convention is to publish a plain-Markdown copy of each page alongside it — yoursite.com/md/plans.md next to yoursite.com/plans.
A Markdown twin is the page with the scaffolding removed: headings are headings, lists are lists, links are absolute, and every price, number and claim survives intact. There is no layout to misread, so extraction is no longer a guess. It is also small — roughly a fifth the size — which matters when a model is deciding how much of your page to keep.
How to do this by hand
You do not need a tool. Create a text file, put your domain as a heading and one sentence about what you do, then list your key pages as Markdown links with a short description each. Save it as llms.txt at the top level of your site. Then, for each important page, save a Markdown version into a md/ folder and link to it from the index. Open yoursite.com/llms.txt in a browser to confirm it loads.
The honest problem with doing it by hand is not the first time. It is the fifth time, after you have changed your pricing and your llms.txt still quotes last quarter's numbers. A stale file that confidently states the wrong price is worse than no file at all.
What we built
Iris now does the whole thing in one step. Paste your address, press Make my site AI-readable, and it reads your pages, converts each one to clean Markdown, writes the llms.txt index, and hands you a zip with a README explaining where the files go.
One rule shaped the design: every line comes from a page we actually fetched. Titles and descriptions are your own, copied verbatim. No model writes marketing copy about your business, so the file cannot claim something you do not offer. A page we could not read does not appear.
Two limits worth stating plainly. First, we generate, we do not publish. Iris has no credential for your server and never asks for one, so you upload the files yourself or use a platform plugin that does it for you. Handing a third party write access to your web root to save one upload is a bad trade. Second, sites that render their content with JavaScript — many React and Vue storefronts — serve an almost empty HTML shell to any crawler. We report those pages as having no readable text rather than publishing an empty file that tells an engine your page is worthless. If that describes your site, that is the finding: what a crawler sees is the shell, and no amount of llms.txt fixes it. Server-side rendering does.
What to do this week
Fetch one of your own pages the way a crawler does — view source, not the rendered page — and look at how much of it is content. Then publish an llms.txt, by hand or with Iris, and check it loads. Put a reminder in your calendar to regenerate it whenever your prices or products change. That is the entire job, and almost nobody has done it yet.