All articles
    Performance· 8 min read·

    Why Your Website Images Are Slowing Down Your Google Rankings (And How to Fix It)

    One unoptimized hero image can add 2+ seconds to your load time and cost you ranking positions. Here's the exact process we use to cut image weight by 95% without losing quality.

    One of our own case study images was 2.06 MB. It looked fine on a fast laptop connection. On a mobile device, or anywhere with a variable connection, it was adding two to three seconds to the page load. We fixed it in an afternoon and the page went from failing Core Web Vitals to passing them. This is what we did, and why it matters for your rankings.

    What Google Actually Measures

    Google's Core Web Vitals are three specific measurements it uses to score the experience of loading your page. They directly influence where you rank. A slow page with great content will consistently rank below a fast page with decent content. The three metrics are:

    Largest Contentful Paint (LCP)

    LCP measures how long it takes for the largest visible element on the page to load, usually a hero image or a large heading. Google wants this under 2.5 seconds. A 2MB hero image on a mobile connection will blow that budget immediately.

    Cumulative Layout Shift (CLS)

    CLS measures how much the page jumps around while it's loading. When a large, unoptimised image takes time to load, the browser doesn't know its dimensions upfront. It reserves no space. When the image finally arrives, everything below it shifts down: text, buttons, navigation. Google scores this as a bad experience and so do your users, who just tried to click something that moved.

    Interaction to Next Paint (INP)

    INP measures how quickly the page responds to user input. Heavy images don't just slow the visual load. They also block the browser's main thread and make the entire page feel sluggish to interact with.

    Google wants LCP under 2.5s, CLS under 0.1, and INP under 200ms. Miss any of these consistently and you're handing ranking positions to competitors whose sites load faster.

    What a 2MB Image Actually Costs You

    The image we were carrying on our case studies page was 2,068 KB, which is over two megabytes for a single JPEG. Here's what that means in practice:

    • On a 4G mobile connection (10 Mbps), that image alone takes ~1.7 seconds to download
    • On a 3G connection (3 Mbps), it takes ~5.5 seconds, well past Google's LCP threshold
    • It was the largest element on the page, meaning it was setting the LCP score single-handedly
    • No dimensions were declared on the element, so it was also contributing to CLS

    One image. Four problems. This is not unusual. It's the default state of most websites that haven't been audited for performance.

    The Fix: Four Steps to Image Optimisation

    1. Resize to actual display dimensions

    Most images are uploaded at the size they came off a camera or out of a design tool, often 4000×3000 pixels or larger. But your website might display that image at 800×500. The browser downloads all 4000×3000 pixels and then scales it down. You're paying the bandwidth cost for resolution no one ever sees.

    Check the actual rendered dimensions using browser DevTools (right-click → Inspect, then hover over the image element. It shows intrinsic vs rendered size). Resize the image to match the rendered size, or slightly larger for retina displays (2x rendered width maximum).

    2. Convert to WebP or AVIF

    JPEG and PNG are legacy formats. WebP typically reduces file size by 25–35% compared to JPEG at equivalent visual quality. AVIF goes further, cutting 40–50% compared to JPEG, but browser support, while wide, is slightly less universal.

    The same case study image at 2,068 KB as a JPEG came down to 94 KB as a WebP, a 95% reduction with no visible quality difference. That is not a typo. This is the normal result when you start from an oversized, unoptimised JPEG.

    Tools for conversion: Squoosh (free, browser-based, excellent), ImageOptim (Mac), Sharp (Node.js, for build pipelines).

    3. Declare width and height attributes

    Adding explicit width and height attributes to every <img> tag tells the browser exactly how much space to reserve before the image loads. This eliminates layout shift (CLS) entirely for that element. It's a two-second code change per image.

    <!-- Before: causes layout shift -->
    <img src="hero.webp" alt="Hero" />
    
    <!-- After: browser reserves space, no shift -->
    <img src="hero.webp" alt="Hero" width="1200" height="630" />

    4. Lazy-load below-the-fold images

    Images the user hasn't scrolled to yet should not be downloaded on page load. Adding loading="lazy" to any image that isn't in the initial viewport defers its download until the user is about to see it. This reduces initial page weight and improves LCP because the browser can focus bandwidth on what's actually visible.

    <!-- Hero image: load eagerly, it's above the fold -->
    <img src="hero.webp" alt="Hero" width="1200" height="630" loading="eager" />
    
    <!-- Content images: defer until needed -->
    <img src="team.webp" alt="Team" width="800" height="500" loading="lazy" />

    Before and After: Our Real Numbers

    Here's exactly what the audit and fix looked like on our own site:

    ImageBeforeAfterSaving
    Excel Kids case study2,068 KB JPEG94 KB WebP−95%
    Tusome Coffee case study~400 KB JPEG94 KB WebP−76%
    Logo asset179 KB PNG179 KB PNGAlready small

    The case studies page went from carrying over 2.5MB in images to under 400KB. Page weight dropped by more than 80% from images alone. LCP on mobile went from failing to passing. CLS went to zero once width/height attributes were added.

    How to Audit Your Own Site Right Now

    Run your homepage through PageSpeed Insights on mobile. Look for:

    • Serve images in next-gen formats: which images should be WebP/AVIF
    • Properly size images: which images are oversized for their display dimensions
    • Image elements do not have explicit width and height: your CLS culprits
    • Defer offscreen images: images that need lazy loading

    Any of these showing up in the red or orange band means your images are actively costing you ranking positions on mobile searches, which is where the majority of your potential clients are searching from.

    This Is Table Stakes Now

    Google has been using Core Web Vitals as a ranking factor since 2021. It's already here, already affecting your position, and your competitors who've done this work are sitting above you because of it. The fix is not complex. It's mostly a one-time audit and a few hours of asset work.

    Don't have the time to audit your site's speed? Our web design studio builds lightweight, high-performance web products with technical SEO baked in by default. Image pipelines, Core Web Vitals scores, all of it is built into the delivery spec, not bolted on afterwards. Let's talk about your site →

    // ready to grow?

    Have a project in mind? Let's talk about it.

    Book a 30-minute call. Tell us which service you need: design, dev, automation, SEO, content or brand. We'll come back with scope, timeline and price. One service or several, your call.

    // ready to grow

    Build something that performs,
    not just looks the part.

    KadoshDev logo
    KadoshDevWeb Design & Automation

    We help businesses grow with design, development, SEO, automation and brand, built around clear goals, honest scopes and dependable delivery.

    What we do

    • Website Design & Development
    • Logo Design & Branding
    • UI/UX Design
    • SEO & Content Writing
    • Automation & Workflows
    • QA & Maintenance

    Get in touch

    © 2026 KadoshDev · Crafted with care

    Available for projects