Framer SEO
I would not trust Framer's default SEO settings. You need to manually configure crawlability, metadata, and structured data to get indexed properly.
What I’d do first
- Submit your Framer XML sitemap to Google Search Console and verify it covers all pages you want indexed.
- Set a canonical tag on every page, especially if you use the same component across multiple routes.
- Write unique title tags and meta descriptions for each page; Framer does not auto-generate them.
- Optimise images by compressing them and using next-gen formats; large hero images are the main LCP killer.
- Use heading hierarchy with one H1 per page and H2/H3 for scannable sections; avoid skipping levels.
The path I'd take
I start every Framer SEO project the same way: I check whether the site is actually being indexed. I open Google Search Console, look at the coverage report, and see if any pages are showing as "Excluded" or "Submitted but not indexed". Last month I worked on a Framer portfolio site that had 30 pages but only 5 in the index. The culprit? The default robots.txt was blocking some paths, and the XML sitemap had never been submitted. I fixed both within an hour and watched the index count climb to 25 over the next two weeks.
After that, I audit the on-page metadata. Framer gives you full control over title tags, meta descriptions, and URL slugs, but many designers leave them blank or use the default page name. I set a rule: every page must have a unique title tag under 60 characters and a meta description between 150 and 160 characters. I also check that the URL is descriptive and short — /projects/redesign not /page-2-a3b4c5.
Next comes canonical tags. Framer allows you to set a canonical URL per page, and I do so on every single page. This is especially important when you have the same component rendered on multiple routes — for example, a testimonial block that appears on both the homepage and an about page. Without a canonical tag, Google might treat those as [duplicate content](/duplicate-content/). I use the most representative URL as the canonical and self-referencing on the rest.
Then I look at Core Web Vitals. I run each page through PageSpeed Insights and focus on Largest Contentful Paint (LCP). On Framer sites, the main offender is almost always a hero image. I compress images aggressively, sometimes down to 80% quality, and use WebP or AVIF where supported. I also ensure that any custom code or embeds are deferred until after the main content loads. This brought the LCP on one client's site from 4.2 seconds to 1.8 seconds.
Finally, I add structured data. Framer does not have a built-in schema editor, so I inject JSON-LD via the custom code head tag. I use [Schema Markup](/schema-markup/) for the page type — Article for blog posts, Product for e-commerce, LocalBusiness for service pages. I test each one with the Rich Results Test before publishing. Doing this gave one law firm site a 15% click-through rate improvement in the SERPs.
Watch-outs
The biggest trap I see people fall into is assuming that because Framer is a modern tool, it automatically handles SEO. It does not. By default, your robots.txt might allow everything, but it also might not block staging or duplicate environments. I once inherited a Framer site where the client had accidentally published the staging version, and the robots.txt was set to Disallow: /. That blocked the entire site for three weeks before anyone noticed. I now always check the live robots.txt and ensure it has a correct Sitemap: directive pointing to the XML sitemap.
Another watch-out is heavy client-side rendering. Framer uses React under the hood, and some components — especially animations and third-party widgets — can delay content visibility. If a search engine bot cannot see the text immediately, it may treat the page as thin content. I test this by using the "URL Inspection" tool in Google Search Console to see what Google renders. If I see a mostly blank page, I know I need to move critical content to server-rendered components or use pre-rendering.
Core Web Vitals are another minefield. Cumulative Layout Shift (CLS) is common on Framer sites because of dynamic image loading and web fonts. I set explicit width and height attributes on all images and preload fonts to reduce layout shifts. I also use font-display: swap to avoid invisible text while fonts load. I check the CLS score after every content change; a score above 0.1 is a red flag.
Finally, be careful with internal linking. Framer makes it easy to link to pages, but it does not enforce a logical structure. I manually create a sitemap in my spreadsheet and then build internal links between related pages. For example, a blog post about "Framer SEO" should link to [Technical SEO](/technical-seo/) and [Core Web Vitals](/core-web-vitals/). I also add a breadcrumb navigation on every page to help users and bots understand the site hierarchy. Without these links, deep pages might never be crawled.
What I got wrong
I used to think that Framer's SEO was essentially plug-and-play. I was wrong. My first Framer project, a two-page landing site, I just set the title and meta description and submitted the sitemap. I assumed Google would index it quickly. Two months later, the site was still only showing one page. I finally checked the robots.txt and saw that a default rule was blocking the /blog/ directory. I had not even looked at it because I assumed the platform would generate a correct file. That was a painful lesson: always verify the defaults.
Another mistake was over-optimising for keywords. I stuffed the homepage with variations of "best Framer SEO agency" and ended up with a meta description that read like a keyword list. Google rewrote it in the SERPs anyway, and my click-through rate dropped. I now write for humans first and use keywords naturally in the title and first paragraph, but I never force them.
I also neglected mobile performance. Framer's visual editor lets you design for desktop and mobile separately, but I assumed the desktop version would be used by most visitors. On one client's site, 70% of traffic came from mobile, and the mobile version had a 3.2 second LCP. I had not optimised the mobile hero image. I now test on a real mobile device, not just the responsive view in the browser, before publishing.
Finally, I ignored structured data until a client asked why their rich snippets disappeared. I had added Article schema to blog posts, but I had not updated the JSON-LD when the content changed. The old schema was still in the head, conflicting with the new text. I now set up a custom code snippet that pulls the title and description dynamically from the page settings, so the schema always matches the visible content. This is a small change but it prevents stale data from hurting your snippet appearance.
Next step
Quick answers
Does Framer automatically generate an XML sitemap?
Yes, Framer generates a sitemap at /sitemap.xml by default, but it only includes published pages. You still need to submit it to Google Search Console. I also check that the sitemap excludes any draft or staging pages.
Can I add schema markup to a Framer site?
You can add JSON-LD structured data by placing it in the site-wide custom code head section or per-page in the page settings. I recommend using a plugin like Framer Schema or writing the JSON-LD manually. Test with Google's Rich Results Test before publishing.
How do I handle pagination in Framer?
Framer does not have built-in pagination support, so you must build it manually using collections and custom code. Use rel="next" and rel="prev" tags in the head to indicate pagination sequences. Also ensure each page has a unique canonical URL and that the first page is not treated as a duplicate.
Sources
Primary documentation is linked directly. Anything commercial is marked nofollow.
- Google Search Central — Primary source for crawlability, indexability, metadata, and structured data guidance.
- Framer Blog: SEO in Web Design — Official Framer advice on SEO-friendly design, including structure, speed, and headings.
- Google PageSpeed Insights — Used to evaluate Framer performance issues that affect SEO, especially Core Web Vitals.
- Google Search Console Help — Primary tool guidance for indexing, sitemap submission, and diagnosing search performance issues.
Notes from Callum Bennett.