# Framer SEO for ChatGPT, Perplexity and AI search

> Get your Framer site into ChatGPT and AI search: pre-rendered HTML, custom robots.txt, llms.txt upload, JSON-LD custom code and the auto sitemap.

Canonical page: https://getrankroot.com/builders/framer · Website builder · checked 2026-10-18

What Framer's own documentation says about how AI crawlers see sites built with it, and the exact settings for robots.txt, llms.txt, structured data and the sitemap.

## How Framer delivers pages to crawlers

**Pre-rendered HTML** (HTML without JavaScript (documented))

Framer's help center says Framer "delivers pre-rendered HTML to the browser", which helps search engines index content. It also warns that unresolved optimization warnings in your project can affect server-side rendering and sitemap generation, which can make indexing harder.

Why it matters: many AI crawlers don't run JavaScript. If your text only appears after scripts run, they may see an empty page.

## What we found on 246 Framer sites we track

Average AI visibility score 75/100 · 5% only show page text after JavaScript runs · 72% have no llms.txt (crawl up to 2026-10-18).

## Make your content readable without JavaScript

1. Publish your site and fix any optimization warnings Framer shows for the project. Framer says these can affect server-side rendering.
2. View the page source of the live site (or run the [free audit](https://getrankroot.com/#scan)) and search for your headline text.

## robots.txt: let AI search crawlers in

1. Framer generates a `robots.txt` for every published site. Open `yourdomain.com/robots.txt` to see it.
2. To replace it, upload your own `robots.txt` through static file hosting: in the project dashboard select your domain, open the **Files** tab, and upload the file at the root path `/`. This needs a Pro or Enterprise plan.
3. Your upload replaces the generated file completely, so copy over any rules you want to keep first.
4. Publish and check `/robots.txt` again.

Rules that let AI search crawlers in:

```
User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: Claude-User
Allow: /

User-agent: *
Allow: /

Sitemap: https://yourdomain.com/sitemap.xml
```

## Add llms.txt

1. Write the file with the [llms.txt generator](https://getrankroot.com/tools/llms-txt-generator).
2. In the Framer dashboard go to **Site Settings** > **Hosting** > **Files** and upload `llms.txt`. Static file hosting is on Pro (up to 50 files, or 500 with the Advanced Hosting add-on) and Enterprise plans.
3. Publish. Framer says the file is then served at `yourdomain.com/llms.txt`. Check it with the [llms.txt validator](https://getrankroot.com/tools/llms-txt-validator).

## Add JSON-LD and head code

1. Open **Project Settings** > **Custom Code**, add your code, choose where it's placed, and pick specific pages if it shouldn't run site-wide.
2. Framer's JSON-LD guide says to wrap structured data in a `<script type="application/ld+json">` tag in the site's head using Custom Code.
3. On CMS detail pages, reference fields with `{{Title | json}}` style variables. `{{Created | json}}` and `{{Updated | json}}` are built in. Avoid `unsafeRaw` unless you're sure the field holds valid JSON, because Framer says it isn't escaped.
4. Publish and test with Google's Rich Results Test.

## Sitemap

1. Framer generates a sitemap automatically for every published site and updates it when you publish.
2. Find it at `yourdomain.com/sitemap.xml` and submit it in Google Search Console.

## Common mistakes

- Uploading a custom robots.txt that drops rules from the generated one. The upload replaces Framer's file entirely.
- Ignoring optimization warnings. Framer says they can affect server-side rendering and sitemap generation.
- Using `unsafeRaw` for CMS fields in JSON-LD. It isn't escaped, so a stray quote can break the markup or the page.
- Trying to upload llms.txt on a plan without static file hosting. Framer lists it for Pro and Enterprise.

## FAQ

### Is my Framer site visible to ChatGPT?

Framer says it delivers pre-rendered HTML, so crawlers can read your pages without running JavaScript. Check that your robots.txt doesn't block AI crawlers and run the free audit on your live URL to confirm.

### Can I add llms.txt to Framer on the free plan?

Framer's llms.txt guide relies on static file hosting, which it lists for Pro and Enterprise plans.

### Does Framer make a sitemap?

Yes. Framer generates /sitemap.xml automatically for every published site and keeps it updated when you publish.

### How do I add schema markup to Framer?

Use Custom Code to add a <script type="application/ld+json"> block. On CMS pages you can fill values from fields with the {{Field | json}} syntax.

## Sources

- [Framer: Add an llms.txt file to your site (read 2026-10-18)](https://www.framer.com/help/articles/llms-txt-framer/)
- [Framer: Access your robots.txt file (read 2026-10-18)](https://www.framer.com/help/articles/how-can-i-access-the-robots-txt-file/)
- [Framer: How to access your sitemap (read 2026-10-18)](https://www.framer.com/help/articles/how-can-i-access-the-sitemap-xml-file/)
- [Framer: Address optimization warnings in your project (read 2026-10-18)](https://www.framer.com/help/articles/why-it-s-important-to-fix-optimization-warnings-in-your-project/)
- [Framer: Structured data through JSON-LD (read 2026-10-18)](https://www.framer.com/help/articles/structured-data-through-json-ld/)
- [Framer: How to add custom code (read 2026-10-18)](https://www.framer.com/help/articles/how-to-add-custom-code/)

RankRoot is not affiliated with Framer. Check a live site: https://getrankroot.com/ or `GET https://getrankroot.com/api/audit?url=example.com`. Other builders: https://getrankroot.com/builders.md
