"My website is slow." I hear this from clients every week. The cause is almost never "we need to rewrite in Next.js." It is almost always one of seven specific issues, and each has a targeted fix. Here is the diagnostic order I use.
1. Unoptimized images (the #1 cause)
You upload a 5MB hero image, the browser downloads it, and your LCP is 6 seconds. Fix: convert to WebP or AVIF, resize to actual display dimensions, lazy-load everything below the fold, and serve responsive sizes via srcset. This single fix often takes Lighthouse from 40 to 75.
2. Render-blocking JavaScript
Every <script> in <head> blocks rendering. Move them to the bottom of <body>, or add defer/async. Audit third-party scripts ruthlessly — that "harmless" chat widget often adds 800ms.
3. Too many HTTP requests
Modern HTTP/2 mitigates this, but if you have 80 separate JS/CSS files, bundle them. Use Vite, Webpack, or your framework's bundler. Aim for under 20 critical requests on first paint.
4. Slow server response (TTFB)
Time to First Byte should be under 200ms. If your TTFB is 1+ second, the server is the bottleneck — not the browser. Common causes: shared hosting with noisy neighbors, missing database indexes, no caching layer, render-blocking server-side calls (e.g., calling 5 external APIs synchronously).
5. No caching
Every request hits the database. Even Laravel's built-in cache (Redis) cuts response times 10x. For static content, set proper Cache-Control headers — 1 year for hashed assets, 1 hour for HTML.
6. Web fonts done wrong
Loading 6 weights of 2 font families = 600KB of fonts. Subset your fonts, use font-display: swap, preconnect to font origins, and self-host where possible.
7. Layout shift (CLS)
Images without width/height attributes, ads injecting after load, fonts swapping in. Fix: always set width and height on images; reserve space for ads; use font-display: optional for non-critical fonts.
The diagnostic process
- Run PageSpeed Insights on your homepage.
- Open Chrome DevTools → Network → throttle to "Fast 3G".
- Identify the largest assets and the slowest requests.
- Fix in priority order: images first, then JS, then server, then everything else.
What you should expect after fixes
For a typical small business site: Lighthouse Performance 40 → 95+, LCP 5s → 1.5s, total page weight 4MB → 600KB. Achievable in 1–2 days of focused work.
Hire me for a performance audit — I will deliver a written report with prioritized fixes within 48 hours.
Ready to Start Your Project?
If this article was helpful, imagine what we could do together. Get a free 30-minute consultation and an honest recommendation for your project — no sales pitch.
Book Free Consultation