Core Web Vitals checker for LCP, INP and CLS scores
Core Web Vitals checker: rate LCP, INP and CLS values as Good, Needs improvement or Poor and see if all three pass. Free, runs in your browser.
Image lazy loading checker: paste HTML to test every img tag for width and height, lazy loading on the likely LCP image. Free, runs in your browser.
Runs entirely in your browser. Nothing you enter is uploaded, logged or stored.
The dimension and lazy-loading rules follow web.dev guidance. Treating the first image as the likely LCP image is this tool's own heuristic. Nothing you paste is sent anywhere.
Missing dimensions and misplaced lazy loading fail in different ways. Without width and height the browser cannot reserve space, so content jumps when the image arrives. Lazy loading on an image that is visible at load delays the very element largest contentful paint measures. web.dev covers both in its guide to browser-level lazy loading, and this checker tests both on every img tag you paste.
The checker finds each <img> tag in the pasted HTML, reads its attributes and applies five rules:
<img> tags” to reserve space and avoid layout shift.lazy or eager. web.dev describes
eager as the browser default, the same as leaving the attribute out. Any other value is flagged.A summary line counts the images found and how many carry flags. Each image then gets a card named by its src (or srcset) and a badge: Pass with no flags, Warning when the only flag is missing dimensions, and Problem when any rule marked as a problem fails. Each flag is listed under the badge in plain words.
Work through Problem cards first. Remove loading="lazy" from the hero, add dimensions to lazy images,
and correct any misspelled loading value. Then add width and height to the Warning cards. Browsers
start fetching lazy images before they scroll into view: web.dev gives 1250px from the viewport on
4G and 2500px on 3G or slower connections, so lazy loading costs little for images well down the page.
The checker opens with this markup:
<img src="/hero.jpg" alt="Team at a desk" loading="lazy" width="1200" height="630">
<img src="/chart.png" alt="Traffic chart" width="800" height="450" loading="lazy">
<img src="/logo.svg" alt="Logo">
<img src="/photo.jpg" alt="Office" loading="lazy">
The summary reads “4 images found, 3 with flags.” /hero.jpg is a Problem: it has dimensions, but it
is the first image and is lazy-loaded. /chart.png passes, since it is lazy, sized and not first.
/logo.svg is a Warning for missing width and height. /photo.jpg is a Problem with two flags: no
dimensions, and lazy-loaded without dimensions. Deleting loading="lazy" from the hero and adding
integer width and height to the logo and photo turns all four cards to Pass.
loading="lazy" often reaches the hero too.
That is the in-viewport case web.dev singles out.width="800px" or width="100%" fail the integer rule here. Put
the pixel size in the attribute and control display size with CSS.loading="lazyload" is not a native value, so the
browser does not apply the lazy loading you intended.What markup cannot tell you: the real LCP element depends on viewport size and layout. Confirm it in a lab tool before you rely on the first-image heuristic. The parsing runs in your browser and nothing you paste is sent anywhere.
web.dev says not to lazy-load images likely to be in the viewport at load, especially the LCP image, and the first image in the markup is the most likely candidate. If your first img tag is really below the fold, such as a footer logo placed early in the source, the flag is a false positive.
web.dev recommends loading="lazy" only for images outside the initial viewport. Give those images width and height as well, since a lazy image without dimensions is the combination this checker marks as a problem.
No. web.dev says browsers that do not support the attribute ignore it, so they miss the benefit but take no penalty. It lists support in Chrome 77, Edge 79, Firefox 121 and Safari 16.4 onward.
No. This tool expects positive integers for width and height, such as width="800", and flags anything else, including "100%" or "800px", as a warning. That strictness is its own conservative rule. Set the intrinsic pixel size in the attributes and scale with CSS.
No. web.dev says the loading attribute works only on img tags (and on iframes), not on CSS background images, which is why this checker only reads img tags.
No. This tool checks loading and dimension attributes only. The image alt text checker covers missing, empty and generic alt text separately.
Core Web Vitals checker: rate LCP, INP and CLS values as Good, Needs improvement or Poor and see if all three pass. Free, runs in your browser.
Google's page experience update for desktop ran 9 days, 22 February to 3 March 2022, bringing mobile's page experience signals to desktop ranking.
Google strengthened its mobile-friendly ranking signal in May 2016, fully rolled out by 12 May. Some in the industry called it Mobilegeddon 2.
Google's page experience update rolled out on mobile from 15 June to 2 September 2021, adding Core Web Vitals to ranking. What it means today.