Largest Contentful Paint
Good: < 2.5s
Measures how long it takes for the main content to appear on screen
How to optimize tokyoportfolio.frontend.stg.vercel.app
JavaScript is causing 149ms of forced reflows by reading layout properties after DOM changes, blocking the main thread.
Batch DOM reads and writes to avoid layout thrashing. Use React's useLayoutEffect sparingly and prefer useEffect. Implement virtual scrolling for large lists using libraries like react-window. Cache DOM measurements and avoid accessing offsetWidth/offsetHeight in loops.
A score of 76 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 below-average performance with a score of 76/100. The biggest problem is render-blocking CSS files that are delaying your First Contentful Paint by 600ms, with one stylesheet containing 87% unused CSS rules that could save 18KB. Additionally, your Largest Contentful Paint is suffering at 4.9 seconds and Time to Interactive is extremely slow at 10.5 seconds, largely due to forced reflows in your JavaScript and inefficient resource loading. Eliminating unused CSS, optimizing JavaScript execution, and implementing better caching strategies could improve your Core Web Vitals significantly and provide a much better user experience.
Why It Matters:
CSS files are blocking initial render by 580ms, directly delaying FCP and potentially LCP.
How to Fix:
In your Next.js app, inline critical above-the-fold CSS using next/dynamic with ssr: false for non-critical components. Split CSS by route using Next.js automatic code splitting. Use next/head to preload CSS files or consider CSS-in-JS solutions like styled-components for better performance.
Why It Matters:
87% of your main CSS bundle (18KB) is unused, wasting bandwidth and parse time.
How to Fix:
Use PurgeCSS with Next.js to automatically remove unused styles during build. Configure Tailwind CSS purging properly in your tailwind.config.js. Implement CSS modules or styled-components to ensure only component-specific styles are loaded. Use Next.js built-in CSS optimization features.
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
You're loading 287KB of unused JavaScript and 19KB of unused CSS, blocking rendering and slowing page load.
Your CLS score of 0.806 is extremely poor (needs <0.1) with the footer element causing massive layout shifts.
Google Analytics and Facebook Pixel scripts consume 213KB of unused JavaScript and cause 57ms of forced reflows.
CSS files are blocking initial page render for 870ms and delaying First Contentful Paint by 850ms.