Mobile Page Speed for Contractor Sites — Real Numbers, Real Fixes
Slow mobile sites lose calls. What 'fast enough' means for contractor sites in 2026, the three things that slow most sites down, and how to fix them.
A slow contractor website doesn’t just frustrate visitors — it actively bleeds inbound calls. Every additional second of load time is roughly a 7–15% drop in mobile conversion, compounding across the funnel. A site that takes 4 seconds to become usable on a phone is leaking half its potential calls before anyone sees the hero.
This article walks through the speed targets that actually matter in 2026, the three issues that slow most contractor sites down, and the fixes that move both rankings and conversion.
This sits in the Click chapter of Why Your Website Isn’t Ringing.
The targets that matter (Core Web Vitals)
Google measures three metrics that together determine whether your page is “fast enough”:
- LCP (Largest Contentful Paint): time until the largest visible content (usually the hero image) renders. Target: under 2.5 seconds on 4G mobile.
- TBT (Total Blocking Time): total time the main thread is blocked by JavaScript during initial load. Target: under 200ms.
- CLS (Cumulative Layout Shift): visual stability — how much things move around as the page loads. Target: under 0.1.
You can measure all three for free using PageSpeed Insights (pagespeed.web.dev). Run your homepage and your top 3 service-area pages. Anything in the red on mobile is a problem.
The benchmark from contractor sites we’ve audited: about 70% fail at least one Core Web Vital on mobile. Fixing those failures is one of the cheapest, highest-leverage Click optimizations you can make.
Issue 1: Oversized images (60–80% of the speed problem)
The single biggest cause of slow contractor sites: images that are way larger than they need to be.
A typical hero image on a contractor site:
- 4032 x 3024 pixels (the iPhone resolution it was shot at)
- 4.2 MB JPG file size
- Loaded at full resolution even on a 390-pixel-wide phone screen
What it should be:
- 1600 x 1200 pixels max (desktop) with smaller responsive variants for mobile
- 180–280 KB WebP or AVIF file
- Served via responsive image markup so mobile devices download the mobile-sized version
The fix:
- Resize images to 2x the largest display size (Retina-ready) before uploading
- Convert to WebP or AVIF format (60–80% smaller than JPG at the same visual quality)
- Use responsive image markup (
srcsetattribute) so different devices download appropriately sized variants - Lazy-load images below the fold (modern browsers do this with
loading="lazy"attribute)
Most modern site builders (Astro, Next.js, modern WordPress with Smush or ShortPixel) handle this automatically if configured. If your site is on an older platform, this is the highest-ROI manual cleanup you can do.
Issue 2: JavaScript bloat (15–25% of the speed problem)
The second biggest cause: JavaScript that loads before it needs to.
Common JS culprits on contractor sites:
- Live chat widgets (Intercom, Drift, Olark) loaded synchronously in the head
- Tracking pixels (Facebook, LinkedIn, multiple analytics scripts) loaded on initial page render
- Form builders with heavy dependencies loaded everywhere instead of just on form pages
- Page builder plugins (WordPress especially) with their entire JS payload loaded on every page
The fixes:
- Defer non-critical JavaScript with the
deferorasyncattribute so it doesn’t block initial render - Lazy-load chat widgets so they only initialize after the page is interactive (most chat tools support this)
- Audit tracking pixels and remove anything you’re not actively using
- Use Google Tag Manager to load tracking scripts conditionally instead of hardcoding them all into the page head
A typical contractor site we audit has 1.2–2.4 MB of JavaScript loading on the homepage. After cleanup, the same site usually runs at 200–400 KB without losing any user-visible functionality.
Issue 3: Uncompressed video backgrounds (when present)
Hero video backgrounds are popular in agency-built contractor sites. They almost always hurt more than they help:
- A 30-second 1080p MP4 typically runs 8–25 MB
- Mobile devices download the entire file before playback starts (in many cases)
- Autoplay is blocked on most mobile browsers, so the visitor sees a black box where the hero should be
The fix: use a real photo as the hero. If you’re committed to motion, host the video on YouTube or Vimeo and embed it below the fold, lazy-loaded.
Issue 4: Slow hosting (when applicable)
If your hosting is slow, no amount of optimization will fix it. Symptoms:
- Server response time (TTFB, Time to First Byte) over 600ms in PageSpeed
- Pages slow even on initial load with no images or JS
- Inconsistent load times — sometimes fast, sometimes slow
The fix: move to a real CDN-backed host. For static sites (Astro, Hugo, plain HTML): Cloudflare Pages, Netlify, or Vercel — all have free tiers that outperform paid VPS hosting. For WordPress: Kinsta, WPEngine, or Rocket.net.
Cheap shared hosting on GoDaddy or Bluehost is the most common hosting cause of slow contractor sites we see. Migrating off costs $20–$50/month and produces immediate measurable speed lift.
Issue 5: Render-blocking resources
Render-blocking CSS and JavaScript prevent the browser from displaying anything until they finish downloading and parsing. Two specific failure modes:
- External fonts loaded synchronously (especially Google Fonts loaded via
@importin your CSS instead of via<link rel="preload">) - Multiple CSS files loaded sequentially instead of consolidated and minified
Fixes:
- Preload critical fonts with
<link rel="preload" as="font"> - Use
font-display: swapso text renders in a fallback font while the custom font loads - Concatenate and minify CSS into one or two files maximum
- Inline critical above-the-fold CSS, defer the rest
Modern static-site frameworks handle most of this automatically. Older WordPress installs often need a caching plugin (WP Rocket, Autoptimize) configured properly to do this manually.
What “fast enough” looks like in real numbers
A residential roofing client we audited and optimized in early 2025:
- Before: LCP 5.8s, TBT 720ms, CLS 0.18 on mobile
- After: LCP 1.9s, TBT 140ms, CLS 0.04 on mobile
- Mobile call-button click rate: from 1.4% to 3.6%
- Page-1 organic ranking gain across 12 service-area pages: average improvement of 8 positions
- Total optimization time: roughly 12 hours of dev work
The optimization broke down to:
- Image compression and WebP conversion (35% of the speed gain)
- JavaScript deferral and chat widget lazy-load (28%)
- Hosting migration to a CDN-backed setup (22%)
- Font loading and CSS optimization (15%)
None of it required redesigning the site. All of it was tactical cleanup of the existing site’s delivery.
What to measure and how often
Run PageSpeed Insights on your homepage and top 3–5 pages monthly. Two tabs to focus on:
- Mobile tab is where most of your traffic actually lives
- Field data (real Chrome User Experience Report data) matters more than lab data — field data reflects what actual visitors experience
If your mobile field data is in the green (LCP <2.5s, TBT <200ms, CLS <0.1), you’re not leaving speed-related conversion on the table. If anything is in the red, you have a clear, prioritized fix list — Lighthouse and PageSpeed both rank the impact of each suggestion so you know where to focus first.
What to do this week
If you’ve never measured your site’s speed:
- Run PageSpeed Insights on your homepage. Note the mobile scores.
- Identify the largest hero image and resize it to 1600px wide max, convert to WebP.
- Check your live chat widget (if you have one) — switch it to lazy-load mode.
- Re-run PageSpeed. Most sites see measurable improvement from these three changes alone.
For the broader Click chapter context, see Why Your Contractor Website Isn’t Ringing (the 5-Second Test) and The Anatomy of a High-Converting HVAC / Plumbing Hero Section.
The full Click chapter is in Why Your Website Isn’t Ringing. If you’d like a free speed audit of your current site as part of a 15-minute call, book one here.