Lighthouse says 100. Reality says 60.
Between April 10 and April 14, 2026, we ran our free Framer SEO audit on 97 live Framer sites. Each one got crawled (up to 20 pages), run through Lighthouse, and checked against 31 SEO signals across 8 categories: heading structure, internal linking, image weight, schema markup, crawl health, and content depth.
The gap between what Lighthouse reports and what a real audit finds is not small. It is the whole story. (If you have already concluded Framer's SEO ceiling is too low for your project, you can self-host your Framer export as clean HTML in 45 seconds and recover full control of robots.txt, JSON-LD, hreflang, and bundle weight.)
Same 97 sites. Two very different stories.
SEO score
audit score
on the real audit
Fifty-eight of the 97 sites we audited scored a perfect 100 on Lighthouse SEO. Ninety-three scored 85 or higher. Most owners look at that green score and think the job is done. But the best site we audited on the real scale only got to 77. The worst came in at 48.
Why the gap exists. Lighthouse SEO checks plumbing: viewport tag, crawlable links, readable font size, a present <title>. Framer handles all of that cleanly. What Lighthouse does not check: whether your content is thin, whether five of your pages share the same title, whether your site ships 90 MB of images, whether your internal linking is a ghost town. Those are the signals Google actually ranks on.
This post is not a hit piece on Framer. Framer is a great design tool and most of what it produces is clean. But the SEO story is split into two halves that get blurred together: things Framer locks you out of, and things Framer silently lets slide. Both show up in the data.
The issues that actually show up (ranked)
Every row below is the percentage of 97 audited Framer sites where that check failed or warned. None of these are niche.
| Issue | Category | % of sites |
|---|---|---|
| Thin content (pages under ~100 words) | Content | 95% |
| Weak internal linking | Architecture | 94% |
| Broken H1 structure (missing or multiple) | Content | 92% |
| Lighthouse performance below 90 | Performance | 92% |
| Heavy individual images (>200KB) | Performance | 91% |
| Missing image alt text | Media | 89% |
| Keyword cannibalization | Architecture | 88% |
| Total image weight too high | Performance | 88% |
| Missing internal link opportunities | Architecture | 77% |
| No modern image formats (WebP/AVIF) | Performance | 77% |
| No JSON-LD structured data | Entity/AI | 71% |
| Oversized total page weight | Performance | 69% |
| Title tag issues (duplicate, too long, missing) | Metadata | 62% |
| Meta description issues | Content | 53% |
| Live 4xx/5xx pages in the sitemap | Crawl | 32% |
The top five hit more than 89% of sites. If you are on Framer today, there is a near-certain chance at least one of these is dragging down your rankings, and a high chance several are.
Content problems hurt more than platform problems
This is the finding that surprised us the most. Framer's real platform limits (no JSON-LD, no hreflang, the well-known favicon cache issue) are real and we will get to them. But the biggest drag on audit scores was not Framer at all. It was content.
- 95% of sites have at least one thin page, meaning under about 100 words of indexable text. Hero sections with a headline and three feature tiles do not count as content.
- 92% have broken H1 structure. Either no H1 at all, multiple H1s on the same page, or an H1 that does not describe what the page is about.
- 94% have weak internal linking. Pages that exist in the sitemap but are only reachable from the main nav, with zero in-body links from other pages.
- 88% have keyword cannibalization. Multiple pages targeting the same search intent, so Google cannot tell which one to rank.
And there is a pattern. Bigger sites score worse, not better.
| Pages crawled | Sites | Avg audit score |
|---|---|---|
| 1 – 3 pages | 9 | 70 |
| 4 – 7 pages | 22 | 60 |
| 8 – 15 pages | 16 | 65 |
| 16+ pages | 50 | 57 |
Every page you publish without a unique title, a real H1, genuine body copy, and internal links pointing to it drags the whole site's SEO baseline down. Framer's editor does not warn you about any of this. It does not tell you two pages share the same title. It does not flag a page with 47 words of real text. It does not ask why your case-study page is unlinked from the rest of the site.
The comfort in this is that these are the things you can fix without leaving Framer. The hard part is noticing them in the first place.
The image problem nobody tells you about
Across 97 sites, we counted 3,949 images totaling 1.98 GB. The average Framer site in our dataset ships 20 MB of images. The worst offender: 113 MB of images on a single site.
One in three individual images (1,290 of 3,949) is over 200KB. Only 23% of sites in our sample ship their images as WebP or AVIF. The rest are still on PNG and JPG, often at 2× or 3× the size they need to be.
Framer does push images through its CDN with some resizing, but the tooling does not nudge you toward modern formats, does not warn you when a single image is 5 MB, and does not lazy-load aggressively enough for Core Web Vitals to stay green on longer pages. The result: a site that looks light in the editor but weighs a lot more in the browser.
The practical fix: before uploading, run images through a compressor like Squoosh or ImageOptim and convert to WebP. A 3 MB hero PNG usually turns into a 250KB WebP with no visible quality loss. Do this once across your site and you will typically recover 50–80% of your image weight.
What Framer actually locks you out of
Now the parts that are genuinely on the platform. These show up in our audit data and have been asked about on Framer's community forum for two years. You cannot fix any of them inside the editor, no matter how much effort you put in.
- No per-page JSON-LD schema. Framer has no UI for structured data. Its custom-head injection applies site-wide, which defeats per-page schema like Article, FAQ, Product, or LocalBusiness. 71% of audited sites ship zero structured data.
- No hreflang. Multilingual sites have no clean way to tell Google which language version belongs to which audience.
- No granular robots.txt. You cannot add custom directives, block specific crawlers, or set crawl-delay.
- No server-level redirects. Only basic path aliases through the editor. 301s with proper chains, per-rule conditions, or domain-level rules are off the table.
- Favicon caching. The long-running complaint where Google keeps showing Framer's logo for weeks after you upload yours. You cannot control the cache headers.
- No llms.txt. You cannot drop a file at your web root, so the emerging standard for controlling AI crawlers is not available.
A sample of what people have been asking about on Framer's own community forum:
My favicon is not visible on Google. (Shows framer favicon instead)
Google indexing error: Redirect error
Selective CMS items to show in Google
SEO friendly implementation for 8,000+ detail pages
Each of these maps to a specific missing control. The last one is where it gets painful: if you run a content site on Framer's CMS with thousands of pages, proper internal linking structures, pagination hints, and crawl budget management all become critical. Framer exposes none of them.
The workarounds are doing the work Framer will not
The most revealing thing about Framer SEO is not the complaints. It is what people are building to route around them.
Using Cloudflare Workers to Extend Framer Basic for Advanced SEO and AI Readiness
Sharing an alternative technical solution for those using the Framer Basic plan and needing IndexNow (SEO)
How to add llms.txt file to my website
Cloudflare Workers that intercept HTTP responses to inject JSON-LD. Custom IndexNow implementations for notifying search engines of content changes. External llms.txt hosting stitched together with DNS rewrites. None of this is a checkbox in the editor. All of it requires developer skill, external services, and ongoing maintenance.
The cost math rarely works. Building one of these workarounds usually takes longer than exporting the site and hosting it yourself, where each feature on the list is a few lines of HTML you already own.
What exporting to code actually fixes
Exporting does not fix your content problems. Thin pages, broken H1s, weak linking, cannibalization all travel with you. What it does fix is every platform-level limit, because now you own the HTML and the server.
With exported code you control
- Full per-page meta and title control
- Custom JSON-LD schema on every page
- Complete robots.txt customization
- Sitemap priorities and exclusions
- Hreflang tags for multilingual SEO
- Canonical URL management
- Server-side redirects (301/302)
- Custom favicon with proper cache headers
- llms.txt and AI crawler directives
- Image compression and format choice
Locked behind Framer
- No per-page JSON-LD
- No custom robots.txt rules
- No hreflang support
- No sitemap priorities or exclusions
- No per-page noindex control
- No server-level redirect control
- Favicon caching issues
- No llms.txt access
- No crawl budget management
- Limited Core Web Vitals fixes
Once you have the code, adding FAQ schema is a few lines of JSON-LD. Setting up hreflang for three languages is three <link> tags. Customizing your sitemap is editing an XML file. Fixing a favicon takes 30 seconds because you control the headers. These are not hard engineering problems. They are basic web operations that every static host supports by default.
Framer's editor gets you most of the way and then stops. That is true for SEO, and it is true for several other areas. See our complete Framer limitations guide for the full list.
What to do right now
Two things to work on, in order.
1. Fix the content-level issues first. This is roughly 80% of the audit gap and none of it requires leaving Framer:
- One unique, descriptive
<title>per page, 30–60 characters - One real H1 per page that matches the title's intent
- At least 300 words of actual, readable body copy
- Internal links in body content, not just in the nav, pointing to your other relevant pages
- Alt text on every image
- Compress images and convert to WebP before uploading
2. Run the audit to find your specific issues. Every Framer site we audited had at least 8 findings from the list above. Most had 12 or more. The audit tool gives you a ranked fix list in about 30 seconds: letaiworkforme.com/framer-seo-audit.
3. Export when you hit the platform wall. If you need per-page JSON-LD, hreflang, granular robots.txt, or server-level redirect control, the only clean path is out of the Framer editor. Our Framer-to-code export preserves the design exactly and gives you the HTML/CSS/JS to self-host anywhere.
The honest path forward. Audit is free, fixing content is free, export is only for the platform walls.
See your site in the data
Run the same audit we ran on 97 sites. 31 checks, 8 categories, ranked fix list. No login, no payment.
Run a Free SEO AuditAlready know you need full control? Export your Framer site to code and own the meta, schema, and sitemap Google needs.
Frequently Asked Questions
Lighthouse SEO checks plumbing: viewport tag, crawlable links, font size, a present title tag. Framer handles those cleanly, which is why 58 of 97 Framer sites we audited scored a perfect 100. But Lighthouse does not check thin content, duplicate titles, weak internal linking, keyword cannibalization, or whether your site ships 90 MB of images. Those are the signals Google actually uses for rankings, and they are where Framer sites consistently fall short.
Across 97 Framer sites we audited in April 2026, the average real SEO score was 60 out of 100. The best site scored 77. Not a single site scored 85 or higher. Smaller sites (1 to 3 pages) averaged 70, while larger sites (16 or more pages) averaged 57. Every additional page without unique content, a clear H1, and internal links drags the whole site down.
Framer is not inherently bad for SEO. It generates clean HTML and produces a sitemap automatically. But it gives you just enough control to get started and not enough to finish. Framer has no UI for per-page JSON-LD schema, no hreflang support, no granular robots.txt editing, and no server-level redirects. 71% of Framer sites we audited ship zero structured data. Meanwhile, the issues that hurt rankings most (thin content, broken H1s, weak internal linking) are on the site owner to fix.
The most common causes in our audit data: pages with fewer than 100 words of real body text (95% of sites hit this on at least one page), duplicate title tags across multiple pages (62% had title issues), 4xx or 5xx status codes on pages listed in the sitemap (32% of sites), or the site is on a Framer subdomain rather than a custom domain. Check Google Search Console first. It usually tells you the specific reason before you need to assume it is a platform issue.
Framer has no native way to add JSON-LD per page. You can inject custom code in the site-wide head, but it applies to every page, which defeats the purpose of page-specific schema like FAQ, Product, or Article. The usual workarounds are a Cloudflare Worker that rewrites responses on the edge, or exporting the site to code so you own the HTML.