seojuice

How I Audit a Framer Site Handed Over by a Designer

Lida Stepul
Lida Stepul
May 13, 2025 · 12 min read

TL;DR: Framer's SEO posture changed materially in 2024-2025: SSR by default, CMS collections with real routing, per-page metadata controls, CDN-native AVIF images, and an in-product redirect manager all shipped. But one thing the platform-comparison posts get wrong: Framer has no structured-data panel. Schema is still hand-injected JSON-LD via Custom Code. So the 2026 handoff audit is shorter than the old checklists, but the two checks that still need real work are the two designers skip most: per-page metadata and schema. The rest is the audit I actually run when a Framer build lands on my desk, in the order the problems usually surface.

The handoff that taught me where to look first

A founder forwarded me a Framer build a designer had just delivered. Studio site, services, a short case-study collection, a blog with a dozen posts. The visuals were good and the founder loved it. They wanted me to "just confirm the SEO is fine before we point the domain at it."

It was not fine. I viewed source on the homepage, and the canonical tag pointed at the Framer staging URL. So did the about page. So did every blog post. The designer had built the whole thing in the preview environment, let the editor auto-fill the canonicals, and never swapped them for production. If that had shipped, Google would have spent weeks trying to index a staging subdomain that returns nothing to a logged-out crawler, and the real domain would have looked like a thin duplicate of a site nobody could reach.

Here's the honest part: I almost missed it. My instinct on a clean-looking build is to go straight to the fun stuff, the link graph and the schema, and I was three pages into the link audit before something nagged me to view source on the canonical. That reordering is now permanent: on a Framer handoff, canonical and per-page metadata come first, because they fail silently and across the whole site at once.

The check designers skip that costs the most rank

Per-page metadata. That's the one. The staging canonical above is the scariest version; the everyday version is quieter and just as common. On that studio site, five sample titles told the story in thirty seconds: "Studio Name | Home", "Studio Name | About", "Studio Name | Pricing", and so on. The title pattern got set once at the site level, the per-page overrides left empty, and every page now competes with an identical leading phrase that buries the word a searcher actually typed.

I lead with this because it breaks rankings faster than anything else on a Framer handoff, and it's the cheapest to fix. Four fields per page, all in the publish panel's per-page settings, not buried in code. Title: unique, leading with the page-specific phrase, under about 60 characters so it doesn't truncate (a display cutoff, not a ranking threshold). Meta description: unique, written for click-through, around 150-160 characters; Google rewrites these often, so treat it as a click-pitch for when it survives. Canonical URL: pointing at production, not staging, for the reason the studio site demonstrated. OG image: page-specific where it matters, not the site-wide default on every share.

The fix is one editorial pass. For that 20-some-page studio site it was a little over an hour: list the ten pages by intended traffic, write the four fields for each, paste them in, fix the canonical on the collection template so every blog post inherits the production URL. The founder watched me do the first three pages, then said the part designers and founders both miss: "I assumed that filled itself in." It mostly doesn't. The OG image piece is the follow-on if share imagery is core.

What Framer actually does between publish and crawl

The historical objection to Framer, the one operators still ask me about, was that it shipped client-rendered JavaScript and Google saw an empty shell. That's closed in 2024. But it's worth seeing where, because that's where verification lives.

Framer request-to-crawler render path: browser request, Framer edge, server-rendered HTML response, CDN delivery, crawler view
The render path on a 2024+ Framer site. The historical JS-rendering concern is closed at stage three; verify at stage five.

The render path is five stages: a crawler requests a URL, Framer's edge resolves it to a record, Framer's server renders the full HTML into the initial response, the CDN serves it, and the crawler indexes the same HTML a human sees. Google's position has been consistent for years: server-rendered and client-rendered output are different delivery shapes, not different ranking classes; the pipeline just needs the content present when the page is fetched. Framer's 2024 default puts it in the initial response, the stage that closes the concern.

On that studio handoff the rendering was fine, and I confirmed it the way I always do: curl -A "Googlebot" <url> against three sample pages (home, a case-study detail, the deepest blog post), then grep the body for a phrase only visible after scroll. The text was all there. Two minutes. The one time I've seen this fail it wasn't systemic, it was a single bespoke landing page with a heavy client-side animation component that deferred its own copy. Three pages, not the whole site, because the override is almost always one show-off page, not a platform flip. The SPA SEO context piece covers that edge case.

What changed in 2024-2025 that you can stop auditing for

