Skip to content
SEO

Core Web Vitals for Contractors: Fix the Three Scores Hurting Your Local Rankings

·7 min read

Only 47 percent of websites pass all three of Google’s Core Web Vitals in 2026, and contractor sites fail at higher rates than average. A WordPress site built with a page builder, a dozen tracking scripts, and a 4 MB hero photo of a job site will score in the “poor” range on at least one metric. Google confirmed Core Web Vitals as official ranking factors, and their effect on local rankings is direct: when two contractor pages in the same market have similar content, reviews, and citations, the one with better performance scores ranks higher. Most contractors have never checked their scores, which means most of the competition has not fixed these problems either.

The biggest wins on contractor sites come from the same two or three sources: unoptimized images, render-blocking scripts, and missing image dimensions. These are not complex engineering problems. They are configuration issues that can be resolved in an afternoon without rebuilding the site or hiring a developer.

The Three Metrics and What They Measure

Largest Contentful Paint (LCP) measures how long it takes for the biggest visible element on the page to finish rendering. On most contractor sites, that element is the hero image: the photo of a truck, a crew, or a completed job at the top of the homepage. The good threshold is under 2.5 seconds. Between 2.5 and 4 seconds is marked as needing improvement. Over 4 seconds is poor. An unoptimized photo served at full camera resolution can push LCP above 5 seconds on a mid-range phone, which is where most homeowners run local service searches.

Interaction to Next Paint (INP) replaced First Input Delay in March 2024. It measures how quickly the page responds to taps, clicks, and keyboard input. When a homeowner taps your phone number or tries to submit your contact form, they expect an immediate response. The good threshold is under 200 milliseconds. Sites that fail INP typically have too many third-party scripts running on the main thread simultaneously: chat widgets, scheduling tools, review badges, Google Tag Manager, and Facebook Pixel all compete for browser resources. Forty-three percent of websites still fail the 200 ms INP threshold in 2026, making it the most commonly failed Core Web Vital.

Cumulative Layout Shift (CLS) measures how much the page layout jumps around while elements load. A cookie notice that appears after the initial load, a review widget that pushes content down, or images without explicit dimensions all produce CLS failures. The good threshold is under 0.1. High CLS is the most visible failure to a homeowner: they tap a button, the page shifts, and they hit something else or lose their place in the form.

How to Check Your Scores

Two free tools give you a complete picture of where your site stands.

PageSpeed Insights (pagespeed.web.dev) runs each URL through Google’s Lighthouse tool and returns scores for all three metrics, plus a prioritized list of the specific elements causing failures with their estimated impact. Run your homepage, your top service page, and your contact page separately. Performance varies by page because each loads different images and scripts. A homepage that scores 85 on mobile does not mean your AC repair page scores 85.

Google Search Console has a dedicated Core Web Vitals report under Experience in the left menu. This report shows field data: actual scores from real users loading your pages on real devices under real network conditions. The Search Console report is more important than PageSpeed Insights for SEO purposes because Google uses field data, not a simulated lab test, for its ranking signals. Prioritize fixing the specific URLs listed in the Poor category in Search Console. Those are the pages Google is actively marking as failing in its ranking model right now.

The Most Common Contractor Site Failures

Unoptimized hero image (LCP). A 3.5 MB JPEG of a job site, captured at 5,000 pixels wide by the camera and uploaded without resizing, takes several seconds to download even on a fast connection. Converting that image to WebP format cuts file size by 25 to 35 percent with no visible quality loss. Resizing it to the maximum display width, typically 1,200 to 1,600 pixels for a desktop hero, eliminates the unused data entirely. Adding a preload hint in the HTML head tells the browser to fetch the hero image before parsing the rest of the page, which directly reduces LCP. Most contractors see LCP improve by 1.5 to 2 seconds from image optimization alone.

Third-party scripts loading on the main thread (INP). Most contractor sites accumulate scripts over time without anyone removing the old ones: Google Analytics 4, Google Tag Manager, Facebook Pixel, a chat widget, a scheduling embed, a review badge, and sometimes a legacy Universal Analytics tag that should have been removed in 2023. Each script runs on the browser’s main thread. When too many run simultaneously, the browser is too busy to respond to taps quickly. Deferring non-critical JavaScript using the defer attribute delays those scripts until after the page content is visible. Removing scripts for tools you no longer actively use eliminates the problem at the source rather than working around it.

Images without dimensions and late-loading injected content (CLS). When a browser loads an image with no width and height attributes in the HTML, it does not know how much space to reserve. The image loads in and pushes everything below it down the page. Setting explicit width and height on every img tag prevents the shift before it happens. Cookie consent banners and live chat bubbles cause the same problem when they inject into the document flow after the initial render. Setting these elements to a fixed position removes them from the layout calculation and eliminates their CLS contribution entirely.

MetricGood ThresholdMost Common Contractor FailurePrimary Fix
LCPUnder 2.5 secondsOversized, unoptimized hero imageConvert to WebP, resize to 1,400 px max, add preload hint
INPUnder 200 msMultiple third-party scripts on main threadDefer non-critical JS; remove unused scripts
CLSUnder 0.1Images missing dimensions; injected bannersAdd width and height to img tags; fix-position chat widgets

Three Actions for This Week

  1. Run PageSpeed Insights on your homepage and your top service page and record your LCP, INP, and CLS scores. Go to pagespeed.web.dev, enter each URL, and run the mobile test. Write down the three metric scores for each page. Under each failing metric, Google lists the specific elements causing the failure ranked by estimated impact. The LCP element is shown by name, typically a file path like /wp-content/uploads/hero.jpg. That file is your highest-priority fix. This baseline check takes 15 minutes and tells you exactly which metric is worst on which page before you spend any time on fixes. Contractors who skip the audit and apply generic fixes often fix the wrong thing and see no improvement.
  2. Convert and resize your hero image to WebP at a maximum width of 1,400 pixels. Download the hero image from your homepage using your browser’s developer tools or FTP access. Convert it to WebP using Squoosh (squoosh.app), a free browser-based tool that requires no software installation. Set the target width to 1,400 pixels and quality to 75 to 80 percent. Upload the WebP version and replace the existing image source. If you use a WordPress page builder like Elementor or Divi, upload through the media library and reassign it as the section background. Add a rel="preload" link tag to the HTML head pointing to the new image path. Between the format conversion, the resize, and the preload hint, most contractor homepages see LCP drop from the 4 to 6 second range into the 1.5 to 2.5 second range.
  3. Open the Core Web Vitals report in Google Search Console and check the Poor URLs list for mobile. Navigate to Experience, then Core Web Vitals, and look at the mobile section. The Poor URLs list shows the specific pages Google is flagging as failing for real users, not a simulated result. Click into each failing URL group to see which metric is responsible. Search Console also confirms when improvements are verified after a fix, using the same field data signal that feeds Google’s rankings. Any page in the Poor category for LCP or INP is actively competing at a disadvantage against every passing competitor page in the same market. Fixing it closes that gap for every search impression that page receives going forward.

Core Web Vitals are one of the few SEO factors where doing nothing is an active cost. A service page failing LCP competes below every passing competitor page in your market, assuming otherwise equal quality. The contractor who optimized their hero image last year and deferred their chat widget holds a performance ranking advantage that requires no ongoing maintenance to keep. The check is free, the primary fixes require no developer, and the improvement applies to every search impression that page receives for as long as it stays live.

Want this done for you?

Get a free audit of your website, SEO, and GEO presence.