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
Your server takes 2.3 seconds to respond, delaying both FCP and LCP by 2.2 seconds each.
Investigate your Vercel deployment configuration and database queries. Enable Next.js static generation (SSG) for this page using getStaticProps. Implement Redis caching for API responses and optimize database queries causing the 2.3s TTFB.
A score of 23 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/React site has severe performance issues with a score of only 23/100. The biggest problem is an extremely slow server response time of 2.3 seconds, which creates a cascading delay that pushes your Largest Contentful Paint to 7.2 seconds - far beyond acceptable limits. The site is also bloated with 2.8MB of resources, including 372KB of unused JavaScript from Google Analytics and Facebook tracking scripts, plus 90% unused CSS that could be eliminated. Fixing the server response time alone could save over 2 seconds, while cleaning up unused code and optimizing your resource loading strategy could dramatically improve both your performance score and user experience.
Why It Matters:
372 KiB of unused JavaScript is blocking rendering and delaying LCP by 900ms.
How to Fix:
Use Next.js dynamic imports to code-split the 2117-a1f4d463b680b4c9.js bundle. Remove or defer Google Tag Manager and Facebook Pixel scripts until after page load. Implement bundle analyzer with @next/bundle-analyzer to identify and eliminate dead code.
Why It Matters:
Massive layout shifts (CLS: 0.903) are caused by content jumping during load, severely impacting user experience.
How to Fix:
Add explicit dimensions to the main div and footer elements causing shifts. Use Next.js Image component with priority prop for above-the-fold images. Reserve space for dynamic content with CSS skeleton placeholders to prevent layout jumps.
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
Massive layout shifts (CLS: 0.903) are caused by content jumping during load, severely impacting user experience.
372 KiB of unused JavaScript is blocking rendering and delaying LCP by 900ms.
Unsized images cause a massive 0.90 CLS score, creating jarring visual instability as content loads.
The LCP image has lazy loading applied and lacks priority hints, causing a 4.8 second resource load delay.