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
2.7 seconds of script evaluation time is blocking the main thread and causing 1,030ms Total Blocking Time, preventing user interactions.
Use Next.js dynamic imports to code-split large components and defer non-critical JavaScript. Remove 289 KiB of unused JavaScript from Google Tag Manager scripts by implementing server-side tracking where possible. Enable React Strict Mode and use React DevTools Profiler to identify performance bottlenecks in your components.
A score of 24 falls in the "Poor" 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 severe performance issues with a critically low score of 24/100. The biggest problem is massive layout shift (0.806 CLS) caused by the footer element moving during page load, creating a jarring user experience where content jumps around unexpectedly. The site also suffers from excessive JavaScript execution (4.8 seconds of main thread blocking) and takes over 18 seconds to become interactive, making it nearly unusable on slower devices. Fixing the layout shift by reserving space for the footer and reducing the JavaScript bundle size could dramatically improve both the user experience and performance score by 30+ points.
Why It Matters:
A massive layout shift (0.806 CLS score) from the footer element is severely impacting user experience and Core Web Vitals.
How to Fix:
Reserve space for the footer by setting a minimum height in CSS or using CSS Grid with defined track sizes. Ensure all footer content loads simultaneously rather than incrementally. Add skeleton placeholders for any dynamically loaded footer content to prevent layout jumps.
Why It Matters:
770ms of render-blocking CSS delays First Contentful Paint and prevents the page from displaying content quickly.
How to Fix:
Inline critical CSS for above-the-fold content directly in the HTML head. Use Next.js built-in CSS optimization by splitting your CSS files and only loading necessary styles per page. Defer non-critical CSS using the media='print' onload trick or Next.js dynamic imports for component-specific styles.
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
Render-blocking CSS files delay first paint by 2 seconds, particularly the 29KB main stylesheet.
CLS score of 0.258 primarily caused by images without explicit dimensions shifting page layout.
725 KiB of unused JavaScript is delaying LCP by 3.6 seconds and blocking user interactions.
You're loading 287KB of unused JavaScript and 19KB of unused CSS, blocking rendering and slowing page load.