Four things Framer now handles by default that you used to fix by hand. If your checklist still has these, shorten it; I'm pulling them from Framer's own SEO features guide, because secondhand summaries are where stale claims breed. First, SSR, covered above. Second, CDN-native image delivery: responsive srcset is automatic, and since May 2024 Framer serves AVIF in modern browsers with a WebP fallback (guides saying "WebP only" are a format generation behind). The "compress your images" advice now matters for alt text and filename hygiene, not format negotiation. Third, per-page <head> controls: title, meta description, canonical, OG image, and robots tag, all settable per page. Fourth, a native redirect manager for same-domain 301s, real but manual and Pro-plan-gated, so don't expect bulk import.

Where the older content trips people up: a lot of "Framer SEO" posts describe a 2022 product that's gone, and a few describe features Framer never shipped, the worst being the claim that it has a native structured-data panel. It doesn't, and that gets its own section below.

The seven-check handoff audit

This is the take-away artifact. Seven checks, ordered by what breaks rankings fastest. I run them in order because earlier failures cost more rank, and because, as the studio handoff taught me, a stage-one failure changes how I treat everything below.

Seven-check Framer handoff audit ordered by what breaks rankings fastest, with Framer-default vs operator-work tags
Seven checks, ordered by what breaks rankings fastest. The Framer-default tags mark checks that are now verification, not work; the operator-work tags mark the parts you still own.
#CheckFailure mode at handoffStatus in 2026
1Per-page metadata + canonicalSite-level title prefix on every page; canonical still pointing at stagingOperator work
2Rendering verificationOne page configured to render client-side (animation widgets)Mostly default; verify 3 sample pages
3Collection-route mapFlat URL prefix, near-duplicate pagination pagesOperator work
4Internal-link graphVisual nav rich, body links thinOperator work
5Image alt textAlt reads "image-1.jpg" on hero imagesOperator work (CDN handles format)
6Structured dataNo JSON-LD injected, or injected on one page onlyOperator work (Custom Code, no panel)
7Redirect map (migration only)Old URLs return 404, equity goneOperator work; tool shipped

Checks one and two are above. The next sections walk three, four, and six (the ones that need real work), then the migration matrix. Check five is verification, so it gets short treatment.

The collection-route map

Framer's CMS uses collections with dynamic routing: blog posts, case studies, products are records, each rendering at <collection-prefix>/<slug>/. The handoff audit checks three things on every collection.

The collection prefix should be hierarchical, not flat: a blog post belongs at /blog/post-name/, not /post-name/. Flat prefixes muddy crawl signals because the crawler can't easily tell leaves from listings, and the URL loses the topical category hint. The crawl-budget piece covers the mechanic.

Pagination shouldn't generate near-duplicate pages. Framer's default produces page-2, page-3 URLs sharing the listing's title and meta, of which Google picks one and ignores the rest. If pagination matters (a blog past 50 posts), canonical page-2 onwards to the page-1 listing, or use infinite scroll.

Collection-level canonical is the third check, and it produces the scariest symptom. On a detail page, the canonical should be the detail page's own URL, not the listing's. I've seen this misconfigured a couple of times, and both times the symptom was identical: the founder said "all my blog posts have zero impressions", because Google was canonicalizing every detail page back to the listing, collapsing forty posts into one indexed URL. The fix is one toggle in collection settings. The content-silos piece covers the broader hierarchy decision.

The internal-link graph

Designer-built sites tend to have visually-rich nav but thin body-link structure. The header has six items and the footer a sitemap-style block, but the body prose rarely links to other pages on the same site. That's a problem because body-content links carry more weight than nav links, both for rank-signal distribution and crawl-priority hints. That's the consistent practitioner read, and John Mueller has said the same about contextual links versus repeated boilerplate nav.

The check is mechanical. List the top ten commercial-intent pages (service pages, product pages, the case studies that should rank). For each, count in-links from non-nav locations: body prose, related-articles modules, contextual cards. My working minimum is two or three body-prose in-links per top-ten page, not because there's a magic threshold, but because one or zero means the page is link-isolated, and isolated pages don't rank. On the studio site, the two highest-value service pages had zero body links pointing at them, reachable only from the nav, and the founder had been wondering why the pages the business depended on weren't showing up.

The fix is an editorial pass: read the article-style pages, case studies, and landing pages, then insert two or three contextual links into the top-ten list. On the studio site that took most of an afternoon, because I also had to write the sentences the links lived in; the body copy was thin to begin with. The internal-link statistics piece covers why this beats nav-link distribution.

