What is Video Preload?
Video preload is a hint that tells a browser or player how much of a media resource to fetch before the viewer starts playback. On the HTML video element, the preload attribute accepts none, metadata, or auto, and the browser may ignore it.
How Video Preload works
The HTML Standard defines preload on audio and video elements as a hint with three keywords. none signals that the author does not expect the viewer to need the media, or that the server wants to minimize unnecessary traffic. metadata signals that fetching dimensions, track list, and duration, and possibly the first few frames, is reasonable. auto, or the attribute with an empty value, lets the browser put the viewer first, up to optimistically downloading the entire resource. When the attribute is missing or invalid, the default is implementation-defined, and the standard suggests the metadata behavior. A browser may ignore the hint altogether, for example because of explicit user preferences or the available connectivity. The value can be changed after loading has started, so a page with many videos can ship none and switch a player to auto once the viewer presses play.
Key facts
- The values are hints, not byte budgets. With
metadata, the HTML Standard says a browser will typically obtain some frames in addition to dimensions, track list, and duration; withautoit may download the entire file. No value caps the transfer, so measure the requests each target browser makes before play. - The effective behavior can differ from the markup.
autoplaycan overridepreloadwhen the browser permits autoplay, because a video that plays has to buffer regardless of the hint, and browsers apply their own policy. Chromium’s media element source, as read in October 2026, downgradesautotometadataon cellular connections and treatsnoneasmetadataonce a script calls the element’sload()method. Published rule lists go stale: the Data Saver rule in web.dev’s preload article is not in that source. - The attribute does not control players built on Media Source Extensions, such as hls.js, because the application fetches the media and appends it to the element itself. Use the player’s own setting. By default, hls.js loads the quality-level playlist and first fragments automatically once the manifest is parsed; with
autoStartLoadset tofalse, that loading waits for astartLoad()call. In both casesloadSource()requests the manifest, which hls.js parses into the available quality levels and tracks. To request nothing from the stream before play, delayloadSource()as well. - Browsers may request a media file in byte ranges; the HTML Standard leaves the choice of range to the implementation. In a non-fragmented MP4 the index is usually written at the end of the file unless the encoder moved it to the start, as FFmpeg’s
faststartoption does, so reading it without transferring everything before it depends on the server answeringRangerequests with206 Partial Content. HTTP allows a server to ignoreRangeand send the whole file. preload="none"does not stop the poster from loading. The HTML Standard fetches the poster image when the element is created or itsposterattribute changes, independently ofpreload. The standard’sloading="lazy"attribute is what defers both the poster and the preload behavior until the element approaches the viewport, and only when scripting is enabled; confirm that your target browsers implement it for video.
When Video Preload matters
Set preload explicitly, because the default differs between browsers. none suits pages where playback is unlikely or many videos are listed, metadata suits players that need duration and dimensions before play, and auto suits a video the viewer is expected to watch, at the cost of transferring media that may never be played.
How Transloadit helps with Video Preload
Preload is decided by the browser or player at playback time, so it is not a Transloadit setting. Transloadit prepares the files a player loads: the /video/thumbs Robot extracts images from a video for use as previews, which can supply the poster a player shows before any media has been fetched.
Set the preload value in your own markup or player configuration, and choose which extracted frame to publish as the poster.
Sources
- HTML Standard: media elements, including the preload, poster, and loading attributes
- MDN: the video element and its preload, poster, and loading attributes
- web.dev: Fast playback with audio and video preload
- RFC 9110: HTTP Semantics, section 14 (Range Requests) and section 15.3.7 (206 Partial Content)
- Chromium source: HTMLMediaElement::load(), PreloadType(), and EffectivePreloadType()
- hls.js API documentation: autoStartLoad and startLoad()
- hls.js source: loadSource() and startLoad()
- hls.js source: playlist loader, onManifestLoading() and checkAutostartLoad()
- FFmpeg Formats Documentation: MOV/MP4 muxer and the faststart flag