Why teams move from Framer to Astro
The design is rarely the problem. Teams leave Framer for ownership, cost and control. Framer's help center rules out HTML export for self-hosting, since rendering, image resizing and font subsetting happen on its infrastructure. The site, its hosting and its redirect rules stay inside one vendor's plan, billed per site and per editor. The common triggers, with Framer's figures as of October 2026:
- Code you can keep: an Astro site lives in your repository and deploys to your own host, next to the product, API or backend it needs to reach.
- Seats: USD 20 a month per editor and USD 10 per content editor, billed yearly, and neither Basic nor Pro allows more than ten people with edit access.
- Ceilings: Basic is fixed at 30 designed pages, 2 CMS collections, 1,000 items and 50 GB a month; Pro grows to 700 pages and 40,000 items only through paid add-ons.
- Redirect rules: they need Pro, cover only paths on the same domain, and don't update when someone renames a page or CMS path.
- Framer-bound code: native forms submit through Framer's runtime, code overrides modify layers on Framer's canvas, and code components carry Framer's property controls.
- Bandwidth: a second month over the plan's limit brings an upgrade request, and ongoing overages may mean an automatic upgrade or an overage fee.
Framer and Astro compared for this move
Framer is a visual editor with hosting attached. Astro is a framework that builds HTML ahead of time and leaves hosting, the CMS and the editing tool to you. The table compares what changes for the people who run the site; Framer figures are from its own pages as of October 2026.
| Area | Framer | Astro on our default stack |
|---|---|---|
| Hosting | Framer's servers and CDN only; no self-hosting | Any static host; we use Cloudflare Workers, where requests to static assets are free and unlimited |
| Editing | Design canvas, with editors and content editors as paid seats | Content edited in a headless CMS; page layouts change in code |
| CMS limits | Pro: 10 collections and 2,500 items, up to 40 and 40,000 with add-ons | Set by the CMS you choose; Sanity's free plan holds 10,000 documents |
| Redirects | Pro only, same-domain paths, wildcards and capture groups | Server-side 301s at the host; a Cloudflare _redirects file holds 2,000 static and 100 dynamic rules |
| SEO controls | Titles, descriptions, sitemap.xml and robots.txt built in; hreflang set automatically and not editable; JSON-LD added by hand | Every tag in templates you own, including canonicals, hreflang and structured data |
| JavaScript | A React runtime hydrates each page in the browser | Only what you add; an article on dardo.studio loads about 43 KB compressed, with no UI framework |
| Code ownership | No HTML export; CMS content leaves through plugins as CSV or JSON | Code in your repository, content in a CMS you can move |
| Running cost | Pro USD 30 a month per site billed yearly, plus seats and locales | USD 0, or USD 5 a month per account on Workers Paid, plus CMS seats if needed |
What comes across from Framer, and what doesn't
Content travels; the site itself doesn't. Framer says CMS content can be exported through plugins as CSV or JSON, and its data-porting article says the published HTML, CSS and JavaScript can be downloaded. When we built an internal capture tool for Framer pages, the downloaded files still loaded Framer's React runtime and its CDN, and the forms had no HTML action. So a capture is the brief for the rebuild, never the site we deploy.
- Exported: CMS items, through a plugin, as CSV or JSON.
- Downloaded: images, video and files on framerusercontent.com, which collection fields point to instead of carrying the files.
- Copied from the live pages: titles, descriptions, Open Graph images and any JSON-LD added as custom code.
- Recorded, then rebuilt: every designed page and breakpoint, plus the timing of each appear effect, which Framer stores as JSON inside the page.
- Rewritten: code components, which are React 18 components, and overrides, which are higher-order components that change Framer layers.
- Replaced: native forms, which deliver to email, Google Sheets or a webhook through Framer, and the built-in analytics, whose baseline we record before anything is cancelled.
How Framer content maps to Astro
Nothing converts automatically, but every Framer feature has a counterpart in an Astro build. This is the content model we start from; your inventory sets the final one.
| In Framer | In Astro | How it moves |
|---|---|---|
| Designed pages and breakpoints | Astro page templates and components | Rebuilt from a capture at 1440, 810 and 390 pixels plus each breakpoint in the site's CSS |
| CMS collections | Content collections with a schema, or a headless CMS | Plugin export to CSV or JSON, then a scripted import validated against the schema |
| Images and files on Framer's CDN | astro:assets, or the CMS's media library | Downloaded at the largest size; each font's licence checked before self-hosting |
| Code components | React islands, or plain Astro components when nothing is interactive | Property controls become props; client JavaScript loads only where the component needs it |
| Code overrides | Props, CSS or a short script on the component | Rewritten, since they modify layers that no longer exist |
| Appear effects and interactions | CSS transitions and keyframes, or a small script | Timing taken from the live site; each one gets a reduced-motion version |
| Native forms | An endpoint you own: a Worker, a form service or your CRM | Each destination tested with a real submission on staging |
| Locales | Astro i18n routing, one URL per language | Each locale's paths and CMS slugs kept as they are; hreflang written in the templates |
| Redirect rules in Site Settings | Explicit 301s in _redirects or Worker code | Merged into the new map, chains collapsed to one hop |
| Custom code in the head and body | The base layout | Analytics and tags load only after consent where required |
How we move a Framer site to Astro
The move runs through our website migration service in five stages: inventory, map, rehearse, switch, watch. On Framer the inventory starts from the automatic sitemap.xml and every CMS page, then adds Search Console landing pages over at least a full year, backlinks, each form with its destination, every script in the site's custom code and the redirect rules already set in Site Settings.
From that inventory come the 1:1 redirect map and the content model. A careful rebuild can usually keep each Framer path, so few URLs need a redirect; the ones that change get a 301 to their closest equivalent. Our free redirect map generator drafts the first version by pairing the old and new sitemaps. The build itself is Astro development, with motion handled as creative development.
To see before the build which of your URLs keep their path on Astro and which need a 301, run your Framer sitemap through our free website migration planner.
We rebuild one representative page first and review it at agreed widths, then the remaining templates. When we rebuilt an 18-route Framer site of our own in Astro, 217 of its 219 scroll and interaction states came within a 1% pixel difference of the original. Everything is built and filled on a noindexed staging address, while Framer keeps serving visitors.
Before the switch we crawl staging with every old URL and fix each mismatch. The switch is a scheduled window: DNS moved, 301s live, sitemap submitted, every form tested with a real submission. At 30 and 60 days we compare indexing and clicks with the pre-launch baseline, and the handover covers accounts, DNS and the redirect list. Our Framer to Astro guide lists the technical steps, and the same process covers Webflow to Astro moves.
SEO checks around the switch from Framer
Staging gets every check first; the live domain gets them again on the day DNS changes. Our website migration SEO checklist explains why each one matters.
- Every old Framer URL returns 200, one 301 to a 200, or a deliberate 404 or 410, with no chains and no bulk redirects to the home page.
- Redirects are real HTTP 301s: a static Astro build without an adapter writes meta-refresh pages, and a _redirects line without a code defaults to 302.
- No canonical, Open Graph tag or sitemap entry still names the old Framer address.
- Titles, descriptions and H1s match the recorded Framer pages, one page at a time.
- Hreflang now lives in our templates: each language version lists itself and every other version.
- Structured data is rebuilt and passes Google's Rich Results Test.
- Forms reach their inbox, CRM or sheet; analytics and conversion events fire only after consent where required.
- Staging noindex removed, the new sitemap submitted in Search Console, and the Framer project unpublished once the new site is verified.
- At 30 and 60 days: indexed pages, impressions and clicks per page against the baseline, with fixes for whatever the data shows.
When to stay on Framer
A rebuild costs design and development time, so it should buy something specific. Staying on Framer is the better call when:
- Your marketing team lays out new pages every week without a developer. In Astro, content edits stay easy, but new layouts go through code.
- The bill is the only reason. On fees alone, the saving rarely pays back a rebuild quickly.
- The site fits inside Pro, nobody needs it in a repository, and no backend has to sit next to it.
Speed alone is a weak reason to move. In HTTP Archive field data for September 2026, 81.7% of Framer sites in the US passed Core Web Vitals on mobile, against 84.2% of Astro sites; our website platform speed report breaks those figures down by country. If your pages are slow, website speed optimization shows whether the cause is the platform or what sits on the page.
If the site needs design work rather than a new platform, our Framer development service improves it where it is. If the destination is still open, our Astro vs Next.js comparison explains which framework suits which kind of site.
What Astro costs to run after the move
Running costs usually fall, and the build becomes the larger number. A static Astro site on Cloudflare Workers costs nothing on the free plan, or USD 5 a month per account on Workers Paid with 10 million requests included, and requests to static assets are free and unlimited. A headless CMS is its own line: Sanity's free plan covers up to 20 seats and 10,000 documents, and its Growth plan is USD 15 a seat a month, as of October 2026.
On Framer, as of October 2026, a site costs USD 10 a month on Basic or USD 30 on Pro, billed yearly; seats add USD 20 per editor and USD 10 per content editor, and each extra language another USD 20. Our Framer pricing guide prices three typical sites at USD 360, 960 and 1,920 a year on Framer, against USD 0 to 1,140 as coded sites, and the Webflow renewal calculator sets Framer, Webflow and a coded site side by side for your own numbers.
We don't publish a fixed price for this move. It is quoted after the URL inventory, and four things set it: the number of templates and URLs, the shape of the CMS, the forms and integrations that must keep working, and the number of languages. Motion is a fifth when the site leans on it. The prices other providers publish are collected in what a website migration costs in 2026.
Questions before you choose
Can we export our Framer site and host it ourselves?
Not as a working site. Framer states that it offers no HTML export for self-hosting; its pre-rendering, image optimization and font subsetting depend on Framer's own servers. Downloaded pages still depend on Framer's runtime and CDN, so we use them as a reference and rebuild the templates in Astro.
Will we lose rankings moving from Framer to Astro?
Some movement is normal: Google warns of temporary ranking fluctuation during a site move, and notes that most pages of a smaller site can need a few weeks to move. Lasting losses come from URLs that stop answering, dropped metadata or a leftover noindex. We keep paths where we can, 301 the rest, compare metadata page by page and review search data at 30 and 60 days. Rankings themselves can't be guaranteed.
Can we keep our Framer URLs exactly as they are?
Usually. Astro routes can reproduce Framer's page paths, CMS slugs and localized paths, so most URLs stay the same and need no redirect. Any path we agree to change, and any trailing-slash variant, gets a single 301, and the whole map is tested against every old URL before launch.
Can our marketing team still edit the site without code?
Yes, for content. Editors work in a headless CMS: text, images, CMS entries, SEO fields and alt text. Laying out a new kind of page goes through a developer, which is the main trade-off against Framer's canvas. If new layouts every week are the job, staying on Framer may be the better call.
Will our Framer animations work in Astro?
Not as they are, because Framer's effects run in its own runtime. We record the timing of each animation worth keeping and rebuild it with CSS or a small script, with a reduced-motion version. Motion that carries no meaning is a candidate to drop, which we agree with you before the build.
What happens to our code components and overrides?
Code components are React components, so they can usually return as React islands in Astro, loading JavaScript only where they run. Overrides change Framer layers, so their behavior moves into the component's own props, CSS or a short script. Both are listed in the inventory with what replaces them.
How long does a Framer to Astro migration take?
The schedule follows the number of templates and URLs, the size of the CMS, the motion to rebuild, the integrations and how quickly approvals come back. We give a schedule with the proposal, after the inventory. After launch, Google's guidance allows a few weeks for most pages of a small or medium site to settle at their new addresses, so reviews run at 30 and 60 days.
When should we cancel the Framer plan?
Only after the Astro site answers every old URL, every image and file has been downloaded and rehosted, and the CMS export is saved. Collection fields point at files on Framer's CDN, so download them before anything is cancelled. The handover lists the cancellation date alongside the other accounts and the redirect list.
What does a Framer to Astro migration cost?
We quote each move from the URL inventory: templates, CMS structure, integrations, motion and languages. Running costs usually fall afterwards: Cloudflare's Workers Paid plan is USD 5 a month per account, against Framer Pro's USD 30 a month per site plus seats, as of October 2026.
From the blog
- Astro vs Framer: who edits, what it costs and how fast it loads, for a marketing site in 2026
Framer gives designers a canvas; Astro gives you code you own. Yearly costs for a 25-page site, September 2026 speed data and when to pick each.
- Framer to Astro: how to move a Framer site without losing its design or rankings
Framer has no HTML export, so moving to Astro is a rebuild. What to capture first, what breaks, and how to keep the design, URLs and rankings.
Sources & further reading
Sources behind this page, with further detail from the original publishers.
- Framer Help: Can I export my website to HTML and self-host it?framer.com
- Framer Help: Porting your data from Framerframer.com
- Framer Help: How to set up redirects to maintain SEO rankingframer.com
- Framer: Pricingframer.com
- Framer Help: Understanding bandwidth usageframer.com
- Framer Developers: Code components introductionframer.com
- Framer Developers: Code overrides introductionframer.com
- Framer Help: Guide to SEO features and toolsframer.com
- Framer Help: Language attributeframer.com
- Framer Help: Adding a contact form to your siteframer.com
- Astro Docs: Content collectionsdocs.astro.build
- Astro Docs: Islands architecturedocs.astro.build
- Astro Docs: Configuration reference (redirects)docs.astro.build
- Astro Docs: Internationalization (i18n) routingdocs.astro.build
- Astro Docs: Imagesdocs.astro.build
- Cloudflare: Workers pricingdevelopers.cloudflare.com
- Cloudflare Workers docs: Redirectsdevelopers.cloudflare.com
- Sanity: Pricingsanity.io
- Google Search Central: Site moves with URL changesdevelopers.google.com
- HTTP Archive: Technology Reporthttparchive.org
