Skip to main content

Core Web Vitals checker

Find the page-level causes of slow LCP, sluggish INP and layout shift across your whole site, with the fix for each. squirrelscan does not measure LCP, INP or CLS: for the numbers, use PageSpeed Insights or Search Console.

Want to see the output first? See a sample report.

Core Web Vitals are Google's three user-experience metrics: Largest Contentful Paint (LCP) for loading, Interaction to Next Paint (INP) for responsiveness and Cumulative Layout Shift (CLS) for visual stability. All three are measured in a browser, on real visits.

This checker does not measure them. It reads the HTML and response of every page it crawls and flags the causes it can see there: a hero image with no preload, an image with no width or height, a stack of blocking scripts, a slow first byte. Each finding comes with a fix.

What it checks, by metric

Largest Contentful Paint (LCP)

Good is 2.5 s or less. Flags likely hero images that are lazy-loaded or have neither a preload nor fetchpriority, blocking CSS and JavaScript in head, a first byte slower than 600 ms, missing preconnects to common CDNs, blocking font stylesheets, and hidden carousel images loaded eagerly.

Interaction to Next Paint (INP)

Good is 200 ms or less. Counts known third-party scripts (more than five warns) and parser-blocking scripts (more than three), and flags oversized JavaScript files, libraries loaded twice, legacy polyfill bundles and very large DOMs. These are risk signals, not a measurement.

Cumulative Layout Shift (CLS)

Good is 0.1 or less. Flags images and iframes with no width and height, which reserve no space before they load, so the page jumps when they arrive.

What a static audit cannot see

The report lists the measurements that need a real browser run, so the gap is written down in the report instead of assumed.

How to use it

  1. 1

    Find the slow pages

    Look up your site in PageSpeed Insights or the Core Web Vitals report in Search Console. That is where the measured numbers live.

  2. 2

    Run the audit

    Enter your site above to start a cloud audit, or run the CLI. It crawls your pages and checks each one against the rules listed here.

  3. 3

    Fix the causes

    Open the Performance section of the report. Each finding names the pages it affects and the change to make, then re-check the numbers once real visits catch up.

Why check the causes on every page

A lab test scores one URL under one simulated connection, and your slowest pages are rarely the homepage. squirrelscan runs these rules on every page it crawls, so a heavy template or a third-party tag shows up on every page it slows down, not just the one you happened to test.

How to fix what it finds

The hero image is not preloaded

Preload the likely LCP image and give it fetchpriority="high". Never lazy-load it: that delays the very paint LCP measures.

HTML

<link rel="preload" as="image" href="/hero.avif" fetchpriority="high">

<img src="/hero.avif" width="1200" height="600" fetchpriority="high" alt="">

Reported by perf/lcp-hints

Images have no width and height

Set width and height on every img and iframe so the browser reserves the space before the file arrives. CSS height: auto keeps the image responsive.

HTML and CSS

<img src="/chart.png" width="800" height="450" alt="Monthly signups">

img { max-width: 100%; height: auto; }

Reported by perf/cls-hints

Scripts block the first paint

Add defer to scripts that do not need to run before the page paints, and async to independent tags such as analytics.

HTML

<script src="/app.js" defer></script>
<script src="/analytics.js" async></script>

Reported by perf/render-blocking

Web fonts have no font-display

Add font-display to each @font-face so text shows in a fallback font while the web font loads.

CSS

@font-face {
  font-family: "Inter";
  src: url("/fonts/inter.woff2") format("woff2");
  font-display: swap;
}

Reported by perf/font-loading

The first byte is slow

A TTFB over 600 ms usually means the HTML is built on every request. Cache it at the CDN, cache the slow queries behind it, or serve the page statically.

Response header

Cache-Control: public, s-maxage=300, stale-while-revalidate=60

Reported by perf/ttfb

What this does not do

It does not measure LCP, INP or CLS, in the lab or in the field. It has no paint timings and no Chrome user data, so it cannot tell you whether a page passes.

For the numbers, PageSpeed Insights shows Chrome field data for a URL with enough traffic, next to a Lighthouse lab run. Search Console's Core Web Vitals report groups field data across the site. Use those to find the slow pages, and this checker to find what to change on them.

Keep going

Frequently asked questions

Does this measure my Core Web Vitals?
No. squirrelscan does not measure LCP, INP or CLS, in the lab or in the field. It reads each page's HTML and response and flags the likely causes of poor scores, the things you can fix in code. For field data from real Chrome users, use PageSpeed Insights or Search Console alongside it.
What are good Core Web Vitals scores?
Google rates LCP good at 2.5 seconds or less, INP at 200 milliseconds or less and CLS at 0.1 or less, measured at the 75th percentile of real visits. Each metric also has a 'needs improvement' and a 'poor' band above those.
Does a rendered audit measure them?
No. A rendered audit loads pages in a browser so rules can read the page after its JavaScript runs. squirrelscan does not record paint, layout shift or interaction timings from that run.
Does it check every page?
Yes. A cloud audit runs these rules on every page it crawls, so a template-level problem shows up on each page it affects, not just the URL you enter.
Is it free?
The llms.txt validator, the AI crawler checker, the robots.txt generator and the instant security headers check are free and need no account. The other checks run inside a squirrelscan audit. The squirrel CLI runs audits on your machine for free when you are signed out or pass --offline, with no cap on how many. Signed in, CLI and cloud audits spend credits: every account gets 500 free credits a month. An audit costs 50 credits plus 2 per audited page, and 1 per external link the cloud verifies when link checks are on.

Run the full audit

This check is one of 300+ rules in a squirrelscan audit. Run it in the cloud or on your own machine.

In the cloud

squirrelscan crawls the site for you and keeps each report in your dashboard. Every account gets 500 free credits a month. An audit costs 50 credits plus 2 per audited page, and 1 per external link the cloud verifies.

On your machine

The squirrel CLI runs the same rules locally, free while you are signed out or with --offline. Install it, then run:

Install
$
squirrel audit https://example.com

Audit your site in one command

SEO, performance, security, accessibility and agent experience issues, with exact fixes for your coding agent.

Install
$

No account needed for the CLI. Cloud audits include free monthly credits.