Search

The hero video is your Largest Contentful Paint, and the default embed weighs 1,149 kB

LCP is defined to take the poster image or the first video frame, whichever is earlier. So the video above the fold is not decoration. It is the measurement.

8 min updated 30 June 2026

1,149 kBone default YouTube embed, compressed wire weight, measured 11 December 2023
971 kBof that is JavaScript, against 632 KB of JavaScript for the median mobile home page
2.5 sthe good LCP threshold, at the 75th percentile of page loads
3%of video elements carry a poster attribute, June 2024 crawl

Largest Contentful Paint counts a video element two ways: the poster image load time, or the first frame presentation time, whichever is earlier. That is web.dev's wording, and it has been true of the field data since the change reached Chrome 116 users on roughly 22 August 2023. So the hero video is not a nice touch above the fold. It is the element being measured, and the published good threshold it has to beat is 2.5 seconds at the 75th percentile of page loads. Reach for the default YouTube embed to put it there and you have shipped 1,149 kB before one frame of video is requested, 971 kB of it JavaScript.

Poster or first frame, whichever is earlier, and 3 per cent of video elements have a poster

Chromium's changelog for the change is blunter than web.dev about what it replaced: videos had previously been ignored for LCP unless they had a poster image, and after it a video element can become an LCP candidate exactly like an image. Pages with large auto-playing videos should start seeing that video used as the LCP element, it says, and scores may improve or regress depending on what element is currently being chosen. Chrome began shipping it to users roughly 22 August 2023, rolled out to existing Chrome 116 installs over 14 days.

Now put the Web Almanac's numbers against it. In the June 2024 crawl the poster attribute was present on 3 per cent of video elements. Autoplay was on 23 per cent, playsinline on 14. So for most video elements on the web there is no poster to load, which leaves the first frame presentation as the only timestamp available, and a first frame is only presented without an interaction when the video autoplays. A hero video that autoplays muted and inline is exactly the case where the metric stops waiting on one image file and starts waiting on video bytes.

A small population, walking into a room built for images. A video element appears on 6.7 per cent of mobile pages and 7.7 per cent of desktop pages, and in the July 2025 crawl the LCP content type was an image on 76.0 per cent of mobile pages and 85.3 per cent of desktop ones. The advice written for that room, preload the hero image and size it properly, is not wrong. It just does not describe the element you put there.

The poster attribute is on 3 per cent of video elements. For the other 97, the metric is waiting on video bytes.

Three reference documents define this metric and only one of them mentions the first frame

web.dev says poster or first frame, whichever is earlier. MDN's page for the LargestContentfulPaint interface lists what counts as contentful and gives video exactly one line: the poster images of video elements. Not the first frame. Nearly three years after Chrome 116 shipped.

The W3C editor's draft is stranger. The words poster, animated and first frame do not occur in it at all, and the word video occurs once, inside an array of tag names belonging to the specification's own tooling script. Its processing model handles painted images and painted text nodes and nothing else. web.dev attributes the video rule to the Largest Contentful Paint API. The document defining that API does not contain it, and the rule everybody quotes lives in a Chromium metrics changelog.

The draft is candid about why this is hard, in a non-normative Limitations section: the API is based on heuristics, and as such, it is error prone. The changelog adds the caveat that matters more. At launch, the change only affected UKM and so CrUX reporting of LCP, and did not affect PerformanceObserver observations as measured in JavaScript. Read that twice. It moved the number Google collects and left the number your own page reads alone.

FigureOne default YouTube embed, by wire weight
JavaScriptPoster imageCSSIframed HTML and fontsDefault YouTube embed1,149 kB in total971 kBlite-youtube facade31 kB in total

Compressed wire weights for one embed of one video, measured by Zach Leatherman on 11 December 2023, with no video content preloaded. The narrow segments, in order: default embed poster 61 kB, CSS 48 kB, iframed HTML 41 kB and three Roboto web fonts 28 kB; facade JavaScript 6 kB, poster 22 kB, CSS 3 kB, and nothing iframed or fetched from a font host until the click. Totals 1,149 kB against 31 kB. One measurement, not a distribution.