Structured data, the one the comparison posts get wrong

This is the section I most want to correct, because the error is everywhere. A lot of platform-comparison content tells you Framer ships a structured-data panel: pick Article or Product or FAQPage from a dropdown, fill in the fields, done. It doesn't. Framer has no schema panel, no type selector, no form. I once spent twenty minutes clicking through a project's settings looking for the panel a roundup swore was there.

What Framer gives you is a per-page Custom Code block, and structured data goes in as hand-written JSON-LD inside a script tag of type application/ld+json, injected into the <head>. For a one-off page that's a copy-paste job. For a CMS collection it's better than it sounds: Framer's {{ }} variable syntax pulls the post title, date, and other fields in, so one block templates across every record. That scales cleanly, but it's code work, not a form field, and that determines how you scope the audit.

So the check isn't "is the schema panel filled in". It's: does the Custom Code block exist on the page types that need it, injected per collection. The failure mode I see most is a designer hand-writing JSON-LD on the first two or three pages, then never templating it, so three blog posts have Article schema and forty don't. The studio site was a milder version: zero schema anywhere, which is at least consistent and quick to fix with one templated block per collection. Framer's own structured-data-through-JSON-LD help article is the primary reference; treat anything describing a "panel" as out of date. One caveat: there are scattered reports that Framer auto-emits baseline schema on certain sites. I can't confirm it against the docs and it looks plan-specific, so I check the rendered output for whatever lands and fill the gaps via Custom Code.

The remaining verification check

One left that's pure verification: image alt text. Framer's CDN handles format and sizing, but the alt attribute is set per asset and ships empty unless someone fills it. Spot-inspect ten above-the-fold images and confirm the alt is descriptive, not "image-1.jpg". On the studio site the hero images all carried their export filenames as alt, the giveaway that the field was never touched. The redirect map only matters for a migration; the studio site was a fresh build, so I skipped it. But it's the check that ruins migrations when skipped, so if you're moving a ranked site, the next section matters most.

Migrating into Framer — the source matrix

Four realistic source scenarios. The most common is Webflow to Framer: a founder who switched designers. The riskiest is WordPress, where the redirect surface is larger and plugin-managed metadata gets lost. For the mechanics, Google Search Central's site-move-with-URL-changes guide is the authoritative reference; I lean on it rather than folklore.

Framer migration decision flow with four source platforms: Figma, Webflow, WordPress, and fresh launch, each with their risk profile
Four source platforms, four risk profiles. The migration cost scales with the redirect surface, not with the design complexity.
Source platformKey riskRecommended approach
Figma (no live site)None, nothing to preserveFresh launch. Plan URL structure cleanly from the start; submit sitemap to GSC on day 1
WebflowEquity loss without 301s; temporary rank dip during recrawlBuild redirect map at parity (one old URL per new URL), launch, monitor for several weeks
WordPressPlugin-managed metadata loss; larger redirect surface; image-URL changesExport metadata via SEO plugin, build redirect map, expect a reranking window of roughly 30-90 days for a clean move
Fresh launch (no prior site)Slow indexing onlySubmit sitemap to GSC + Bing on day 1; expect first impressions within a few weeks, rankings later

Walking the Webflow case because it's the most common. Build the redirect map at parity: every old URL maps to exactly one new URL, no collapses, no splits. Launch midweek so the first crawl wave hits inside a business week. Expect a temporary impressions dip; in my experience it lands in the 10-20% range for a clean migration and recovers if the map is clean, while a drop still 30%+ past week four is the flag to investigate. The headless CMS migration piece covers the framing.

WordPress migrations are harder: plugin-managed metadata (Yoast, RankMath, AIOSEO) needs exporting before the rebuild, and the redirect surface is typically a few times larger. Well-executed moves often recover within 30 days; a botched one can blow past the 90-day bound. The WordPress migration piece covers the inventory step.

What Framer's CMS still doesn't do well

Honest 2026 posture. Framer's CMS is real, but two things still trail Webflow's, and if either is core to the project, the platform choice is worth a second look before the designer starts.

Comparison of when to use Framer collection CMS versus static page for SEO
The default split. Most blog and product pages belong in a collection; bespoke landing pages stay static.

