Skip to content
Nabin Babu Uranw signature

Published 2026-11-06, by Nabin Babu Uranw

Where a small website loses time: Core Web Vitals in practice

The Core Web Vitals problems I see most often on small sites, and what to change first: images, fonts, layout shift and heavy animation code.

What the three numbers measure

Largest Contentful Paint (LCP) is how soon the main content appears. Interaction to Next Paint (INP) is how quickly the page responds to a tap. Cumulative Layout Shift (CLS) is how much the layout jumps while it loads.

On small sites the same few causes come back again and again.

Images are usually the biggest cost

Serve each image at the size it is shown, in a modern format such as WebP or AVIF, and set its width and height so the browser reserves the space. Lazy-load images below the first screen, but let the hero image load early.

Fonts should not hide the text

Use font-display: swap, load only the weights the page uses, and host the font files with the site. A page that waits for several font files before showing any text feels slow even when everything else is fast.

Reserve space for late content

Give room to anything that arrives late: a banner, a video, an embedded map, or a form message. A shift that moves a button under a thumb is the kind of problem users notice most.

Animation code has a cost

Motion libraries are useful, but their script runs on the main thread. Keep animations short, respect the reduced-motion setting, and remove any effect that does not help the reader.

Measure, change one thing, measure again

Run Lighthouse on mobile before changing anything, fix one group of problems, and run it again. Compare several runs, because one run can be an outlier.

More from this blog

How I check a static Next.js site before it goes liveBS dates, VAT and bills: what a Nepali business website needsAll articles