On this page9 sections
We converted 12 public Framer sites to Next.js with Deframer on 25 October 2026. All 12 converted, with a median first-conversion time of 11.7 seconds. 11 of 12 built with next build without changes (the 12th after a two-line fix). Across 11 measured sites, the median site differed from its live original by 0.23% of pixels at 1440 and 390 px. The benchmark used the Next.js export; Deframer also exports the same conversion to TanStack Start, Astro, React Router and Vite.
This post reports the aggregate numbers, the conditions they were measured under, and what they don't tell you. The five-site deep dive with per-page results is in real conversion tests on five websites; the method is in how we test a Framer to Next.js converter.
What were the test conditions?
Condition | Value |
|---|---|
Date | 25 October 2026 (all runs within about three hours) |
Converter version | Deframer converter, commit |
Machine | Apple M4 Pro, 12 CPU cores, 24 GB RAM, macOS; other jobs running at the same time (load average about 5) |
Network | Home internet connection |
Software | Node.js 24.12, Next.js 16.3.8 (Turbopack), React 19.3, TypeScript 5.8, headless Chrome via Playwright |
Asset mode | Assets left on Framer's CDN (the default) |
Sites | 12 public Framer sites: 10 Marketplace template demos and 2 sites on custom domains |
Visual comparison | First 3 static routes per site, full-page, at 1440 and 390 px, reduced motion on |
How the 12 sites were chosen: five were picked by a written rule, one per type (landing page, agency, animated portfolio, CMS blog, multilingual) from a list of 150 Marketplace template demos spread evenly over the catalog. The other seven came from a systematic draw (every 10th template on that list, and custom-domain Framer sites at a fixed interval by name), taking the first seven while keeping a mix of types. We planned 25 sites and cut to 12 for time; the cut was made before measuring the seven. Sites are anonymized here; the list is available on request.
How fast was the conversion?
Measured. Wall time from the public URL to a written project, first conversion (nothing cached):
Metric | Value |
|---|---|
Sites converted | 12 of 12 |
Median | 11.7 s |
90th percentile | 18.2 s |
Fastest / slowest | 3.2 s / 20.5 s |
Repeat conversion of a cached site (5 sites) | 2.1 to 4.3 s |
| 3.7 s / 5.4 s |
Most of the conversion time is downloading the published site's code, so it depends on the network and the site's size more than on the CPU. Build times exclude npm install and were measured against an already-installed set of packages, so a first build on a fresh machine takes longer.
How close did the converted sites look?
Measured. For each route and width, the share of pixels that differ from both of two live captures (details of the comparison are in the methodology post).
Metric | Value |
|---|---|
Sites measured | 11 of 12 (one didn't build) |
Captures | 56 |
Median site (mean of its captures) | 0.23% |
90th-percentile site | 1.32% |
Worst site | 3.47% |
Sites with mean under 1% | 8 of 11 |
Median capture / 90th-percentile capture | 0.09% / 0.82% |
Captures under 1% | 52 of 56 |
Captures over 5% | 2 of 56 |
Page height equal to live (within 2 px) | 56 of 56 |
Captures with console errors the live page doesn't have | 1 of 56 |
Per site (anonymized):
Site | Type | Sitemap URLs | Locales | Mean mismatch | Worst capture | | Build |
|---|---|---|---|---|---|---|---|
A | One-page landing page | 1 | 1 | 0.33% | 0.37% | 0 | Pass |
B | Agency, CMS | 8 | 1 | 0.16% | 0.42% | 1 | Pass |
C | Animated portfolio | 20 | 1 | 3.47% | 19.3% | 2 | Pass |
D | CMS blog | 86 | 1 | 0.00% | 0.00% | 0 | Pass |
E | Multilingual, CMS | 42 | 2 | not measured |
| 5 | Fail (fixed by hand) |
F | One-page event invitation | 1 | 1 | 0.01% | 0.01% | 1 | Pass |
G | E-commerce template | 40 | 1 | 0.04% | 0.11% | 2 | Pass |
H | Law firm, several collections | 34 | 1 | 1.32% | 3.75% | 2 | Pass |
I | Musician, two pages | 2 | 1 | 0.14% | 0.49% | 0 | Pass |
J | Clinic, multilingual | 25 | 2 | 0.33% | 0.86% | 0 | Pass |
K | Company site, custom domain, multilingual | 46 | 2 | 0.23% | 0.67% | 8 | Pass |
L | Designer portfolio, custom domain | 5 | 1 | 1.01% | 5.26% | 11 | Pass |
Captures per site are 2 to 6 (one-page sites have one route at two widths). Sites A to E are sites 1 to 5 of the five-site test, measured again here in benchmark mode.
Did the projects build and type-check?
Measured.
Metric | Value |
|---|---|
| 11 of 12 |
| 12 of 12 (one two-line fix) |
| 4 of 12 |
| 32 |
Projects with | 12 of 12 |
Every project contained code components or vendored code, and Deframer turns off type checking during next build for such projects, because Framer never type-checks that code. That is why 8 projects with tsc errors still built. Most errors were in the sites' own code components or vendored code; one site had 8 errors in a generated component. The failed build (site E) was a converter bug: two documentation comments left unclosed in code components. Both are listed in the migration problems database.
What do these numbers not show?
- Only three static routes per site. The benchmark compares the first three static routes. It missed defects the five-site test found on deeper pages: three CMS posts returning 404 on site D and an animation error on one page of site B. Read the five-site test for those.
- Reduced motion. Captures run with the reduced-motion preference on, so they compare layouts after animations, not the animations.
- No interactions. Menus, accordions and forms were not exercised; our interaction checker did not work on this output (see the methodology post).
- Pixel ratios are blunt. On site C, rechecking showed that the 19.3% capture came from the live site's own preloader still running when it was captured, while another high capture was a real difference on the converted page. We report the numbers as measured.
- Performance and SEO. We didn't measure page speed, Core Web Vitals or rankings, and this benchmark doesn't show that converting improves either. See Framer PageSpeed before and after conversion and SEO when moving off Framer for those topics.
- Sample size. n = 12, mostly templates. Treat percentiles as descriptive of these sites, not as guarantees for yours.
What is our judgment?
These are opinions, separate from the measurements above.
- For layout fidelity on the pages measured, we consider the results good: 52 of 56 captures under 1% and every page height equal to the live page. We did not open every diff image, so we can't say what each remaining difference was.
- The defects that matter most to a site owner were page-specific (one build failure, one animation error, one slug encoding bug), not systematic. They are fixable by hand and are now tracked as converter bugs.
- The
tscresults mean you should plan time to fix types in code components if you want type-checked builds.
How can you reproduce this benchmark?
Use the method in our testing methodology post: fix a site list first, convert, run tsc --noEmit and next build, compare full-page screenshots against two live captures at fixed widths, and publish every failure. It works with any converter or with a hand-built rebuild. If you want to compare tools, run them on the same list on the same day, since live sites change.
When will it be re-run?
We'll re-run this benchmark on later converter versions with the same rule, add sites, and update this post with the date and version. Each run's raw results (per-capture JSON) are kept.
FAQ
How long does Deframer take to convert a Framer site?
In this benchmark, the median first conversion took 11.7 seconds and the slowest 20.5 seconds, on an Apple M4 Pro over a home connection. The production service runs on different hardware, so your time will differ.
What does 0.23% pixel mismatch mean?
On the median site, about 2 of every 1,000 pixels in full-page screenshots differed from the live site after excluding pixels that differ between two captures of the live site itself. It is a measure of how much changed, not of whether the change matters.
Did every converted site build?
11 of 12 built without changes. The 12th failed on a syntax error the converter introduced in a code component and built after a two-line fix.
Why are there type errors if the build passes?
Code components written in Framer's editor are never type-checked by Framer, and the converted project keeps their code as written. Next.js type checking is turned off for such projects so they still build; npx tsc --noEmit shows the errors.
Does converting a Framer site to Next.js make it faster?
This benchmark doesn't measure that, and we don't claim it. Performance depends on hosting, assets and what you change after converting.
