Core Web Vitals — What They Are & How to Fix Them Free (2026) | Seobility

Core Web Vitals
What They Are & How to Fix Them Free

Core Web Vitals are Google’s official page experience ranking factors — and most websites are failing at least one of them right now. The good news: you can check your scores completely free and fix the most impactful issues without paying for developers or expensive tools. This guide explains exactly what each metric measures, what thresholds Google requires, and the fastest free fixes for each one.

Since Google confirmed Core Web Vitals as ranking factors, pages that fail these thresholds are actively penalized in competitive search results — particularly on mobile. With mobile-first indexing now the standard, your mobile Core Web Vitals score is what Google primarily evaluates.

3
Core Web Vitals
63%
Sites Fail at Least One
$0
Cost to Check & Fix
2.5s
Max Good LCP

What Are Core Web Vitals?

Core Web Vitals are three specific performance metrics that Google uses to measure real-world page experience. Unlike general speed scores, each metric captures a distinct dimension of how users actually experience a page loading and interacting with it.

🖼️
LCP
Largest Contentful Paint
Measures loading speed — how long until the largest visible element (hero image, H1, video) fully renders on screen.
✅ Good: Under 2.5s
⚠️ Needs work: 2.5–4s
❌ Poor: Over 4s
📐
CLS
Cumulative Layout Shift
Measures visual stability — how much page elements unexpectedly move while loading. High CLS = content jumping around as you try to click it.
✅ Good: Under 0.1
⚠️ Needs work: 0.1–0.25
❌ Poor: Over 0.25
👆
INP
Interaction to Next Paint
Measures interactivity — how fast the page visually responds after a user taps, clicks, or types. Replaced FID in March 2024.
✅ Good: Under 200ms
⚠️ Needs work: 200–500ms
❌ Poor: Over 500ms

Important: Google measures Core Web Vitals using real user data (field data from Chrome users visiting your site) — not just lab simulations. A page can score well in PageSpeed Insights’ lab test but still fail in the real-world field data if your server is slow for users in certain regions or on slower devices.

How to Check Your Core Web Vitals for Free

Three free tools give you complete Core Web Vitals data — use all three for the full picture:

ToolBest ForData TypeSignup?
Seobility Speed CheckerQuick full speed audit with actionable fixesLab dataNo
Google PageSpeed InsightsOfficial Google scores + field dataLab + FieldNo
Google Search ConsoleSite-wide field data for all pagesReal user dataAccount needed
Chrome DevToolsDeep debugging of specific issuesLab dataNo

Start with Seobility’s free Speed Checker — it gives you all three Core Web Vitals scores plus specific fix recommendations in one place, with no account needed. Then use Google Search Console’s Core Web Vitals report for the real-world field data across your entire site.

⚡ Check Core Web Vitals Free →

Fixing LCP — Largest Contentful Paint

LCP is almost always the Core Web Vital that most sites fail. Your LCP element is typically your hero image, banner, or the largest H1 heading. Everything that happens before that element loads counts against your LCP score.

🖼️

Fix 1 — Compress & Convert Hero Images to WebP

Biggest Impact

The single most impactful LCP fix for most sites. If your LCP element is an image (hero, banner, featured image), its file size directly determines your LCP score. Uncompressed JPG/PNG images of 500KB–2MB are extremely common and add 1–3 seconds to LCP alone.

  • Convert all hero and above-the-fold images to WebP format — same visual quality at 25–35% smaller file size
  • Compress to under 100KB for most hero images (150KB max for large full-width banners)
  • Free compression tools: Squoosh (squoosh.app), TinyPNG, Cloudinary (free tier)
  • In WordPress: plugins like ShortPixel, Smush, or Imagify auto-convert and compress on upload
🖼️ Free Image Optimizer →
📌

Fix 2 — Add fetchpriority=”high” to Your LCP Image

High Impact

Browsers load many resources simultaneously and don’t always know which image is your LCP element. The fetchpriority="high" attribute tells the browser to prioritize loading your LCP image above everything else — often reducing LCP by 0.5–1 second instantly.

  • Find your LCP image in your page’s HTML — it’s usually the first large image in the page body
  • Add the attribute: <img src="hero.webp" fetchpriority="high" alt="...">
  • Only use this on ONE image — your actual LCP element. Using it on multiple images cancels the benefit.
  • In WordPress: add via a plugin like Perfmatters or manually in your theme’s header template

