Feedback

Next.js speed statistics: 529 websites measured

By Christian Schreiber · Updated

Next.js is the framework behind many large brand sites and headless shops. It can render pages on the server and ship very little JavaScript, but many sites still hydrate large client-side bundles on every page, and that cost shows up in the field data.

Causes and fixes: Core Web Vitals for Next.js.

By Core Web Vitals pass rate, Next.js ranks fourth of six platforms with their own page, behind WordPress, ahead of Contentful. Clearest advantage over all measured websites: Page weight (median), 4.1 MB against 4.3 MB. Largest gap: JavaScript (median), 2.0 MB against 1.6 MB.

Core Web Vitals on Next.js

41% of the 529 measured Next.js websites pass all three Core Web Vitals with real-user data. Across all measured websites the figure is 49%.

MetricGoodMedianMiddle halfThreshold
LCP 70% 2027 ms 1598 ms – 2690 ms 2500 ms
INP 62% 177 ms 129 ms – 247 ms 200 ms
CLS 72% 0.06 0.01 – 0.12 0.10

Median mobile Lighthouse score: 37. Why lab score and field data diverge is explained in the Website Speed Statistics.

Who runs Next.js in this sample

Next.js sites in this sample are mostly brand sites, headless shops and software companies, often run by in-house teams and hosted on platforms such as Vercel or behind a CDN. The framework allows very different architectures, from static pages to fully client-rendered apps, and the field data mix all of them.

How to read your own Next.js values

On Next.js, INP tells you most about your own build, because it reflects how much JavaScript is hydrated on the page. Compare it with the faster quarter of this sample rather than the median. LCP and time to first byte depend more on hosting and caching choices, so compare them with sites that render the same way, static or on demand.

Next.js by region

Field data of Next.js websites per region.

RegionWebsitesPass all threeLCP p50INP p50CLS p50
Worldwide 529 41% 2027 ms 177 ms 0.06
DACH 43 65% 1598 ms 180 ms 0.04
United Kingdom 44 39% 1835 ms 186 ms 0.05

From 30 websites per region.

More metrics: TTFB, FCP, TBT and Speed Index

Thresholds and sources: Website Speed Statistics.

MetricSourceGoodNext.js medianAll websites medianThreshold
Time to First Byte Field data 58% 707 ms 684 ms 800 ms
First Contentful Paint Field data 66% 1491 ms 1536 ms 1800 ms
Total Blocking Time Lab 9% 1357 ms 771 ms 200 ms
Speed Index Lab 4% 8906 ms 8631 ms 3400 ms

Page weight and third-party code

A Next.js home page transfers 4.1 MB at the median, of which 2.0 MB is JavaScript. 96% load third-party code, from a median of five providers.

ProviderShareMain thread (median)
Google Tag Manager 66% 522 ms
Meta (Facebook) 32% 299 ms
OneTrust (Optanon) 24% 109 ms
Google Ads (DoubleClick) 17% 167 ms
TikTok 13% 176 ms
Other Google APIs and SDKs 8% 39 ms

Most common lab findings

FindingShareSaving (median)
Render-blocking resources 90% 2853 ms
Unused JavaScript 83% 1560 ms
Images not properly sized 74% 1102 ms
Unused CSS 47% 300 ms
Images not in next-gen formats 31% 1336 ms

Typical Next.js performance bottlenecks

Hydration of big React trees is the typical reason for a slow INP on Next.js sites. LCP suffers when the hero image is rendered on the client or loaded without priority. Server components, smaller client bundles and the built-in image component with priority on the LCP image address most of it.

Related guides: Interaction to Next Paint (INP) · Largest Contentful Paint (LCP) · Reduce unused JavaScript

Next.js by industry in this sample

Other platforms

How does your Next.js site compare?

Run a free test and put your values next to the Next.js median.

Test your website