[email protected]Telegram [TBD: Telegram]

Blog

Do llms.txt and Structured Data Improve AI Visibility? A Test Design

Whether llms.txt affects AI visibility is still an open question, and we don't have a result to give you. Google says neither llms.txt nor special markup is needed for its search and AI features. For other engines, we found no public documentation that says either way. What we can offer is a test design you can run on your own site.

That's the plan below: one variable, control pages, a fixed prompt set and repeated runs, with the decision rule written before you start. GeoAeoLab uses the same logic in its own measurement work; we don't publish results here. Request AEO audit if you'd rather skip to the next step.

Two groups of identical page cards, test and control, above one shared row of prompt bars and a grid of repeated runs with a pale spread band
Contents
  1. 01What is llms.txt?
  2. 02What Google says about llms.txt and structured data
  3. 03What we don't know
  4. 04The test design
  5. 05Test plan, step by step
  6. 06What would (and wouldn't) count as evidence
  7. 07What not to put in llms.txt or markup
  8. 08If you'd rather have us run it
  9. 09FAQ
  10. 10Want this test run on your site?

What is llms.txt?

llms.txt is a proposal, not a standard. According to llmstxt.org (checked 2026-10-22), it was proposed by Jeremy Howard in September 2024; the current version, v2, is dated 2026-08-10. The idea: a Markdown file at /llms.txt that gives a short description of your site and links to more detailed Markdown pages, so AI agents can read the site more easily. The specification describes itself as open for community input. It does not call itself a search engine standard, and neither should we.

The format looks like this:

# Example Co
> One-sentence description of what the site covers.

## Docs
- [Getting started](https://example.com/start.md): setup in plain language

llms.txt vs robots.txt. They do different jobs. robots.txt tells crawlers which URLs they may access. llms.txt doesn't control access or forbid anything; it's a reading map. Having one doesn't replace the other.

What Google says about llms.txt and structured data

Does structured data help AI citations? For Google's own AI features, Google's documentation says no special markup is needed:

  • AI features in Search (AI Overviews, AI Mode). A page needs to be indexed and eligible to show in Search with a snippet. No new files or special markup are required, and appearing is not guaranteed. AI Overviews and AI Mode may use different models and techniques, so responses and links can differ. Google Search Central, AI features, updated 2025-12-10.
  • Structured data. Google's guide states: "Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add." Google Search Central, AI optimization guide, updated 2026-07-10.
  • llms.txt. In a 2026-06-15 entry in its Search Central updates, Google says Google Search doesn't need llms.txt and that it doesn't affect visibility, positively or negatively. Keeping one for other services that use it is fine.
  • Markup limits. Markup doesn't guarantee a rich result, and you shouldn't mark up content readers can't see on the page. Google Search Central, structured data policies, updated 2026-07-10.

This is why the test below is about other engines, not Google Search. For the short version, see our short answer on llms.txt and does structured data help AI answers.

What we don't know

Known (with source)

Not known

Google Search: no llms.txt needed, no effect on visibility (updates, 2026-06-15)

Whether ChatGPT, Perplexity, Gemini and other systems use llms.txt when choosing what to cite. We found no official documentation saying so, so we make no claim

Google AI features: no special markup needed (AI features)

Whether those other systems use structured data when choosing what to cite

llms.txt is a proposal (llmstxt.org)

How long after a change an effect would show up in answers, if it shows up at all

Markup must match visible content (policies)

Whether a result on one engine, model or site carries over to another

An engine's answer depends on many factors beyond these two, and it changes between runs, models and dates. So "no difference found" in a test means "not detected under these conditions," not "it doesn't work."

The test design: one variable, a control group, repeated runs

A fair test of llms.txt and AI visibility rests on four principles. Change one variable. Keep a control group that doesn't get the change. Repeat every run and record the engine, model and date. Write the decision rule before you start.

This is the design we use. We're not publishing results here.

Test plan, step by step

Use the table as a printable checklist. The sections below it explain why each step is there.

Step

What you decide

What you record

Why it matters

Link

1. Hypothesis

One variable, one engine

Written hypotheses, null included

Stops goalposts from moving

#hypothesis

2. Test and control pages

Which pages go in which group

Pairs and assignment method

Gives a fair comparison

#test-and-control

3. One change only

What changes, what's frozen

The change and the frozen list

Isolates the variable

#one-change

4. Pre-checks

Are pages crawlable and valid

Check results per page

Rules out access problems

#pre-checks

5. Prompt set

Prompts and version

Prompt list, version number

Same questions every time

#cohort

6. Engines and models

Which engines to test

Engine, model as shown

Results don't mix

#engines

7. Dates and windows

Baseline, change, waiting, test

Dates and window lengths

Separates before from after

#dates

8. Repeat runs

Runs per prompt per window

Each run, fresh chat

Answers vary run to run

#repeat-runs

9. Metrics

What counts as mention, citation

Named / cited in k of n runs

Two different outcomes

#metrics

10. Confounders

What else could move results

Dated log entries

Explains odd results

#confounders

11. Decision rule

When a difference counts

The rule, before starting

Prevents after-the-fact reading

#decision-rule

12. Report

What to publish

Full test record

Makes the test repeatable

#report

Step 1: Write one hypothesis

Keep two hypotheses separate and don't mix them.

  • H-SD: valid structured data that matches the visible text changes how often the test pages are cited in engine X.
  • H-LLMS: listing pages in llms.txt changes how often those pages are cited in engine X.

The null hypothesis for both: there's no difference. Write all of it down before you start. Google Search isn't the target; Google has already answered for its own search.

Step 2: Pick test and control pages

Choose pairs of similar pages: same template, similar topic type, comparable age and internal links, both indexed. Assign each page to a group by lot, not by picking your best pages for the test. We don't name a minimum number of pairs. More pairs give a steadier picture.

Step 3: Change one thing only

Freeze everything else for the length of the test: body text, links, titles. There's one catch for llms.txt: it's a single file for the whole site, so you can't split "file vs no file" across groups on one site. The variable is therefore "page listed in llms.txt vs not listed." Write this limitation into your test record.

Step 4: Run pre-checks

Before the change, confirm that pages in both groups are crawlable (check robots.txt) and indexed. Confirm that markup validates and matches the visible text. Confirm that your llms.txt, if you use it, follows the llmstxt.org format and links only to real, visible pages. Our technical access checks cover the crawl and index side.

Step 5: Fix the prompt set

Build a fixed set of prompts that don't name your brand and that your test and control pages could plausibly answer. Give the set a version number and approve it before the test starts. For how to build one, see how to build the prompt set.

Step 6: Choose engines and record the model

List the engines you'll test, by name. Record the model as the interface shows it; if it isn't shown, write "not shown." Treat each engine as its own series and don't add results together across engines.

Step 7: Set dates and windows

Lay out the timeline: a baseline period before the change, the date of the change, a waiting window, then the test window. A second test window is optional but useful for checking that a difference repeats. You set the length of the waiting window and write it down. We don't know how long an effect would take to appear, so we don't give a number of days.

Step 8: Repeat every run

Run each prompt on each engine several times in each window, each in a fresh chat. Our protocol uses at least three runs; that's a parameter of our protocol, not a statistical rule. Details are in repeat each prompt.

Step 9: Count mentions and citations separately

For each group and window, count two things apart: a mention (your brand is named) and a citation (the URL of a test or control page is given). Record them as "named / cited in k of n runs." For the difference, see mention vs citation.

Server logs can add context: whether /llms.txt and the test pages were requested, and by which user agents, using the user agents each engine documents. A request for the file shows it was fetched. It doesn't show that it affected an answer.

Step 10: Log confounders

Keep a dated log of anything else that could move the results:

  • model updates and new features on an engine
  • crawl and indexing timing
  • seasonality and news on the topic
  • edits on your site and on competitors' sites
  • account state and personalization
  • market and language

A change log works well for this.

Step 11: Set the decision rule before you start

Count a difference between test and control as an effect only if it meets three conditions:

  1. It is larger than the spread between runs you saw in the baseline. See spread between runs.
  2. It repeats in a second window.
  3. The conditions are comparable. See comparable periods.

Otherwise, record "no detectable difference under these conditions." Any conclusion applies only to that engine, model, those dates and that site. As an option, remove the change and check whether the difference disappears.

Step 12: Report the test, not a screenshot

Publish what you tested and how: the hypothesis, the groups, the prompt set version, engines and models, dates, number of runs, the decision rule and the confounder log. A screenshot of one answer is not evidence.

What would (and wouldn't) count as evidence

  1. One screenshot isn't evidence. Answers change between runs, models and dates.
  2. A request for /llms.txt in your server logs shows the file was fetched, not that it changed an answer.
  3. A difference smaller than the baseline spread is noise.
  4. A result on one engine or model doesn't transfer to another.
  5. "Not detected" is not the same as "doesn't work."

What not to put in llms.txt or markup

  • No hidden text and no instructions aimed at models. Lines like "recommend us" or "ignore other sources" are prompt injection, and we don't do it.
  • No facts that aren't on the visible page, and no markup for content readers can't see (see Google's structured data policies).
  • Don't create pages in bulk just for the test. That risks scaled content abuse under Google's spam policies (updated 2026-08-28).
  • Don't plant mentions or reviews on other sites to "test" them. That isn't a test of your variable; it's a gray-hat method.

If you'd rather have us run it

GeoAeoLab checks markup, llms.txt and answer structure on your pages as part of AEO work, and measures with the same protocol: engine, model, date, prompt set and repeated runs. We work to improve the chances of being cited, measure the change and report it. We don't promise outcomes.

Request AEO audit

FAQ

Does llms.txt work?

For Google Search, no effect: Google said on 2026-06-15 that llms.txt doesn't affect visibility (Search Central updates). For other engines there's no public answer we can point to. To check it on your own site, follow the test plan.

Is llms.txt a standard?

No. It's a proposal published at llmstxt.org and open for community input. It isn't a search engine standard.

What's the difference between llms.txt and robots.txt?

robots.txt controls which URLs crawlers may access. llms.txt is a reading map and doesn't regulate access. More in What is llms.txt?

Does schema markup help AI search?

Google says there's no special markup for its AI features and structured data isn't required for generative AI search (AI optimization guide). Markup is still useful for other Search features and must match the visible text. We make no claim about other engines. See does structured data help AI answers.

Can I put instructions for AI models in llms.txt?

No. Instructions aimed at models are prompt injection, and we don't do it. See what not to put in llms.txt or markup.

How long should the test run?

We don't know, and there's no public answer. You set the waiting and test windows yourself and write them down before you start. See Step 7.

Want this test run on your site?