← notes

When browser LCP measures the wrong thing on a feed

Mar 12, 2026

Largest Contentful Paint was measuring the wrong thing on an image feed, so measure the right one.

On an image feed the largest contentful element at paint can be a header, a placeholder, or a post nobody came to see, and the number moves for reasons unrelated to whether the feed appeared. So the tool defines a narrower metric: time to the first feed image, identified by CDN host and a width filter of at least 500px, measured to full load rather than to paint. The load condition is complete and naturalWidth > 0, because an <img> can exist, be sized, and show nothing.

It polls the DOM rather than using PerformanceObserver. Less elegant, and correct here: the observer reports paints, and the question is about one specific element identified by attributes the observer does not hand you.

Mobile serves 540px images and desktop 1200px, so the two are reported separately rather than averaged into something meaningless. --runs exists because one measurement of a CDN-backed image is mostly noise.

The measured page came in at 4371ms against a Web Vitals poor threshold of 4000ms.