Core Web Vitals for a small business site: what to fix first
Google measures three things about how a page feels: how long the main content takes to appear (Largest Contentful Paint, LCP), how much the layout jumps while loading (Cumulative Layout Shift, CLS), and how quickly the page reacts to a tap (Interaction to Next Paint, INP). It uses real Chrome visits to your site where it has enough of them, and a lab run in PageSpeed Insights where it does not. Passing is LCP under 2.5 seconds, CLS under 0.1 and INP under 200 milliseconds.
For a small business site the report is easier than it looks: five causes account for most failing scores, and each has a fix that takes minutes. This guide lists them in order of payoff, with what happened when we ran the same report on astraverify.com and fixed what it found.
The five causes, in payoff order
| Symptom in PageSpeed | Metric | Usual cause on a small site | Fix |
|---|---|---|---|
| "Image elements do not have explicit width and height" | CLS | A logo, hero or badge without size attributes; the text below it jumps when the image arrives | Add width and height attributes to every img (the real pixel size; CSS can still scale it) |
| "Properly size images" and "Serve images in next-gen formats" | LCP | A 1,300-pixel logo displayed at 300 pixels; photos exported straight from a phone | Export at the displayed size (2x for retina at most), as WebP or a palette PNG for flat artwork |
| "Largest Contentful Paint element" is a hero image | LCP | The biggest image is discovered late or loaded lazily | Put it in the HTML, not CSS; add fetchpriority="high"; never loading="lazy" on the first image |
| "Reduce unused JavaScript" and "Reduce JavaScript execution time" | INP, LCP | One bundle carries every page; chat widgets, analytics and tag managers load before content | Split rarely used pages into separate chunks; load third-party scripts after the page is interactive or not at all |
| "Serve static assets with an efficient cache policy" | LCP on repeat visits | Images and fonts sent with no Cache-Control header, so every visit downloads them again | Cache images, fonts and hashed CSS/JS for a week or more; keep HTML short-lived |
What the same report found on our own site
We ran PageSpeed Insights on astraverify.com in September 2026 with a performance score already in the mid-nineties, which is where most decently built sites sit, and still found the five items above. The header logo shipped at 1,340 by 290 pixels for a 323 by 70 pixel slot, with no width or height attributes: 52 kilobytes wasted and a layout shift of 0.08 on desktop before the headline settled. The point labels on the checks card failed the 4.5:1 contrast ratio. The landing page bundle carried the customer page, twelve guides and four policy pages that a first-time visitor never opens. Images were served with no cache header.
The fixes were a 9 kilobyte, 520-pixel palette PNG with explicit dimensions, a darker blue for the labels (6.7:1), separate chunks for the static pages, and a seven-day cache header for images. Scores went to 96 mobile and 96 desktop for performance, 100 for accessibility and best practices.
Then a new element on the landing page, the sample seal image, loaded without a reserved size and pushed mobile CLS to 0.11, just over the 0.1 line. Reserving its 400 by 124 pixel box in the HTML took CLS back to 0. One unsized image is enough to fail the metric, however good the rest of the page is.
- Name
index.html (any img)- Type
html- Value
<img src="/logo.png" width="520" height="113" alt="Company name" fetchpriority="high">
Lab numbers and field numbers are different things
PageSpeed Insights shows two sets. The lab run (Lighthouse) loads your page once on a simulated mid-range phone over a slow connection and reports what it saw; it is repeatable and it is where the fix list comes from. The field data (Chrome User Experience Report) is the 75th percentile of real visits over the last 28 days, and it is what Google Search actually uses. A site with few visitors has no field data, and the report says so; do not read that as a failure. When the two disagree, the field numbers win, and the lab run tells you why.
What page speed does and does not do for you
- Search: Core Web Vitals are a ranking signal, a small one. Good content on a slow page outranks thin content on a fast one. Treat the vitals as a tie-breaker and a user-experience issue rather than an SEO lever.
- Conversions: layout shift is what makes people tap the wrong thing; slow LCP is what makes them leave before the headline. These are the metrics that move form submissions.
- AI answer engines: their crawlers do not run Lighthouse. What matters to them is a 200 status, server-rendered text and clear metadata, which the Discoverability score covers. A fast page helps those crawlers only in that it usually means less JavaScript in the way.
How to read it in the AstraVerify report
The Site plumbing card has a "Page experience" panel that runs Google PageSpeed Insights for your home page on request, mobile strategy, and shows the performance score, the lab LCP, FCP, CLS, TBT and server response time, and the field Core Web Vitals when Chrome has enough data for your origin. It is not part of the Discoverability score, because it is Google's own measurement and a 30-second run; it is there so you see it next to the crawler and metadata checks that decide whether the page is found at all. The link to the full report opens the fix list.
Frequently asked questions
- My score is 70 on mobile and 95 on desktop. Which one matters?
- Mobile. Google indexes and ranks with the mobile page, and the lab run simulates a mid-range phone on a slow connection, which is why it is lower. Fix the mobile findings and desktop follows.
- Does a WordPress caching plugin fix this?
- It fixes the cache-header and server-response items and often minifies scripts. It does not add width and height to your images, resize an oversized logo or remove a chat widget. Do those by hand; they are the bulk of CLS and LCP on most small sites.
- What CLS is acceptable?
- Under 0.1 at the 75th percentile passes. In practice aim for 0: a page with every image, ad slot and embed sized in the HTML does not shift, and the fix is the same attribute on each element.
- Why is there no field data for my site?
- Chrome needs a minimum number of real visits over 28 days to report an origin. New and low-traffic sites show lab data only. That is fine; the lab run still lists what to fix.
- Is page speed part of the AstraVerify Discoverability score?
- No. It is shown as an add-on in the Site plumbing card. The score covers whether search engines and AI crawlers can fetch, read and understand the site; speed is measured separately by Google and shown for reference.
Check your own domain. The scan shows your live records, a score out of 100 and the exact record to publish for each fix.
Related guides
- How the Discoverability score is calculated
- How to make your site readable by ChatGPT, Perplexity and Claude
- www vs apex: pick one host and redirect the other
- JSON-LD structured data for small business sites
Canonical: https://astraverify.com/core-web-vitals-small-business-site