One: faceted-search filter combinations on large collections. If a catalog page has multiple filter dimensions (category, price, color, brand) generating combinatorial URLs, Framer's filter handling produces URLs that aren't always cleanly canonicalized. The workaround is to noindex the combinations and keep the canonical base URL for the unfiltered listing. That works under a few hundred SKUs; past that, Webflow handles it better.

Two: nested-collection patterns. With a hierarchy three levels deep (category to subcategory to article), Framer's URL routing can flatten unexpectedly, and the per-record URL field needs setting manually. For a two-level hierarchy (blog to post) Framer is fine, which covers most of what I see. If either is a blocker, the sibling Webflow audit piece covers the same territory. For the other 80% of sites, Framer's CMS is competitive.

What the audit produces

The artifact is a one-page handoff report. On the studio site it read like this: canonicals swapped from staging to production, metadata complete on the top-ten pages, render-path verified on three samples, collection routes correct, the two key service pages now carrying three body-prose in-links each, hero images alt-tagged, one templated Article block in the blog collection. No redirect map, because it was a fresh build. The designer kept the project and the credit; the founder got a site that could be found. That's the deliverable: not a longer checklist, a shorter list of the two or three things actually broken.

Want the machine version run against your own Framer site? Run a free SEO audit. It flags the metadata, canonical, and internal-link gaps this article walks through, so you see which checks your handoff would fail before opening the editor.

Related reading:

FAQ

Is Framer's SEO actually competitive with Webflow in 2026? Close, not identical. Framer caught up in 2024-2025 with SSR by default, CMS collections, and per-page <head> controls. Webflow still has the edge on nested collections, filter-URL handling, and bulk redirects. For 80% of the sites I see, the gap is closed.

Does Framer have a structured-data panel for Article and FAQPage schema? No, and this is the most common myth in Framer SEO content. There's no panel or type selector. You add JSON-LD by hand through the per-page Custom Code block, and for CMS collections you can wire it to collection variables so one templated block covers every record. Code work, not a form field.

Do I still need to worry about JavaScript rendering on Framer pages? Not for default-built pages. Framer ships server-rendered HTML by default since 2024. The exception is highly animated detail pages with heavy client-side state. Verify with curl -A "Googlebot" against three sample pages.

How long after launching a Framer site does it take to rank? Same range as any new site. A fresh launch starts showing Search Console impressions within roughly two to four weeks; query-level rankings take months, not weeks. Migrating from a ranked site, expect a 10-20% impressions dip in the first few weeks while Google re-crawls the redirect map.

Can I host a Framer site on my own domain and CDN? Custom domain yes, custom CDN no. Framer's CDN is part of the platform, same posture as Webflow and Wix.

<script type="application/ld+json"> {"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Is Framer's SEO actually competitive with Webflow in 2026?","acceptedAnswer":{"@type":"Answer","text":"Close, not identical. Framer caught up materially in 2024-2025 with SSR by default, CMS collections, per-page head controls, and structured-data fields. Webflow still has the edge on nested collections and complex filter-URL handling. For 80% of sites, the gap is closed."}},{"@type":"Question","name":"Do I still need to worry about JavaScript rendering on Framer pages?","acceptedAnswer":{"@type":"Answer","text":"Not for default-built Framer pages. Framer ships server-rendered HTML by default since 2024. The exception is highly animated detail pages with heavy client-side state. Verify with curl against three sample pages to be sure."}},{"@type":"Question","name":"How long after launching a Framer site does it take to start ranking?","acceptedAnswer":{"@type":"Answer","text":"Same range as any new site: 14-30 days for first Search Console pickup, 60-90 days for query-level ranking signal. Migrating from a ranked site, expect a 10-20% temporary impressions dip in weeks 2-4 while Google re-crawls the redirect map."}},{"@type":"Question","name":"Can I host a Framer site on my own domain and CDN?","acceptedAnswer":{"@type":"Answer","text":"Custom domain yes, custom CDN no. Framer's CDN is part of the platform. This is the same posture as Webflow and Wix."}},{"@type":"Question","name":"What's the one Framer-specific SEO mistake you see most often at handoff?","acceptedAnswer":{"@type":"Answer","text":"Every page sharing the same title-template prefix. Designers set the site-level title pattern and leave the per-page overrides empty, so every page reads 'Site Name | Page Title' with the same prefix. Easy to fix in an hour."}}]} </script>
SEOJuice
Stay visible everywhere
Get discovered across Google and AI platforms with research-based optimizations.
Works with any CMS
Automated Internal Links
On-Page SEO Optimizations
Get Started Free

no credit card required