More
Choose

B2B SaaS Lighthouse Score: 7 Quick Wins to Hit 95+ in 2026

B2B SaaS Lighthouse Score: 7 Quick Wins to Hit 95+ in 2026
Category:  Performance
Published:  2026-05-13
Author:  Apex IT Solutions
Read time:  10 min

Lighthouse scores aren't a vanity metric — they're a direct proxy for Core Web Vitals, which Google explicitly uses for ranking. A B2B SaaS site at Lighthouse 60 (mobile) is leaving 20-40% of organic traffic on the table compared to a competitor at 95. The good news: most of the lift comes from seven concrete fixes you can ship in a single sprint. Below are the exact patches we apply to clients, with implementation snippets — no 'cutting-edge' filler, no vague advice about 'optimization.'

Why Lighthouse score matters for B2B SaaS

B2B buyers in 2026 evaluate vendors with the same instinct they evaluate consumer products. A slow marketing site signals a slow product. Google explicitly uses Core Web Vitals (LCP, INP, CLS) as ranking signals. Mobile performance matters even for B2B because procurement managers, CTOs, and founders all browse on mobile during commute / off-hours.

Internally, we use Lighthouse 95+ (mobile) as the bar for any production site Apex IT Solutions ships. Below 90, we don't ship. The seven fixes below cover ~80% of the work to get most sites from 60 to 95+.

Fix 1 — Convert images to WebP + AVIF with proper srcset

Images are typically 40-60% of total page weight. Modern formats cut that by 60-80% with no visible quality loss. The pattern:

<picture>
  <source srcset="/img/hero-800.avif 800w, /img/hero-1600.avif 1600w" type="image/avif">
  <source srcset="/img/hero-800.webp 800w, /img/hero-1600.webp 1600w" type="image/webp">
  <img src="/img/hero-1200.jpg" alt="..."
       width="1200" height="630"
       loading="eager" fetchpriority="high"
       sizes="(max-width: 768px) 100vw, 1200px">
</picture>

  • Use sharp, cwebp, or avifenc to generate variants
  • Set explicit width/height to prevent CLS
  • Use loading="lazy" for below-fold images
  • Use fetchpriority="high" on the LCP image only
  • Quality 80 is usually indistinguishable from 100 at 30-40% the file size

Fix 2 — Preload the LCP image and critical fonts

The LCP element is usually the hero image or the headline. Tell the browser to fetch it before the parser hits it:

<link rel="preload" as="image"
      href="/img/hero-1200.webp"
      fetchpriority="high"
      imagesrcset="/img/hero-800.webp 800w, /img/hero-1600.webp 1600w"
      imagesizes="(max-width: 768px) 100vw, 1200px">

<link rel="preload" as="font" type="font/woff2"
      href="/fonts/inter-var.woff2" crossorigin>

Fix 3 — Defer or async all non-critical JavaScript

Render-blocking scripts in the <head> kill performance. Apply defer by default; use async only for analytics or scripts that don't depend on DOM ready order:

<!-- Render-blocking - DON'T do this -->
<script src="/js/jquery.min.js"></script>

<!-- Defer - executes after parsing, in order -->
<script src="/js/jquery.min.js" defer></script>
<script src="/js/main.js" defer></script>

<!-- Async - independent, executes whenever -->
<script async src="https://www.googletagmanager.com/gtag/js?id=..."></script>

Fix 4 — Subset and self-host fonts

Loading 5 weights of Inter from Google Fonts adds ~250-400KB and 3+ network requests. Subset to just the weights and characters you actually use; self-host:

  • Run glyphhanger or subset-font to extract just your subset
  • Use woff2 only (covers 96% of browsers; woff fallback is rarely needed in 2026)
  • Add font-display: swap in @font-face to prevent FOIT
  • Use local() first so users with the font installed don't download it

Fix 5 — Inline critical CSS, defer the rest

The CSS for above-the-fold content should be inlined in the <head>. Everything else loads asynchronously. Tools like critical or criticalCSS automate this:

<style>/* inlined critical CSS, ~14KB */</style>

<link rel="preload" href="/css/main.css" as="style"
      onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/css/main.css"></noscript>

Fix 6 — Cache aggressively with Cache-Control headers

Static assets (CSS, JS, images, fonts) should be cached for at least 6 months with immutable if their filenames are hashed:

# .htaccess
<FilesMatch "\.(css|js|woff2|webp|jpg|png|svg)$">
  Header set Cache-Control "public, max-age=15552000, immutable"
</FilesMatch>

<FilesMatch "\.(html|php)$">
  Header set Cache-Control "no-cache, must-revalidate"
</FilesMatch>

Fix 7 — Put a CDN in front and enable edge caching

Even for PHP/dynamic sites, a CDN in front (Cloudflare free tier works for most B2B SaaS) cuts TTFB by 40-70% globally. Enable:

  • HTTP/3 and 0-RTT (Cloudflare default; check Speed tab)
  • Brotli compression (replaces gzip for supported clients; 15-25% smaller)
  • Auto Minify for CSS/JS/HTML
  • Polish + Mirage for image optimization at the edge
  • Edge caching for HTML with proper purge hooks on content updates

Things that don't actually matter as much as you think

  • HTTP/2 vs HTTP/3: Both are fine. The win is over HTTP/1.1, not between them.
  • Server location: CDN > server location. A US-East PHP server with Cloudflare in front beats a multi-region setup without a CDN.
  • Switching frameworks: The win from Next.js over WordPress is 80% from the CDN/edge story, 20% from the framework. You can get 90% of the win on WordPress with WP Rocket + Cloudflare.
  • Service workers and PWA features: Negligible Lighthouse impact unless you're targeting offline use cases.

Frequently Asked Questions

How long does it take to go from 60 to 95?

For most B2B SaaS marketing sites: 1-2 weeks of focused engineering work. For full apps with complex client-side state: 4-8 weeks. The 7 fixes above will cover ~80% of the lift; the remaining 20% is usually app-specific.

Will Lighthouse 95 actually improve my rankings?

Indirectly, yes. Core Web Vitals are an explicit ranking factor, and Lighthouse mobile Performance correlates ~0.7 with field CWV. We've seen clients gain 20-40% organic traffic within 90 days of CWV improvements, though it's confounded with other SEO work.

Does the score matter on desktop too?

Less. Google primarily uses mobile field data for ranking. Optimize mobile first, desktop usually follows.

Can you achieve 95+ on a PHP site without rebuilding?

Yes for marketing sites. PHP serves HTML fast if the templates are clean and you have a CDN in front. Apex's own apexitsolutions.co is PHP-based and hits 95+ on mobile after the optimizations above.

Want help with this? Apex IT Solutions builds custom software, web, mobile apps, and DevOps for B2B clients in the US, UK, UAE, KSA, Canada, and Pakistan. Talk to an engineer for a free consultation.

Ready to build with a team that ships?

Let's discuss your project.