Dark green AIScan fix guide cover reading Publish a valid llms.txt on Framer, with abstract emerald and coral panels on the right and the label check C2, content.
Dark green AIScan fix guide cover reading Publish a valid llms.txt on Framer, with abstract emerald and coral panels on the right and the label check C2, content.
AI Readiness

How to publish a valid llms.txt on Framer

llms.txt on Framer is a Pro-plan upload under Site Settings, Hosting, Files. The exact steps, the MIME trap, and how to verify it with AIScan check C2.

AAsif Rahman September 2, 2026 7 min read
#llms.txt#Framer#AI readiness#content#AI crawlers

This guide covers C2 · Content.

Table of contents

Verified on 2 September 2026. Every path, plan limit and status code below was either read from Framer's own help centre or measured live against www.framer.com on that date.

On Framer, llms.txt is not a file you commit and it is not a text box you fill in. It is an upload in a hosting panel, and that panel is switched off below a certain price. Get the plan and the path right and the file works on the first publish. Get either wrong and Framer returns a clean 404 that tells you nothing about why.

Quick summary

QuestionAnswer
Where does the file live?Uploaded under Site Settings → Hosting → Files, with the path set to the domain root
Which plans can do it?Pro and Enterprise only. Free and Basic sites cannot host a static file at all
What formats are accepted for llms.txt?TXT for a standard file, JSON for structured data
Does it work before publishing?No. The file appears only after the site is published
Does Framer generate it for you?No. Framer auto-generates robots.txt and sitemap.xml, not llms.txt
Which AIScan check is this?C2, in the content dimension
Time to fixAbout ten minutes, once you are on a plan that allows it

The plan gate comes first

This is the part that wastes an afternoon if you skip it. Framer's static files article says, in its own words, "This feature is available on Pro and Enterprise plans." There is no workaround. Framer's URL handling gives you nothing to redirect to, and the Markdown twin of a page is not a substitute for an index file.

The llms.txt article and the static files article disagree slightly on wording, so here is the honest version of what each one states:

SourceWhat it says about plansLast updated
Framer help, "Static files""available on Pro and Enterprise plans"10 August 2026
Framer help, "Add an llms.txt file to your site"Pro and Enterprise in the body, and again in its own FAQ10 August 2026
Framer pricing, snapshot in Framer's own llms.txtPro is $30 per month, billed monthly30 August 2026

Framer's file settings also moved recently. According to the same article, "These settings used to live in the Domains dashboard and are now in your project's Site Settings, under Hosting." Older tutorials still point at the Domains dashboard, so ignore them.

Upload the file in Site Settings

Write the file first, locally, then upload it. The steps below are Framer's, verbatim in order:

  1. Open your dashboard.
  2. Open Site Settings.
  3. Go to Hosting → Files.
  4. Click the Add button.
  5. Upload your file.
  6. Set the file path. Framer's step wording is "do not include the file name", and its worked example is a path of /pdfs producing example.com/pdfs/example.pdf. Its FAQ then answers the root case directly: "You can upload a file and assign it to a root-level path such as /ads.txt or /llms.txt." So upload a file named llms.txt and give it the root path.
  7. Publish the site.

Two constraints worth knowing before you upload. According to the same article, Framer accepts TXT, CSV, JSON, XML, MD, PDF, JS and several media types, but delivery depends on the MIME type: text/plain, text/xml, application/json, application/pdf and the image, audio and video families render in a browser, and in Framer's phrasing "all other file types will automatically download instead of rendering." Upload Markdown with an .md extension and a crawler gets a download prompt rather than a body. Use .txt.

The same panel is how Framer does .well-known files. The help URL well-known-files now permanently redirects to the static files article, and setting the path to /.well-known puts a file there. That is the door for security.txt, assetlinks.json and an AI plugin manifest on a Framer site.

Here is the part no other builder in this series can offer. Framer already serves a Markdown version of every optimised page at the same URL, either through an Accept: text/markdown request header or by appending ?md to the address. Measured on 2 September 2026, www.framer.com/pricing with that header returned 200, text/markdown; charset=utf-8, 11,651 bytes, opening with YAML front matter.

So the link targets inside your llms.txt should carry ?md. Framer does this in its own file: fetched from www.framer.com/llms.txt on 2 September 2026 it is 5,900 bytes, and it points at https://www.framer.com/ai/?md and its siblings rather than the HTML pages. Its own header line tells an agent to "follow a link instead of guessing paths". Most llms.txt files in the wild link to HTML and make an agent parse a page it did not need to parse. On Framer that work is already done.

Keep the file itself plain: an # H1 with your site name, a > blockquote summary, then ## sections holding - bullets of [name](url): description. If you would rather start from a generated draft, the AIScan llms.txt generator writes a spec-shaped file you can edit and upload. The common mistakes are catalogued in our llms.txt validator guide.

One caveat, stated in Framer's own AI agents article: "Markdown is only generated for optimized pages." Verified on 2 September 2026, that is not theoretical. Framer's own help articles are not optimised, and Accept: text/markdown on /help/articles/static-files/ returns text/html. Test any URL before you put a ?md version of it in your index.

