llms.txt by platform
Pick your stack and follow a 3–4 step install guide. Free generator included, plus platform-specific troubleshooting and the gotchas we see most often in audits.
llms.txt for WordPress
WordPress doesn't expose root-level files by default. The cleanest install uses a small mu-plugin or your theme's functions.php to serve /llms.txt dynamically, with SFTP as a fallback for static files.
View setup guidellms.txt for Shopify
Shopify doesn't allow static root files. Use a redirect from /llms.txt to a hosted page with a stripped-down template, or serve via a Shopify App Proxy for full control over headers.
View setup guidellms.txt for Webflow
Webflow doesn't host arbitrary root files. The standard workaround is a CMS page bound to a custom 'llms-txt' template, or a Cloudflare Worker in front of your site that rewrites the response.
View setup guidellms.txt for Next.js
Next.js makes this trivial: drop the file in /public or expose a route handler that streams plain text. Both options take under five minutes.
View setup guidellms.txt for TanStack Start
Add a server route at src/routes/llms[.]txt.ts. The [.] escapes the dot so the file resolves to /llms.txt. Keep the body in a typed module for easy editing.
View setup guidellms.txt for Ghost
Ghost serves /public files via the theme, but a route file in your theme directory is cleaner and survives theme updates better.
View setup guidellms.txt for Squarespace
Squarespace doesn't allow root-file uploads. Use a URL mapping + a stripped page, or front the domain with Cloudflare for full header control.
View setup guidellms.txt for Wix
Wix doesn't allow root files. Use a Velo HTTP function (/_functions/llms) plus a domain-level redirect from /llms.txt.
View setup guidellms.txt for Framer
Framer Sites can serve custom files via redirects to a hosted text endpoint, but the cleanest setup uses Cloudflare in front of the Framer domain.
View setup guidellms.txt for HubSpot CMS
HubSpot supports custom file uploads via the Design Tools file manager. Upload llms.txt and map the URL with a 301 redirect.
View setup guidellms.txt for Astro
Astro serves anything in /public unchanged. Either drop llms.txt there or use an endpoint for dynamic content.
View setup guidellms.txt for Gatsby
Gatsby copies /static to the site root at build time. That's where llms.txt lives. Alternatively, use a serverless function on Gatsby Cloud or Netlify.
View setup guideWhat llms.txt actually is
A plain Markdown file at https://yourdomain.com/llms.txt. It opens with an H1 (your site name), a one-line summary in a blockquote, and a couple of sections (## Docs,## Optional) that link to your most important pages. AI engines read it to figure out which URLs to prioritize. Think of it as the executive summary you'd hand an analyst on day one.
The four ingredients of a good llms.txt
H1 with brand name
One line. No tagline, no marketing. Models use this as the canonical brand string.
Blockquote summary
1–3 sentences. What the site is and who it's for. Analyst brief, not ad copy.
## Docs section
Bulleted canonical pages with one-line descriptions: docs, API, pricing, security, integrations.
## Optional section
Secondary links: blog, case studies, careers. Rounds out the picture.
A complete llms.txt you can steal
Hypothetical B2B SaaS called Acme Invoicing. Swap in your own URLs.
# Acme Invoicing
> Acme Invoicing is a recurring-billing platform for European SaaS teams.
> We handle EU VAT, SEPA mandates, and dunning automation out of the box.
## Docs
- [Product overview](https://acmeinvoicing.com/product) — what Acme does and who it's for
- [Pricing](https://acmeinvoicing.com/pricing) — plans, limits, and EU VAT handling
- [API reference](https://acmeinvoicing.com/docs/api) — REST + webhooks, OpenAPI 3.1
- [Integrations](https://acmeinvoicing.com/integrations) — Stripe, HubSpot, Salesforce, Xero
- [Security](https://acmeinvoicing.com/security) — SOC 2 Type II, GDPR, data residency
- [Changelog](https://acmeinvoicing.com/changelog) — weekly product updates
## Optional
- [Customer stories](https://acmeinvoicing.com/customers)
- [Blog](https://acmeinvoicing.com/blog)
- [Careers](https://acmeinvoicing.com/careers)No marketing taglines, no keyword stuffing. Every line is a fact an analyst would want in the first sixty seconds.
Why a per-platform guide matters
"Put a plain-text file at the root" sounds trivial. In practice every CMS hides the root behind a different abstraction.
Plugins sometimes pass /llms.txt through a theme template, adding an HTML shell. Always verify with curl -I that response is text/plain — not text/html.
Doesn't serve raw root files. Workaround is theme template + 200 rewrite — not 301. Major AI crawlers treat 301 on /llms.txt as 'file missing.'
Custom-code workaround only fires on pages rendering with the site shell. Need a dedicated CMS item with custom URL, or external proxy at a subdomain.
Drop in /public works in dev but can get stripped by static optimizer if you have a wildcard 404 rewrite. Add a CI test that fetches /llms.txt.
Historically blocked plain-text files at the root. Current workaround: Cloudflare Worker or subdomain.
Easy: drop in source root. Watch for build pipelines that purge unknown extensions or rewrite Content-Type.
Pair llms.txt with the rest of the stack
Treat llms.txt like a sitemap, not a one-shot deploy
Fastest way to lose AI citations: ship a great file, redo your IA six months later, and forget to update. Engines that repeatedly hit 404s from a once-trusted file demote the whole domain.
Release checklist
Any PR that renames a URL listed in llms.txt must update the file in the same commit.
Weekly link check
Scheduled job that fetches every URL in llms.txt and alerts on non-200s catches 90% of drift before crawlers do.
Quarterly re-prioritization
'Most important pages' shifts with launches. A stale ## Docs list points engines at last year's priorities.
Three measurable shifts in 4–8 weeks
Tighter citation set
ChatGPT and Perplexity stop quoting random blog posts and start quoting the canonical pages you flagged.
More stable URLs
Cited URLs become more stable week over week, making brand-mention monitoring much easier.
More first-party links
Citations linking to your site rather than to aggregators or review sites go up — engines have a source they trust.
Generate, install, verify — all free
Build your llms.txt in the browser, follow your CMS guide, then scan to confirm AI engines can actually read it.
Open the generatorFrequently asked questions
What is llms.txt and why does my CMS need a guide?
llms.txt is a Markdown file at the root of your domain that tells AI engines (ChatGPT, Gemini, Claude, Perplexity) which pages on your site matter most. Every CMS handles 'put a plain-text file at the root' differently — WordPress uses a plugin or theme function, Shopify uses a redirect via a theme template, Next.js uses the /public folder, Webflow needs a custom code embed. The guides on this page give you the exact 3–4 step install path for each platform.
Do I need llms.txt if I already have a sitemap.xml?
Yes — they serve different jobs. sitemap.xml lists every URL on your site for search-engine indexing; it's exhaustive and machine-oriented. llms.txt is a short, curated, human-readable brief that tells AI models which of those URLs are the canonical sources of truth. AI engines have finite context — llms.txt is your one chance to direct attention.
Does ChatGPT actually read llms.txt today?
Adoption is uneven and growing. Several agent frameworks (LangChain, LlamaIndex, custom assistants) check for it first. Some major engines crawl it when present and ignore it when missing. The cost of publishing is essentially zero, the upside is being a default citation source — so the math is clear even before adoption hits 100%.
How do I verify my llms.txt is working?
Fetch https://yourdomain.com/llms.txt in a browser — it should return your Markdown file with content-type text/plain or text/markdown. Then run a full OptimAIze scan; it tests the file the way AI crawlers do, validates the structure, and confirms discoverability.
Can I block AI crawlers from my llms.txt?
llms.txt itself is an inclusion list, not an exclusion list. To block AI crawlers, use robots.txt with explicit Disallow rules for GPTBot, ClaudeBot, PerplexityBot, etc. — use our AI-aware robots.txt generator. Most sites should allow AI crawlers; blocking them forfeits citation traffic.