Playbook · Website platforms
Framer SEO: what's automatic and what isn't
Framer does more of the technical SEO for you than most builders. Pages are server-rendered to HTML, a sitemap and robots.txt are generated, canonical tags follow your connected domain, images are resized and served as AVIF, and AI agents can fetch a Markdown version of your pages. You set the titles, descriptions and social images, the noindex toggle, redirects (a Pro feature), JSON-LD through custom code and, on Pro, a custom robots.txt and an llms.txt.
What Framer doesn't do: update your redirects when you change a page path, give CMS pages their own titles unless you bind the page settings to CMS fields, or let you edit the sitemap. Plan limits cap collections and CMS items. Below: each control and the traps, the page families worth building in the CMS, how AI assistants see a Framer site and a 90-day plan.
Updated By the LaunchRanked team39 sources checked
Searches to plan around
Query patterns and the intent behind them. We don’t quote search volumes: check your own Search Console for the ones you already appear for.
“[problem] app”, “tool to [job]”
Category discoveryLanding pages written around the job, not the feature list. One long homepage can answer only one search; one page per job answers more.
“[competitor] alternative”, “[A] vs [B]”
SwitchingA comparison collection with real fields and a date last checked. Check your plan's CMS item limit first.
“[your brand] pricing”, “[your brand] reviews”
Brand checkPrices and plan limits in text, plus a title, description and social image on the page. Framer's site-wide defaults only cover pages you haven't customised.
“[studio] portfolio”, “hire a [role] designer”
HireCase studies written as text beat a grid of screenshots: the brief, the work and the result.
“[job] template”, “[topic] checklist”
ResourcesFree templates and checklists in a resources collection earn links and rank for queries a pricing page can't.
“how to [job]”, “[tool] tutorial”
LearningA blog collection answers these. Each item gets its own page from one template, so the template's title and description must pull from fields.
Page families that work
Use-case landing pages
/use-cases/investor-updates
Static pages, one job each, with a title, description and social image in Page Settings. A single homepage can't rank for five different jobs.
Blog and guides (CMS)
/blog/:slug
One CMS page template makes a page per item. Set the page path, bind {{Title}} and {{Description}} in Page Settings, and choose a cover-image field for the social preview, which Framer sizes at 1200 × 630 (Framer).
Comparison pages (CMS)
/compare/you-vs-incumbent
Fields for price, limits, integrations and the date you last checked, plus a plain section on who should pick the competitor.
Integration pages (CMS)
/integrations/slack
One item per integration you really support, with what syncs, the setup steps and the limits. Each page needs facts of its own.
Customer stories (CMS)
/customers/acme
The problem, what the customer did and the result, with their permission.
Changelog (CMS)
/changelog/2026-10
Dated entries, each describing a real change. They show buyers the product is maintained and give you pages to link to from posts and release emails.
Risky page types
CMS items with one field changed
A collection makes it easy to publish hundreds of pages that differ by a word. Google's scaled content abuse and doorway policies describe that pattern, and plan limits cap items anyway. The safe method is here.
City or industry pages copied from one template
Pages that exist only to catch a search, with the same body text, are the doorway pattern. Build one only when you have something specific to say about that place or sector.
AI-written posts published in bulk
Google's guidance on generative AI content says using AI to produce many pages without adding value for users may breach its scaled content abuse policy. It makes no difference whether items are typed into the Framer CMS or sent in through the Server API.
Technical pitfalls
CMS pages share one template: bind the fields
Put {{Title}} in a CMS page's Title and {{Description}} in its Page Description, using Plain Text fields you create, so each item has its own. Choose a cover-image field for the social preview. Site-level title and description defaults apply to everything you haven't overridden, and you must re-publish after any change (Framer).
Changing a path doesn't change your redirects
Framer says a sub-path changed from the canvas or the CMS isn't updated in your redirect settings, so add the redirect yourself. Redirects live in Site Settings > Hosting > Redirects, support * wildcards and :1 capture groups, and only cover paths inside your domain (Framer's redirect guide). The pricing page lists site redirects under Pro (Framer). Framer's hosting guide calls them permanent (308) redirects (Framer), and Google treats 301 and 308 alike as permanent (Google).
Sitemap and robots.txt: generated, with one override
Framer generates sitemap.xml and robots.txt for every published site, and nothing in its docs lets you edit the sitemap; submit it in Search Console. On Pro and Enterprise you can replace robots.txt by uploading your own file under Static files (Framer's sitemap guide, robots.txt guide). The page-level Search engines toggle adds a noindex meta tag and leaves robots.txt alone, so a page you block in robots.txt can't show Google its noindex (Framer, Google).
Canonicals and domains
Framer writes canonical tags from the domain you connected. A manual Canonical URL setting exists for sites served through a reverse proxy, and Framer ties it to the Advanced Hosting add-on (Framer, reverse proxy). Framer says .framer.app preview domains aren't indexed by search engines, and staging works by using that base domain as a preview once a custom domain is connected (Framer).
Structured data goes in by custom code
Add JSON-LD under Project Settings > Custom Code, placed in the head. On a CMS page fill the properties from fields with variables such as {{Title | json}}; the | json filter escapes values, and Created and Updated exist on every item. Use unsafeRaw only for markup you control, because it escapes nothing (Framer). Test the result in the Rich Results Test. Google stopped showing FAQ rich results in May 2026 (Google).
Images, speed and rendering
Framer makes 512, 1024, 2048 and 4096 px variants of each upload, converts most to AVIF (quality 80 by default, with WebP as a fallback) and lazy-loads images below about 1,000 px (Framer). Pages are server-rendered, with the most visited pre-rendered at publish and the rest on first request (Framer). You still write the alt text and set a poster for each video (Framer).
Infinite scroll can hide links
Infinite scrolling loads items with JavaScript, so crawlers that don't run it can miss the links; Google loads a viewport about 12,000 px tall. Framer suggests previous and next links on CMS pages and an HTML sitemap linked from the footer, and warns that a footer below loading content causes layout shift (Framer). Google's guide compares the pagination options (Google).
Plan limits on CMS and pages
Framer's pricing page lists 30 site pages, 2 CMS collections and 1,000 CMS items on Basic, where the limits are fixed, and 150 pages, 10 collections and 2,500 items on Pro, which can buy more up to 40 collections and 40,000 items (Framer). Check your plan before you plan a family of hundreds of pages.
Localization: paths, hreflang and an add-on
Localization adds locale prefixes to paths (/de) and can translate page paths and CMS slugs. Framer writes the lang and hreflang tags itself and you can't edit them; after in-app navigation they only update on a full reload. Translation locales are a paid add-on, and automatic locale redirects visitors from the default locale by browser language (Framer, paths, automatic locale, hreflang note).
How AI assistants answer questions in this category
Framer pre-renders pages to HTML, and also serves a Markdown version of optimised pages to AI agents that send an Accept: text/markdown header or add ?md to the URL, with no setup (Framer). Its generated robots.txt allows search and AI crawlers by default; you can restrict agents in site settings and, on Pro, replace robots.txt or add an llms.txt as static files (Framer's llms.txt guide, static files). OpenAI and Anthropic each document separate search and training crawlers, so decide per bot rather than all or nothing (OpenAI, Anthropic). Google's AI Overviews and AI Mode need only normal indexing, and Google says its Search ignores llms.txt (Google). Add ?md to any page URL to read what an agent gets.
What tends to earn a citation
- Plain-text pages that say what the product does, who it is for and what it costs, because agents read the pre-rendered text and the Markdown copy.
- JSON-LD on blog and comparison templates that matches the visible fields.
- Comparison and integration items with dated facts and named limits.
- Customer stories with a real problem, approach and result.
Check whether the AI crawlers you want can reach your site with our AI crawler checker.
Where links come from
Launch and startup directories
Pick maintained startup directories and skip any that sell links.
Free resources people reference
A template, calculator or checklist in a resources collection earns links from pages that would never link to a pricing page.
Integration partners
Tools you integrate with often run a partner list. Give them the exact page that describes the integration.
Podcasts and newsletters
A founder interview or a guest section in a niche newsletter links to a page you choose, which should answer what the audience asks.
Directory lists that fit Framer sites
Each directory is checked on its own site: price, link type and review process. We never sell links.
A 90-day plan
Days 1–30
Switch on and fix the base
- Connect your custom domain, publish, and check the live source for the canonical tag.
- Verify the site in Search Console with the meta tag (Framer can't take an HTML file) and submit sitemap.xml.
- Set the site title and description, then a title, description and social image on every page, and bind CMS page settings to fields.
- On Pro, add redirects for old paths. On Basic, plan paths so you need few.
Days 31–60
Build the CMS families
- Create one collection per family (blog, comparisons, customer stories) with the fields each item needs, and a page for it.
- Add JSON-LD to the CMS pages with variables, and validate it.
- Add previous and next links on CMS pages, and link every item from a hub.
- Set a minimum bar per item and keep the rest as drafts.
Days 61–90
Publish steadily and run the loop
- Add items at a steady pace, by hand or through Autopilot, and republish after changes. Autopilot uses Framer's Server API, which Framer's own FAQ still calls beta.
- Rewrite titles and descriptions by hand on pages at positions 5–20.
- Add ?md to key pages and read what AI agents get. Fix what is missing from the text.
- Review the Page indexing report by URL prefix and Search Console's Generative AI performance report.
What to watch in Search Console
The Performance report gives clicks, impressions, CTR and average position by query, page, country, device and date. Clicks from Google's AI features are counted there too, under the Web search type (Google), and since August 31, 2026 the Generative AI performance report shows which pages get impressions in AI Overviews and AI Mode.
- Indexed against published, per collection
- Filter the Page indexing report by URL prefix. Many “Crawled – currently not indexed” items in one collection means the pages look alike: fix it or leave it.
- “Page with redirect” after a path change
- Old URLs listed this way are expected. Old URLs listed as Not found (404) mean a redirect is missing.
- “Duplicate, Google chose different canonical than user”
- Framer's indexing troubleshooting guide lists this reason. It shows where two pages look alike enough that Google picked one.
- Pages at positions 5–20 with few clicks
- The cheapest wins. Rewrite the title and description in Page Settings, or in the template's fields if a whole collection is affected.
- Impressions in Google's AI features
- Search Console's Generative AI performance report counts impressions in AI Overviews and AI Mode. Autopilot tracks ChatGPT, Perplexity, Gemini and Claude, not Google's AI Overviews.
Frequently asked questions
Is Framer good for SEO?
Yes. Pages are server-rendered, the sitemap and robots.txt are generated, canonicals follow your connected domain and images are served as AVIF. You still set titles, descriptions, redirects (Pro), schema and the CMS bindings yourself, and plan limits cap collections and CMS items.
Can I edit robots.txt and the sitemap in Framer?
The sitemap is generated and not editable. robots.txt is generated too, but on Pro and Enterprise you can replace it by uploading a file under Static files, which also hosts llms.txt. The page-level Search engines toggle adds noindex and doesn't change robots.txt.
Does Framer redirect old URLs when I change a path?
No. Framer's help says a sub-path changed on the canvas or in the CMS isn't updated in your redirect settings. Add the redirect in Site Settings > Hosting > Redirects. Site redirects are a Pro-plan feature and only cover paths inside your domain.
Can Autopilot publish to Framer?
Yes, into a CMS collection you created in the project, not one a plugin manages. Give Autopilot the project URL and an API key from Site Settings > General. It matches a title field, a formatted-text body field and optional summary, image and date fields, and saves items as drafts or publishes the site after each article, skipping that publish if the project has other unpublished changes. It uses Framer's Server API, which Framer's developer FAQ describes as beta.
Sources
Checked on October 8, 2026. Search patterns and page advice are our own judgement from running this playbook; we don’t quote search volumes or third-party statistics.
- Framer Help: Guide to SEO features and tools
- Framer Help: Make your site readable by AI agents
- Framer Help: How to update page titles, descriptions, and social images
- Google Search Central: Spam policies for Google web search
- Google Search Central: Guidance on using generative AI content
- Framer Help: Localized page paths
- Google Search Central: URL structure best practices for Google Search
- Framer Help: How to setup redirects to maintain SEO ranking
- Framer: Pricing
- Framer Help: Guide to Framer's hosting infrastructure
- Google Search Central: Redirects and Google Search
- Framer Help: How to access your sitemap
- Framer Help: Access your robots.txt file
- Framer Help: Prevent pages from being indexed by search engines
- Google Search Central: Block Search indexing with noindex
- Framer Help: Set up a custom canonical URL
- Framer Help: How to self host using a reverse proxy
- Framer Help: Staging and versions
- Framer Help: Structured data through JSON-LD
- Google Search Central: Latest documentation updates
- Framer Help: How Framer optimizes images
- Framer Help: Infinite scrolling and SEO
- Google Search Central: Pagination best practices for Google
- Framer Help: Language attribute
- Framer Help: How does Automatic Locale work
- Framer Help: Hreflang tags don't change after switching language
- Framer Help: Add an llms.txt file to your site
- Framer Help: Static files
- OpenAI: Overview of OpenAI crawlers
- Anthropic: Does Anthropic crawl data from the web?
- Google Search Central: Optimizing your website for generative AI features on Google Search
- Framer Help: How to connect Google Search Console to your Framer site
- Framer Developers: Server API
- Framer Developers: Server API FAQ
- Search Console Help: Page indexing report
- Framer Help: Troubleshooting Google indexing issues
- Search Console Help: Generative AI performance report (Search)
- Google Search Central: AI features and your website
- Search Console Help: Performance report