Framer to Next.js benchmark: speed, visual fidelity and build results

A 12-site Framer to Next.js benchmark: conversion time, pixel mismatch at two widths, build and type-check results, with test conditions and raw-data notes.

Published
Updated
Reading time
7 min
Deframer cover: “12 sites, measured.” Beside it, four tiles, Speed, Fidelity, Builds and Types, with Fidelity selected
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 692fe4c (the code production runs)

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

next build (11 successful builds), median / slowest

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

tsc errors

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

next build passed with no changes

11 of 12

next build passed after a manual fix

12 of 12 (one two-line fix)

tsc --noEmit with zero errors

4 of 12

tsc errors in total

32

Projects with typescript.ignoreBuildErrors on

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 tsc results 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.