← Back to Insights
Web Development Mar 2, 2026 ⏱ 9 min read

Web Performance Optimization: Your Slow Website Is Costing You $100K/Year

Amazon found that every 100ms of latency cost them 1% in sales. You're not Amazon — which means the impact on your business is even worse. Here's how to fix it.

The Real Cost of a Slow Website

Page speed isn't a vanity metric. It's a revenue driver. Research consistently shows:

  • 7% conversion loss per 1-second delay (Akamai, 2023)
  • 53% of mobile users abandon sites loading over 3 seconds (Google)
  • Core Web Vitals are now a Google ranking factor — slow sites rank lower in search
  • $2.6 billion in revenue lost annually to slow retail sites (Deloitte)

For a business doing $1.5M/year in web-sourced revenue, a 1-second improvement in page load could be worth $105K/year in recovered conversions.

7%
Conv Loss / Second
53%
Mobile Abandon > 3s
< 2.5s
Target LCP

Core Web Vitals: What Google Actually Measures

Metric What It Measures Good Poor
LCP (Largest Contentful Paint) Loading speed — when the main content is visible < 2.5s > 4.0s
INP (Interaction to Next Paint) Responsiveness — how fast the page responds to clicks < 200ms > 500ms
CLS (Cumulative Layout Shift) Visual stability — how much the layout jumps < 0.1 > 0.25

Image Optimization (Usually the #1 Win)

Images typically account for 50-80% of total page weight. Fix images first:

  1. Use modern formats: WebP is 25-35% smaller than JPEG at equivalent quality. AVIF is even better but browser support is still catching up.
  2. Responsive images: Use srcset and sizes attributes. Don't serve a 2000px hero image to a 375px phone screen.
  3. Lazy loading: Add loading="lazy" to images below the fold. Don't lazy-load the hero image — that's your LCP element.
  4. Compression: JPEG quality 80-85 is visually indistinguishable from 100 but 40-60% smaller. Use tools like Sharp, Squoosh, or ImageOptim.
  5. Proper dimensions: Always set width and height attributes to prevent CLS. The browser reserves space before the image loads.

JavaScript: The Silent Performance Killer

JavaScript is the most expensive resource on the web — it has to be downloaded, parsed, compiled, AND executed. Here's how to tame it:

  • Audit your bundle: Use source-map-explorer or webpack-bundle-analyzer. You'll find libraries you imported for one utility function that ship 300KB of code.
  • Code split aggressively: Route-based splitting at minimum. Component-level splitting for heavy features (charts, editors, maps).
  • Defer non-critical JS: Analytics, chat widgets, social share buttons — load these after the main content renders. Use async or defer attributes.
  • Tree shake: Modern bundlers eliminate dead code — but only if you import correctly. import { debounce } from 'lodash-es' is 100x smaller than import _ from 'lodash'.
  • Remove unused polyfills: If you don't need to support IE11 (you don't in 2026), drop babel polyfills. They often add 50-100KB.

Server & CDN Strategy

  • CDN for static assets: CloudFront, Cloudflare, or Fastly. A CDN alone can reduce TTFB by 50-80% for geographically distributed users.
  • Edge caching: Cache HTML pages at the edge for content that doesn't change frequently. Even 60-second TTLs help enormously.
  • HTTP/2 or HTTP/3: Multiplexed connections, header compression, and server push. If you're still on HTTP/1.1, you're leaving performance on the table.
  • Preconnect and prefetch: Use rel="preconnect" for third-party origins (fonts, analytics). Use rel="prefetch" for resources the user is likely to need next.
  • Compression: Enable gzip or brotli compression on your server. Brotli is 15-20% smaller than gzip for text assets.

Font Loading Strategy

Custom fonts are one of the most common causes of CLS and slow LCP:

  • Use font-display: swap to show text immediately with a fallback font while the custom font loads.
  • Preload critical fonts: <link rel="preload" href="font.woff2" as="font" crossorigin>
  • Subset your fonts: If you only use Latin characters, don't load the full Unicode range. This can reduce font size by 50-80%.
  • Limit font variations: Each weight and style is a separate file. Use at most 3-4 variations.

The 90+ Lighthouse Score Checklist

  1. ☐ Images compressed and in WebP format
  2. ☐ All images have explicit width/height
  3. ☐ Hero image preloaded, below-fold images lazy-loaded
  4. ☐ JavaScript bundle under 200KB gzipped
  5. ☐ Non-critical JS deferred or async
  6. ☐ CSS critical path inlined, rest deferred
  7. ☐ Fonts preloaded with font-display: swap
  8. ☐ CDN serving static assets
  9. ☐ Brotli compression enabled
  10. ☐ TTFB under 200ms
  11. ☐ No layout shifts from dynamic content
  12. ☐ Third-party scripts loaded after interaction

The Verdict

Web performance isn't a "nice to have" — it's a competitive advantage. The fastest site in your category wins more traffic, more conversions, and more repeat visitors. And the good news: most of the biggest wins are simple engineering hygiene — proper image formats, deferred scripts, and a CDN.

The best time to optimize your site was before launch. The second best time is today.

GG
Garnet Grid Engineering
Web Development & Performance • New York, NY

Need a Performance Audit?

We've optimized sites from 20-point to 95-point Lighthouse scores. Let us audit yours for free.

Book a Free Performance Audit → ← More Insights

Want to know your site's real performance score?

Run the SEO & Performance Scanner →

📚 Related Articles