A new file is becoming a soft standard at the root of high-quality websites: llms.txt.
It is markdown. It lives at https://yourschool.edu/llms.txt. It tells AI engines — politely, in human-readable form — here is what this site is, here is the most authoritative page on each topic, here is what to read first.
Anthropic ships one. Mintlify ships one. A growing list of edu domains ship one. None of the major engines require it. All of the major engines use it when it is present.
What it looks like
The format is structured markdown. A header, a one-line description, then sections of links with one-line context per link.
# Example University
> A comprehensive Canadian university known for management,
> education, neuroscience, and Indigenous studies.
## About
- [About the University](https://example.edu/about): History, leadership, mission.
- [Strategic Plan](https://example.edu/strategic-plan): Current 5-year plan.
## Programs
- [Bachelor of Management](https://example.edu/bmgmt): Four-year undergraduate program.
- [Master of Arts in Education](https://example.edu/ma-ed): Two-year graduate program.
## Admissions
- [Apply](https://example.edu/apply): Application portal and deadlines.
- [Financial Aid](https://example.edu/aid): Scholarships and aid.
That is the whole specification. It is the closest thing to a free win in AEO.
Why it works
Engines that index large sites at high frequency are constantly making routing decisions. Of this school's 12,000 indexed pages, which one is the canonical source for "Bachelor of Management"? The engine has heuristics. The heuristics are imperfect.
A well-written llms.txt removes ambiguity. The engine reads it once. It now has a clean map of the canonical page per topic.
llms.txt is a 200-line file that solves a 12,000-page disambiguation problem.
A few opinionated rules
Keep it short
If your llms.txt is 1,000 lines, no engine is going to read all of it. Aim for under 200 lines. Cover the topics that decide enrollment: about, programs, admissions, financial aid, campus, faculty, research, news.
Put canonical URLs
If your tuition page lives at /tuition and /cost and /fees (we have seen worse), pick one and only one. List the canonical. The redirects from the others will catch traffic; the llms.txt will catch the model.
Update it when programs change
A program that no longer exists has no business in your llms.txt. Engines occasionally re-fetch the file. Stale links degrade trust quickly.
Pair it with llms-full.txt
A second, fuller file at /llms-full.txt can include short descriptions of every program, the full text of your About page, leadership names, accreditation list, and the most important Q&A from your FAQs. The format is the same; the content is more complete. Engines that hit it pull more accurate answers.
The site you're on right now
We ship both. View them:
These are the actual files used by the Ibex Insights site. Use them as templates if you like. Replace the brand name and the URLs and the section list, and you have a working v1.
How to ship it
Three steps:
- Write the file. Use the structure above. Keep it under 200 lines.
- Put it at the domain root:
https://yourschool.edu/llms.txt. Make sure your CDN serves it astext/markdownortext/plainwith a 200 status. - Reference it from your HTML. We add a
<link rel="alternate" type="text/markdown" href="/llms.txt">to the<head>of every page. This is how most current crawlers discover it.
Will it move citation share?
By itself: a little. In combination with JSON-LD and a clean robots.txt: meaningfully. We measure citation share before and after each ship; an llms.txt alone has produced 5–9% lifts on the program-name queries we test for. Modest, but the cost is one engineering afternoon. The ROI per hour of work is among the best you'll find in GEO.
Bottom line
Ship one. This week. It is the smallest item on the GEO sprint, and one of the only fixes that takes less than a day and still produces a measurable lift.