One default embed carries 971 kB of JavaScript, and the median mobile home page ships 632 KB of it

Zach Leatherman measured one default YouTube embed on one video on 11 December 2023 and published the breakdown: 1,149 kB of compressed wire weight, of which 971 kB JavaScript, 61 kB for a 1280x720 JPEG poster, 48 kB of CSS, 41 kB of iframed HTML and 28 kB for three Roboto web fonts. Those five account for the total exactly. And, in his words, this conspicuously does not include any preloading of video content.

Set it beside the page it lands on. The Web Almanac's 2025 page weight chapter, drawn from the July 2025 crawl of 15,426,398 mobile websites, puts the median mobile home page at 632 KB of JavaScript, 911 KB of images, 122 KB of fonts, 77 KB of CSS and 22 KB of HTML. One embed brings one and a half times the entire script budget of that median page. It also does not amortise: resources are not shared, so two embeds weighed 2.4 MB and three weighed 3.6 MB.

The facade version of the same video weighed 31 kB, being 6 kB of JavaScript, 3 kB of CSS and a 22 kB poster, with nothing iframed until the click. A reduction of 1,149 kB to 31 kB. That is a better argument than the one usually made for it: the lite-youtube-embed README claims the element renders approximately 224x faster, and that figure carries no method, no unit and no denominator. Its supporting evidence is six screenshots whose filenames all begin Screen Shot 2019-11-03. Quote the two weights instead.

CrUX measures inside the embed and your RUM tool cannot

A top level page has no access to content inside an iframe, not even a same-origin one, so performance metrics for that content can only be measured by the iframe itself. That is a security rule, and it applies to every analytics vendor equally. CrUX is measured by the Chrome browser rather than by JavaScript on the page, so it has no such limit and does report metrics from inside iframes. web.dev names this exact case: an autoplaying, playsinline video element's first painted frame can count as an LCP candidate, and embeds for popular video streaming services may put that element in an iframe.

On 10 September 2025 Vipul Nema posted the consequence to the Chrome UX Report discussion group: CrUX showing more than 20 per cent of LCP as image where his RUM data showed less than 2 per cent. Barry Pollard, a Chrome web performance developer advocate and a named author of the web.dev LCP page, answered the same day. Third-party content in iframes, for example YouTube embeds. If that is the largest piece of content then CrUX will see it, while the JavaScript API calls used by RUM tools cannot, and may fall back to a different, smaller LCP like the heading.

Nema's follow up two days later is the part every performance lead recognises: it is difficult to get buy-in from stakeholders like SEO and Product when local tools cannot reproduce the issues showing up in CrUX. There is a narrow route out. A sub-frame can measure its own LCP and beacon it to the parent, which web.dev suggests and which Pollard calls quite tricky to implement accurately. The web-vitals library reconciles the CrUX and RUM differences where it can, and says of this one that the iframe issue is not covered.

The embed becomes the largest element in the dataset Google collects, and vanishes from the one you installed.

Google removed the audit that flagged this, and 77 per cent of desktop home pages still trip it

Lighthouse had an audit for exactly this, called Lazy load third-party resources with facades, where a facade is defined as a static element that looks similar to the embedded third-party but is not functional and therefore much less taxing on the page load. That documentation now opens with a warning: the audit has been removed as of Lighthouse 13. Issue 16430 in the Lighthouse repository, opened on 8 April 2025 and since closed, records the reasons. Possible user input that would load the third party even with a facade in place. Developer hesitation about non first party code. Potential degradation, because a YouTube facade needs a second click to run.

Google did not decide facades were wrong. It decided the audit was hard to keep and that the second click is a real cost. The Almanac's July 2025 crawl still ran Lighthouse 12, so the metric survived one more year: 77 per cent of the 12,155,374 desktop home pages crawled and 41 per cent of the mobile ones could benefit from third-party facades, as measured by Lighthouse. In June 2024 those figures were 70 per cent and 45. Desktop got worse. The Almanac adds its own caveat too, that facades bring sometimes perceptible delays once a user does interact, and with videos in particular double clicks or taps needed to start playing.

