Images
Web performance
width and height
Add width and height (the initial image dimensions), it allows browsers to reserve space on the first render and avoids layout shifts when the image loads later.
Lazy-loading
Lazy-load with <img loading="lazy" /> only when necessary (far from initial viewport). It will load the image when they get near the viewport, but it might slow down loading images in the initial viewport.
WEBP support
Add webp support with fallbacks via picture tag:
<picture>
<source srcset="img.webp" type="image/webp" />
<source srcset="img.jpg" type="image/jpeg" />
<img src="img.jpg" />
</picture>Generate image with webp format via the CLI:
cwebp -q 80 initial_image.png -o output_image.webpLCP
Check if an image is the LCP in devtools with the Lighthouse plugin or Performance tab.
Images are slow to render, shifting the LCP to a textual element improves the score (LCP=FP).
Accessibility
Add alt text, or alt="" if it has no semantic meaning. Avoid background-image if there is a semantic meaning.
Styling
The css properties object-fit and object-position help crop and position img like a background image.
Responsive
Make an image resize until its height is 100px and then keep the size and crop sides instead.
img {
width: 100%;
min-height: 100px;
object-fit: cover;
}