Add support for video and audio element lazy-loading via the loading attribute - #11980
Conversation
Specify support for the loading attribute for video using similar conventions to img and iframe, where the attribute has precedent. It has possible values of eager and lazy. When the loading attribute value is lazy, loading of any video or poster image data, as well as autoplay playback, must defer until layout is known and the video is in the viewport. This commit contains examples for how the loading attribute should take precedence over the preload, poster, and autoplay attributes. These were informed by experiments with local patch implementations to several user agents.
|
cc @whatwg/media |
|
This direction makes sense to me, but I'm not personally able to make a commitment to implement in Chromium. @zcorpan I think you've mentioned this feature, perhaps you have feedback? |
Add detail for video element lazy loading behavior when loading state is lazy. This involves returning early to prevent poster and video data loading and defining resumption steps to resume when loading state changes to eager. Also includes notes about autoplay eligibility and precedence over the preload attribute.
Adjust language of this statement about precedence of the loading attribute over the preload attribute so that it reiterates a fact.
Remove mention as audio is not mentioned in this proposed attribute addition
…g attribute These tests support the proposal for the addition of a loading attribute on the video element, designed to enable lazy-loading for video and poster data. HTML Standard PR here whatwg/html#11980 Co-authored-by: Zach Lysobey <zlysobey@squarespace.com> Co-authored-by: Brad Frost <bfrost@squarespace.com> Co-authored-by: Credo Duarte <cduarte@squarespace.com>
|
Added and linked up a PR with web platform tests web-platform-tests/wpt#57051 small note: it says my entity is unverified above, but I think it's registered correctly now and needs a check |
|
@scottjehl I tried to push changes to this branch but was denied. Can you enable "Allow edits from maintainers"? |
|
@zcorpan I looked into how to do that and it sounds like the option may not be available for forks made by an organization, such as this one. Any other way we can help? Perhaps if the changes are in a public fork of yours I could pull them from there? |
|
@zcorpan looked great, thanks. Merged here! |
|
Made a PR with 2 tests to support the recent revisions to this proposal about |
|
Comment on the Webkit standards position ticket WebKit/standards-positions#586 (comment) from Igalia :
|
|
Thanks @zcorpan ! |
|
Small update: MDN's content appears to be ready, pending this proposal moving to Stage 4. mdn/content#43434 Are there any steps I can help with on my end at this point? Thank you! |
|
This now has support from Gecko, WebKit, and Chromium, as far as I can tell. All boxes are ticked. I think this is ready for stage 4, i.e., be merged. |
…o elements. r=dom-core-reviewers,media-playback-reviewers,webidl,layout-reviewers,smaug,emilio,pehrsons,alwu Add support for the `loading` attribute on <video> and <audio> elements, mirroring the existing behavior for <img> and <iframe>. The attribute accepts `eager` (default) and `lazy`. When `loading="lazy"` is set, loading of the media resource and poster image, as well as autoplay, is deferred via an intersection observer until the element is near the viewport. Gated behind the media.lazy_loading.enabled pref. Spec: https://html.spec.whatwg.org/multipage/media.html#attr-media-loading Spec PR: whatwg/html#11980 Co-authored-by: Scott Jehl <sjehl@squarespace.com> Differential Revision: https://phabricator.services.mozilla.com/D278547
…o elements. r=dom-core-reviewers,media-playback-reviewers,webidl,layout-reviewers,smaug,emilio,pehrsons,alwu,keithamus Add support for the `loading` attribute on <video> and <audio> elements, mirroring the existing behavior for <img> and <iframe>. The attribute accepts `eager` (default) and `lazy`. When `loading="lazy"` is set, loading of the media resource and poster image, as well as autoplay, is deferred via an intersection observer until the element is near the viewport. Gated behind the media.lazy_loading.enabled pref. Spec: https://html.spec.whatwg.org/multipage/media.html#attr-media-loading Spec PR: whatwg/html#11980 Co-authored-by: Scott Jehl <sjehl@squarespace.com> Differential Revision: https://phabricator.services.mozilla.com/D278547
…o elements. r=dom-core-reviewers,media-playback-reviewers,webidl,layout-reviewers,smaug,emilio,pehrsons,alwu,keithamus Add support for the `loading` attribute on <video> and <audio> elements, mirroring the existing behavior for <img> and <iframe>. The attribute accepts `eager` (default) and `lazy`. When `loading="lazy"` is set, loading of the media resource and poster image, as well as autoplay, is deferred via an intersection observer until the element is near the viewport. Gated behind the media.lazy_loading.enabled pref. Spec: https://html.spec.whatwg.org/multipage/media.html#attr-media-loading Spec PR: whatwg/html#11980 Co-authored-by: Scott Jehl <sjehl@squarespace.com> Differential Revision: https://phabricator.services.mozilla.com/D278547
First page of the weekly MDN-upgrade backlog (133 old-shape pages). The old page was static prose with a hand-written support table, no Baseline banner, no live example, and plain-text citations. In-place upgrade, identity and lede preserved: - Baseline banner from webstatus.dev (loading-lazy-media, Baseline 'limited': Chrome/Chrome Android 150, Edge 150, no Firefox/Safari). - Formal Syntax section: keyword/state grammar from the merged HTML Standard (whatwg/html#11980 has landed since the page was written; all spec links re-pointed from the PR to media.html#attr-media-loading) plus the verbatim IDL line ([CEReactions] attribute DOMString loading; on HTMLMediaElement) and the limited-to-known-values reflection contract. - Real per-version BCD compat table (html.elements.video.loading / audio.loading): Chrome 150 full, 148-149 partial (not for <source>, crbug 514611050), Edge/Chrome Android via mirror + webstatus dates, Firefox/Safari not-supported rows with tracking bugs + positions. - Live showcase demo embedded (scroll-detector concept, HEAD-checked 200); all five live concept routes linked; stale '(when built)' text removed. - Warn-block reframed honestly: documents the v147 dev-trial stage with the real flag (LazyLoadVideoAndAudio) and the shipped 148/150 timeline. - Behavior/lifecycle, invalid-value defaults, security/privacy sections added; every citation now links its artifact directly. - New reference-contract.json (implementation-sufficient, 2 items x 9 dimensions) and _questions.json (guidanceConsulted: css-layout, accessibility, optimize-image-priority). Verified: suite 19 pass / 0 fail / 5 blocked; responsive matrix desktop:ok mobile:ok (screenshots read); validate-artifacts + test-reference-contract + check-routes PASS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TxJjQpAcTzXzR2XW5TVJQp
Specify support for the loading attribute for the video element and audio element using similar conventions to img and iframe, where the attribute already has precedent. Loading has possible values of eager and lazy. When a media element's loading attribute value is lazy, loading of any video or poster image data, as well as autoplay playback, will defer until layout is known and the video is in the viewport.
Note Jan 22, 2026: Broadening PR to include Audio Element support.
Fixes #10376
Fixes #6636
(See WHATWG Working Mode: Changes for more details.)
/acknowledgements.html ( diff )
/indices.html ( diff )
/media.html ( diff )
/urls-and-fetching.html ( diff )