Fix 3 — Enable Caching & Use a CDN

High Impact

Browser caching stores your site’s resources locally on users’ devices so return visitors don’t re-download everything on each visit. A CDN (Content Delivery Network) serves your files from servers physically closer to each user, reducing network latency — the hidden LCP killer.

  • WordPress: install WP Rocket, SpeedyCache, W3 Total Cache, or LiteSpeed Cache (all have free tiers)
  • Free CDN options: Cloudflare (free plan), BunnyCDN (very affordable)
  • Cloudflare’s free plan alone typically improves LCP by 0.3–0.8 seconds for most sites
  • Also enable GZIP or Brotli compression on your server — reduces HTML/CSS/JS transfer size by 60–80%
🚀

Fix 4 — Eliminate Render-Blocking Resources

Medium Impact

CSS and JavaScript files that load in the <head> block the browser from rendering any visible content until they finish downloading. Every render-blocking resource adds directly to your LCP time.

  • Defer non-critical JavaScript: add defer or async attribute to script tags
  • Inline critical CSS (the CSS needed for above-the-fold content) directly in the HTML
  • Remove or delay third-party scripts (chat widgets, analytics, ad scripts) that aren’t needed for initial render
  • In WordPress: caching plugins like WP Rocket handle this automatically — enable “Delay JavaScript Execution”

Fixing CLS — Cumulative Layout Shift

CLS is the most frustrating metric for users — it’s that annoying experience where you’re about to click something and the page jumps, making you tap the wrong thing. Fortunately, CLS is usually caused by a few very specific, easy-to-fix issues.

📏

Fix 1 — Add Width & Height to All Images

Biggest Impact

This is the #1 cause of CLS on most sites. When images don’t have explicit width and height attributes in HTML, the browser doesn’t know how much space to reserve. It loads the text content first, then the image appears and pushes everything down — causing massive layout shift.

  • Add explicit dimensions to every image: <img src="image.jpg" width="800" height="450" alt="...">
  • Even if you size images with CSS, the HTML attributes are needed so the browser reserves space before loading
  • In WordPress: modern versions (5.5+) automatically add width/height to images inserted via Media Library
  • Check older images — images uploaded before WordPress 5.5 may lack these attributes
📢

Fix 2 — Reserve Space for Ads, Embeds & Dynamic Content

High Impact

Ads, YouTube embeds, Twitter cards, and cookie consent banners that inject into the page after load are major CLS contributors. The fix is always the same: reserve the space before the content loads.

  • Ad slots: set a fixed min-height on ad containers matching the largest expected ad size
  • YouTube embeds: wrap in a container with aspect-ratio CSS (e.g., aspect-ratio: 16/9) and lazy-load with a placeholder
  • Cookie/GDPR banners: position them at the bottom of viewport (fixed position) — never inject at top pushing content down
  • Chat widgets: load them only after user interaction (lazy load on scroll or click)
🔤

Fix 3 — Fix Font Swap Layout Shifts

Medium Impact

When web fonts load, the browser initially renders text in a fallback system font, then swaps to the custom font when it loads. If the two fonts have different sizes or letter-spacing, all text reflows causing CLS.

  • Add font-display: optional instead of font-display: swap — prevents the swap if font isn’t loaded fast enough
  • Preload critical fonts: <link rel="preload" href="font.woff2" as="font" crossorigin>
  • Use system fonts for body text — no swap, zero CLS from fonts
  • Use font-size-adjust CSS property to match fallback font metrics more closely

Fixing INP — Interaction to Next Paint

INP replaced FID (First Input Delay) in March 2024 and measures overall page interactivity throughout the entire page visit — not just the first click. A poor INP means your page feels sluggish when users tap, click, or type. This is almost always caused by JavaScript blocking the browser’s main thread.

⚙️

Fix 1 — Reduce JavaScript Execution Time

Biggest Impact

Heavy JavaScript that runs on the main thread prevents the browser from responding to user interactions immediately. Every millisecond of JavaScript executing is a millisecond added to your INP score.

  • Audit your JavaScript with Chrome DevTools → Performance tab → record a page interaction
  • Identify “Long Tasks” (tasks taking over 50ms) — these are your INP killers
  • Break up long tasks using setTimeout(fn, 0) to yield control back to the browser between chunks
  • Remove unused JavaScript — the biggest wins often come from removing plugins/scripts you don’t need
  • In WordPress: deactivate plugins you don’t actively use — each one adds JavaScript overhead
