How to add llms.txt to Framer
Framer is a no-code host with no /public folder: uploaded files go to a hashed CDN path, and any page you build is served as HTML. So a spec-compliant text/plain file at the domain root needs a thin layer in front of Framer. These three methods cover it — no code inside Framer required.
Generate the file first — paste your Framer site URL and get a spec-compliant llms.txt from your real pages. You'll paste its contents into one of the methods below.
Generate my llms.txt →Method A — Cloudflare Worker (best, if your DNS is on Cloudflare)
Route your domain through Cloudflare (proxied / orange cloud) and add a Worker scoped to /llms.txt so it answers before the request reaches Framer:
// Cloudflare Worker — route: yoursite.com/llms.txt
export default {
async fetch(request) {
const body = `# My Company
> One-line description of what you do.
## Pages
- [Home](https://yoursite.com/): overview
- [Product](https://yoursite.com/product): what it does
- [Pricing](https://yoursite.com/pricing): plans
`;
return new Response(body, {
headers: { "content-type": "text/plain; charset=utf-8" },
});
},
};Add a Worker route for yoursite.com/llms.txt only — every other path flows through to Framer unchanged.
Method B — Redirect to a hosted file
Not on Cloudflare? Host the plain-text file somewhere that serves it raw (a GitHub Gist raw URL, an R2/S3 bucket, a one-file Netlify deploy) and redirect /llms.txt to it. Framer's Site Settings → Redirects can add the rule. It's a redirect rather than a same-origin file, so treat it as a fallback — a Worker (Method A) is cleaner and keeps the file on your own domain.
Method C — Front Framer with a reverse proxy
If you already proxy Framer through Netlify, Vercel, or Nginx, serve /llms.txt from that edge and forward the rest to Framer. Same mechanism as the Worker, at whatever proxy you already operate.
What to watch for
- Don't use a Framer page — a page pathed
llms.txtrenders as HTML, not text/plain, and won't validate. - Content type is the whole point — you want a raw
text/plainbody. Methods A and C guarantee it; a redirect (B) depends on the destination. - Don't block AI bots — check the robots.txt Framer generates and any Cloudflare bot rules if you added a Worker.
Generate llms.txt from your URL, then paste it into a Worker (A) or host-and-redirect (B).
Try the free llms.txt generator →Related: llms.txt for Webflow · llms.txt for WordPress · How to create llms.txt · Do AI crawlers read it?