Verify it landed

Run the scan first. It answers the question the file exists to answer, and it checks the rest of the content dimension in the same pass:

npx aiscan-cli yoursite.com

Read the C2 row. C2 passes when the file exists, returns 200, and contains an H1, at least one ## section and Markdown links. A blank file at the right URL fails it.

By hand, if you prefer:

curl -sI https://yoursite.com/llms.txt
# expect: HTTP/2 200 and content-type: text/plain
What you seeWhat it means
200 and text/plainWorking. Framer serves it from the edge with server: Framer
404, tiny bodyThe upload is missing, the path is wrong, or the site has not been published since
A download prompt in the browserWrong extension. Re-upload as .txt
200 but empty contentThe file uploaded is empty; C2 will still fail

Framer returns a real 404 for a missing root file, which is more helpful than it sounds. Verified on 2 September 2026, www.framer.com/llms-full.txt returned 404 with a ten-byte body, while an unknown page path returned the site's own 404 page. Framer does not answer 200 with the homepage the way Ghost does, so a status-code check on Framer is trustworthy.

Where AIScan fits, and where it doesn't

C2 can tell youC2 cannot tell you
The file exists at the root and returns 200Whether the pages it lists are your important pages
It has an H1, ## sections and Markdown linksWhether the ?md targets you listed are optimised
It is reachable without JavaScriptWhether the descriptions are accurate today
Which of the other content checks pass alongside itWhether your plan will still allow file hosting next month

The rest of the dimension is documented on our content checks page.

Your next ten minutes

Draft the file, check your plan, upload it at the root path, publish, then scan. If Framer is not your only stack, the same check behaves differently elsewhere: on Webflow the upload is free but invisible on the staging domain, and on Squarespace there is no file at all, only a settings field. Whether the file changes anything is a separate question, and we measured it in does llms.txt actually work.

Run npx aiscan-cli yoursite.com, read row C2, and browse the rest of the fix guides at aiscan.site/guides.

Frequently asked questions

Which Framer plans can host an llms.txt file?

Pro and Enterprise. Framer's static files article states the feature is available on Pro and Enterprise plans, and its llms.txt article repeats that in its own FAQ. Free and Basic sites cannot host a static file at the domain root at all, so there is no workaround on those tiers. Framer's pricing snapshot, dated 30 August 2026 in Framer's own llms.txt, puts Pro at $30 per month billed monthly.

I uploaded the file and /llms.txt still returns 404. What went wrong?

Three causes, in order of likelihood. You have not published the site since uploading, and Framer only serves the file after a publish. The path field is wrong, so the file is sitting at something like /files/llms.txt instead of the root. Or the site is on Free or Basic, in which case the Files panel would not have accepted the upload in the first place. Re-open Site Settings, Hosting, Files, confirm the path, and publish again.

My browser downloads the file instead of showing it. How do I fix that?

Framer decides between rendering and downloading by MIME type. Its static files article lists text/plain, text/xml, application/json, application/pdf and the image, audio and video families as the types that render, and says all other file types will automatically download instead. A file uploaded with an .md extension falls outside that list. Re-upload the same content as llms.txt with a .txt extension and it will render as text/plain.

AIScan says C2 fails but the file loads in my browser. Why?

C2 requires more than a 200. The file must contain an H1, at least one ## section and Markdown links. An empty file, a file that is only a paragraph of prose, or a file that lists bare URLs without link syntax will all load fine in a browser and still fail C2. Open the file and check it has the three structural elements before assuming the hosting is broken.

Does Framer generate llms.txt automatically like robots.txt and sitemap.xml?

No. Framer generates robots.txt and sitemap.xml for every published site automatically, and its AI agents article confirms that. llms.txt is not in that set. It is a file you write and upload, and nothing regenerates it when you add a page or a CMS entry, so it needs a manual refresh whenever your site structure changes meaningfully.

Should the links inside my llms.txt point at ?md URLs?

On Framer, yes, and this is the platform's real advantage. Framer serves a Markdown version of every optimised page at the same URL through an Accept: text/markdown header or a ?md query parameter. Framer's own llms.txt links to ?md addresses throughout. The one caveat comes from Framer's own documentation: Markdown is only generated for optimised pages, so test each URL before listing its ?md form.

Can I put other files at /.well-known on Framer?

Yes, through the same panel. Set the path to /.well-known and the file is served from there with its name appended. Framer's own documentation lists security.txt, assetlinks.json, apple-app-site-association, apple-developer-merchantid-domain-association, atproto-did and an AI plugin manifest as common uses. The help URL for well-known files now permanently redirects to the static files article, because they are one feature.

How do I check whether my Framer site is serving the file to crawlers that do not run JavaScript?

Run npx aiscan-cli yoursite.com and read the C2 row, which fetches the file the way a crawler would. By hand, curl -sI https://yoursite.com/llms.txt should return 200 with content-type: text/plain. Framer returns a genuine 404 for a missing root file rather than the homepage, so unlike some hosts a plain status check on Framer can be trusted.

Related guides