Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
How to optimize circles.life
101KB of unused JavaScript is increasing bundle size and blocking the main thread unnecessarily.
Implement dynamic imports in Next.js for components not needed on initial load. Use React.lazy() and Suspense to code-split heavy components. Analyze bundle with @next/bundle-analyzer and remove unused dependencies from package.json.
A score of 77 falls in the "Needs Improvement" range (50-89). While it is better than poor (0-49), you should aim for 90+ to provide an optimal user experience and maximize SEO benefits.
This site is slower than approximately 35% of similar sites. The main issues affecting performance are image optimization, JavaScript execution time, and layout stability.
Addressing these issues could improve your conversion rate by 15-20% and boost your search engine rankings.
Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
Interaction to Next Paint
Good: < 200ms
Measures how quickly the page responds to user interactions
Cumulative Layout Shift
Good: < 0.1
Measures visual stability - how much content shifts during page load
This Next.js site has moderate performance issues with a score of 77/100, but several critical problems are slowing down the user experience. The biggest issue is excessive JavaScript blocking the main thread for 480ms, causing a poor Time to Interactive of 7.0 seconds and making the site feel unresponsive to user clicks. The site is also loading 101KB of unused JavaScript code and has render-blocking CSS that could save 140ms if optimized. Focusing on code splitting to reduce unused JavaScript and deferring non-critical resources would significantly improve both the performance score and user experience.
Why It Matters:
Render blocking CSS is delaying First Contentful Paint by 150ms and preventing critical content from appearing.
How to Fix:
Use Next.js dynamic imports to code-split the CSS bundle. Inline critical CSS for above-the-fold content using next/head. Move non-critical styles to load asynchronously with media='print' then switch to 'all' onload.
Why It Matters:
Legacy JavaScript polyfills add 13KB of unnecessary code that modern browsers don't need.
How to Fix:
Update Next.js config to target modern browsers by setting target: 'es2020' in next.config.js. Remove unnecessary polyfills from babel config. Use browserslist to exclude outdated browser versions if business requirements allow.
Once your site is optimized, maintain that speed. Use DeployHQ for zero-downtime, automated deployments—so performance fixes and updates go live safely every time, without breaking your site.
Get AI-powered performance insights with actionable fixes in 30 seconds
More Next.js Speed Tests
The corridor shield image is 48KB larger than needed for its display dimensions.
CSS files are blocking initial page render and delaying LCP by 600ms.
The LCP element (background texture SVG) lacks priority hints, delaying critical resource loading.
3.5 seconds of JavaScript execution time is blocking the main thread and causing 2.5 seconds of Total Blocking Time.