2.5 seconds or less at the 75th percentile is good, between 2.5 and 4.0 seconds needs improvement, and over 4.0 seconds is poor. In the July 2025 crawl 62 per cent of mobile sites had a good LCP against 74 per cent of desktop, with mobile carrying nearly double the poor rate, 13 per cent against 7. Mobile is the column a 1,149 kB embed lands in.

Google's own page on Core Web Vitals and Search, last updated 10 December 2025, goes exactly this far and no further: good Core Web Vitals, along with other page experience aspects, align with what its core ranking systems seek to reward. That is not a ranking promise, and anybody selling you one has stopped quoting Google.

What to do about it

  1. Look up the page in CrUX and find which element it names, because the embed that becomes your LCP is invisible to the RUM tool you installed to watch it.
  2. Swap the default YouTube embed for a facade or a self hosted file, then give whatever remains a poster attribute and preload the poster.
  3. Set the target as 2.5 seconds at the 75th percentile, mobile and desktop reported separately, and check it in field data four weeks after the change.

Questions people actually ask

does a video count as the largest contentful paint element?

Yes, and it has since the change reached Chrome 116 users on roughly 22 August 2023. web.dev's definition takes the poster image load time or the first frame presentation time for a video element, whichever is earlier. Before that change, Chromium's own changelog says videos were ignored for LCP unless they carried a poster image.

how much does a youtube embed add to page weight?

One default YouTube embed measured 1,149 kB of compressed wire weight on 11 December 2023, of which 971 kB was JavaScript, and that total contains no video content at all. Resources are not shared between embeds, so two of them measured 2.4 MB and three measured 3.6 MB. A lite-youtube facade of the same video measured 31 kB.

why is my lcp different in crux and in my analytics tool?

A cross-origin iframe is the usual reason, and a YouTube embed is a cross-origin iframe. CrUX is measured by Chrome itself and can read inside one, while a top level page cannot read performance metrics from an iframe's content, not even a same-origin one, so a RUM tool falls back to a different and smaller LCP such as the heading. Barry Pollard, a Chrome web performance developer advocate, named that cause in the Chrome UX Report discussion group on 10 September 2025.

what is a good lcp score?

2.5 seconds or less, measured at the 75th percentile of page loads and segmented across mobile and desktop devices. Between 2.5 and 4.0 seconds the page needs improvement, and over 4.0 seconds is poor. Google Search Central's page on Core Web Vitals gave 2.5 seconds when it was last updated on 10 December 2025, and web.dev, last updated 4 September 2025, is the page that attaches the 75th percentile to it.

should i use a youtube facade like lite-youtube-embed?

It cut one embed from 1,149 kB to 31 kB in the December 2023 measurement, so the weight case is settled and the cost is a second click before the video plays. That second click is one of three reasons Lighthouse gave for removing its own third-party facades audit in Lighthouse 13. Note that the README's claim of 224x faster carries no method and no denominator, so quote the two weights and not the multiplier.

Sources

  1. web.dev, Largest Contentful Paint (LCP)
  2. Chromium, Largest Contentful Paint change in Chrome 116 to better handle animated content
  3. MDN, LargestContentfulPaint
  4. W3C, Largest Contentful Paint, Editor's Draft
  5. Zach Leatherman, One YouTube Embed weighs almost 1.2 MB
  6. paulirish/lite-youtube-embed, README
  7. web.dev, Why is CrUX data different from my RUM data?
  8. Chrome UX Report Discussions, Showing Wrong Largest Contentful Paint (LCP) resource type
  9. Chrome for Developers, Lazy load third-party resources with facades
  10. GoogleChrome/lighthouse, Remove third-party-facades audit, issue 16430
  11. Web Almanac 2025, Page Weight
  12. Web Almanac 2025, Performance
  13. Web Almanac 2025, Methodology
  14. Web Almanac 2024, Media
  15. Google Search Central, Understanding Core Web Vitals and Google search results
  16. DebugBear, How To Optimize Largest Contentful Paint For Video Elements

Every figure on this page comes from one of these. Where two of them measure the same thing differently, the article says so rather than picking the flattering one.

While you are here

Your website, as a video.