12 platforms covered

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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.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 guide

llms.txt for Astro

Astro serves anything in /public unchanged. Either drop llms.txt there or use an endpoint for dynamic content.

View setup guide

llms.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 guide
60-second version

What 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.

Anatomy

The four ingredients of a good llms.txt

1

H1 with brand name

One line. No tagline, no marketing. Models use this as the canonical brand string.

2

Blockquote summary

1–3 sentences. What the site is and who it's for. Analyst brief, not ad copy.

3

## Docs section

Bulleted canonical pages with one-line descriptions: docs, API, pricing, security, integrations.

4

## Optional section

Secondary links: blog, case studies, careers. Rounds out the picture.

Worked example

A complete llms.txt you can steal

Hypothetical B2B SaaS called Acme Invoicing. Swap in your own URLs.

/llms.txt
# 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.

Platform gotchas

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.

WordPress

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.

Shopify

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.'

Webflow

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.

Next.js / TanStack / Astro

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.

Squarespace & Wix

Historically blocked plain-text files at the root. Current workaround: Cloudflare Worker or subdomain.

Ghost / Jekyll / Hugo

Easy: drop in source root. Watch for build pipelines that purge unknown extensions or rewrite Content-Type.

Companion tools

Pair llms.txt with the rest of the stack

Maintenance

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.

1

Release checklist

Any PR that renames a URL listed in llms.txt must update the file in the same commit.

2

Weekly link check

Scheduled job that fetches every URL in llms.txt and alerts on non-200s catches 90% of drift before crawlers do.

3

Quarterly re-prioritization

'Most important pages' shifts with launches. A stale ## Docs list points engines at last year's priorities.

What changes after you ship

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 generator

Frequently 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.