🔌

Fix 2 — Defer and Delay Third-Party Scripts

High Impact

Third-party scripts (Google Tag Manager, Facebook Pixel, chat widgets, analytics, ad scripts) are the most common INP killers because they run on your main thread and you have no control over their code quality. Each one adds to INP.

  • Delay all non-essential third-party scripts until after user interaction using a script manager
  • In WordPress: use Perfmatters or WP Rocket’s “Delay JavaScript” feature — delays scripts until first user scroll or click
  • Load Google Analytics with async attribute — prevents it from blocking page interactivity
  • Audit your Tag Manager tags — remove any tags for services you’ve stopped using
  • Replace heavy scripts with lighter alternatives (e.g., Fathom or Plausible instead of Google Analytics for simpler sites)
⚡ Check INP Score Free →

WordPress Core Web Vitals — Complete Plugin Stack

If your site runs on WordPress, here’s the most effective free/affordable plugin combination for passing all three Core Web Vitals:

  • Caching: SpeedyCache (free), WP Rocket (paid but highly effective), or LiteSpeed Cache (free if on LiteSpeed server)
  • Image optimization: ShortPixel (free tier available), Imagify, or Smush — auto WebP conversion + compression
  • CDN: Cloudflare free plan — set up in 15 minutes, immediately improves LCP
  • Script management: Perfmatters ($24.95/year) — best tool for deferring/delaying third-party scripts
  • Redirects (for CLS): Redirection plugin handles 301s without server config

Most impactful free WordPress fix: Install Cloudflare (free plan) + ShortPixel or Smush (free tiers) this week. Together these two changes typically improve LCP by 0.8–1.5 seconds and bring most WordPress sites into the “Good” range for LCP without any paid tools.

⚡ Check Your Core Web Vitals — Free Now

No signup. No account. Check LCP, CLS, and INP for any URL instantly and get specific fix recommendations. Takes 30 seconds.

Frequently Asked Questions

What are Core Web Vitals?
Core Web Vitals are three Google ranking metrics measuring real-world page experience: LCP (Largest Contentful Paint) measures loading speed — must be under 2.5 seconds. CLS (Cumulative Layout Shift) measures visual stability — must be under 0.1. INP (Interaction to Next Paint) measures interactivity — must be under 200ms. Pages passing all three thresholds receive a Google ranking advantage.
How do I check my Core Web Vitals for free?
Three free tools: Seobility.org’s Website Speed Checker (seobility.org/website-speed-checker/) gives all three scores with fix recommendations in 30 seconds — no signup. Google PageSpeed Insights (pagespeed.web.dev) gives Google’s official lab scores plus field data from real Chrome users. Google Search Console shows site-wide field data for all your pages in the Core Web Vitals report.
Do Core Web Vitals affect Google rankings?
Yes — Google confirmed them as ranking factors since 2021 and they remain active in 2026. The ranking impact is most significant when two competing pages have similar content quality. Pages with Good scores across all three metrics receive a measurable advantage, especially on mobile searches where the gap between passing and failing sites is largest.
What is the fastest LCP fix?
The fastest high-impact LCP fix is compressing and converting your hero image to WebP format (reduces file size 25–35%) combined with adding fetchpriority=”high” to that image element. Together these two changes typically reduce LCP by 1–1.5 seconds and take under 30 minutes to implement — free with tools like Squoosh for image conversion.
What causes layout shift (CLS)?
The most common CLS causes are: images without explicit width and height attributes (browser can’t reserve space), ads loading after page content and pushing elements down, web font swapping from fallback to custom font causing text reflow, cookie/GDPR banners injecting at the top of the page, and YouTube or social media embeds loading without pre-reserved space.
My desktop scores are good but mobile fails. Why?
Mobile devices have less processing power, slower network connections, and smaller screens — all of which make Core Web Vitals harder to pass. Since Google uses mobile-first indexing, your mobile scores are what matters most for rankings. Common mobile-specific issues: images not served at appropriate mobile sizes, JavaScript too heavy for lower-powered mobile CPUs, and render-blocking scripts that take longer to process on mobile.