What is MPEG-DASH? Dynamic Adaptive Streaming over HTTP Explained
Learn what MPEG-DASH is, how the ISO/IEC 23009-1 standard streams adaptive video with MPD manifests, and how platforms like Videospan use it with HLS.
MPEG-DASH (Dynamic Adaptive Streaming over HTTP) is an international standard for adaptive bitrate streaming published as ISO/IEC 23009-1 in 2012. Developed by MPEG as a vendor-neutral alternative to proprietary protocols like Apple's HLS and Microsoft's Smooth Streaming, DASH describes streams with an XML manifest called an MPD and leaves codecs, containers, and DRM up to the implementer. It is the default delivery format for YouTube, Netflix (alongside others), Android, and most smart TV platforms—and the foundation of the open-web streaming stack built on Media Source Extensions.
DASH is also half of the delivery equation at Videospan: alongside HLS, it carries our rendered videos to Chrome, Edge, Android, and connected TVs—the open-standard side of a delivery stack that reaches every device without proprietary technology.
DASH emerged from a period of protocol fragmentation. By 2010 the industry was juggling Apple's HLS, Microsoft's Smooth Streaming, and Adobe's HTTP Dynamic Streaming—three incompatible ways of doing the same thing. MPEG began work on a unified standard that year, drawing on contributions from all three camps, and published the first edition of ISO/IEC 23009-1 in April 2012. The DASH Industry Forum (DASH-IF) formed the same year to promote adoption and publish interoperability guidelines, since the base spec deliberately leaves many options open. Browser playback became practical through Media Source Extensions, the W3C API that lets JavaScript feed media segments directly to the video element—enabling open-source players like dash.js and Shaka Player. Later work on the standard added a low-latency mode built on CMAF chunks and chunked transfer encoding, bringing live latency down to a few seconds.
How MPEG-DASH works
DASH follows the same adaptive pattern as HLS, but with a single XML document describing the entire stream:
- Encode and segment. The source is encoded into multiple representations (renditions), each split into short segments—almost always fragmented MP4, since DASH is codec- and container-agnostic.
- Publish an MPD. The Media Presentation Description is an XML file that organizes representations into adaptation sets (video, audio, subtitles) within periods, and tells the player exactly how to construct or find every segment URL.
- The player parses the MPD. It selects one representation per adaptation set based on device capabilities and measured bandwidth, then fetches segments in sequence—switching representations as conditions change.
- Live streams use dynamic MPDs. For live, the MPD is re-fetched periodically or uses a
SegmentTimelineso the player can compute which segments exist without re-downloading the whole manifest. - Segments ride plain HTTP. Like HLS, everything is cacheable on standard CDNs, so DASH scales without specialized servers.
DASH's flexibility is its signature: where HLS prescribes playlists and (originally) MPEG-TS segments, the DASH spec deliberately standardizes only the manifest and segment formats, leaving room for any codec—H.264, HEVC, VP9, or AV1. That neutrality is also why DASH became the reference architecture for other standards: broadcast-oriented profiles like DVB-DASH and HbbTV build directly on it, and CMAF was specified to slot cleanly into DASH presentation models.
Anatomy of a DASH stream
A minimal VOD MPD looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
type="static"
mediaPresentationDuration="PT2M0S"
minBufferTime="PT2S">
<Period duration="PT2M0S">
<AdaptationSet mimeType="video/mp4" codecs="avc1.640028">
<Representation id="v1080" bandwidth="5000000" width="1920" height="1080">
<SegmentTemplate timescale="90000" duration="540000"
media="video_1080/$Number$.m4s"
initialization="video_1080/init.mp4"/>
</Representation>
<Representation id="v360" bandwidth="800000" width="640" height="360">
<SegmentTemplate timescale="90000" duration="540000"
media="video_360/$Number$.m4s"
initialization="video_360/init.mp4"/>
</Representation>
</AdaptationSet>
<AdaptationSet mimeType="audio/mp4" codecs="mp4a.40.2" lang="en">
<Representation id="a128" bandwidth="128000">
<SegmentTemplate timescale="48000" duration="288000"
media="audio/$Number$.m4s"
initialization="audio/init.mp4"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>Key elements:
<Period>— a time slice of the presentation. Multi-period MPDs enable server-side ad insertion and program changes.<AdaptationSet>— a group of interchangeable representations of one media type (video, audio, subtitles), aligned for seamless switching.<Representation>— one encoded rendition, with its bandwidth and resolution.<SegmentTemplate>— the addressing scheme. Here,$Number$lets the player construct every segment URL arithmetically (540000at a90000timescale = 6-second segments), so the MPD stays tiny even for hours of content. The alternative,<SegmentTimeline>, lists exact segment boundaries explicitly—essential for live streams with irregular durations.
How Videospan uses MPEG-DASH
Videospan publishes DASH alongside HLS for every rendered video. The MPD describes the same rendition ladder—multiple resolutions of every aspect-ratio variant our pipeline produces—and MSE-based players on Chrome, Edge, Android, and smart TVs use it to adapt playback to the viewer's bandwidth in real time. The device picks the protocol; the viewer never has to think about it.
DASH's codec-agnostic design matters for the long term. Because the manifest places no constraints on codecs, a delivery layer built on DASH can adopt more efficient codecs as browser and device support matures—without re-architecting how videos are described or delivered. The same XML machinery that serves H.264 today serves whatever comes next, which is the kind of future-proofing we want under a platform our customers build libraries on.
DASH's multi-period architecture also mirrors how enterprise content actually works: intros, bumpers, and program changes are composition problems the standard already understands natively. And because DASH segments are ordinary HTTP objects, they share CDN caches with everything else we deliver—one packaged asset, every open-web device.
DASH vs HLS and CMAF
| MPEG-DASH | HLS | CMAF | |
|---|---|---|---|
| Standard | ISO/IEC 23009-1 (2012) | Apple spec / RFC 8216 (2009) | ISO/IEC 23000-19 (2016) |
| Manifest | MPD (XML) | .m3u8 text playlists | Uses HLS or DASH manifests |
| Segments | fMP4 (any codec) | MPEG-TS or fMP4 | fMP4 with CMF chunks |
| Classic latency | 6–30 seconds | 6–30 seconds | Enables 2–4 second low latency |
| Low-latency mode | LL-DASH via chunked CMAF (~2–4s) | LL-HLS (~2–3s) | Chunked transfer encoding |
| Safari support | None natively | Native | Via LL-HLS / DASH player |
| DRM | CENC: Widevine, PlayReady | FairPlay, Widevine, PlayReady | CENC / cbcs across both |
| Multi-period / ad insertion | Native in spec | Via DISCONTINUITY tags | Protocol-agnostic |
| Licensing | Free to implement | Free to implement | Free to implement |
Advantages
- Truly open standard. ISO-governed and vendor-neutral, with no single company controlling its direction. Interoperability profiles from DASH-IF keep implementations consistent.
- Codec- and container-agnostic. H.264, HEVC, VP9, AV1—the manifest doesn't care. This made DASH the natural home for AV1 and VP9 deployments from YouTube and Netflix.
- Efficient live manifests.
SegmentTemplateandSegmentTimelinelet live MPDs stay compact and update cheaply compared to re-listing every segment. - First-class DRM story. Common Encryption (CENC) support means one encrypted asset can serve Widevine and PlayReady license requests—central to premium content delivery.
- Multi-period architecture. Program changes, ad breaks, and content stitching are native concepts, not workarounds.
Limitations
- No native Safari support. Apple's platforms have never implemented DASH playback; browser delivery relies on MSE-based players like dash.js or Shaka Player, and iOS is effectively HLS-only. This alone forces most services to dual-publish.
- XML manifests are verbose and heavier to parse than HLS playlists, especially for long DVR windows without segment templating.
- The spec's flexibility cuts both ways. Many features are optional, so real-world MPDs vary widely; the DASH-IF interoperability guidelines exist precisely because "valid DASH" doesn't guarantee "plays everywhere."
- Low-latency DASH arrived later and is less uniformly deployed across CDNs than LL-HLS.
When to use MPEG-DASH
Use DASH when your audience lives on the open web, Android, and connected TVs, or when you need capabilities HLS doesn't prioritize: AV1/VP9 delivery, CENC multi-DRM for premium licensed content, or multi-period manifests for complex ad-supported programming. Broadcasters and OTT services with Widevine/PlayReady requirements typically treat DASH as their primary protocol.
The practical reality for most organizations—including enterprise video platforms delivering branded content across regions and devices—is that DASH and HLS are not an either/or decision. Encode once into CMAF segments, publish both an MPD and an .m3u8, and let each device take what it natively prefers. DASH serves Chrome, Android, and smart TVs; HLS covers the Apple ecosystem; the CDN serves both from a single cache.
For teams evaluating platforms, DASH support is a useful proxy for standards maturity. Ask a vendor whether they dual-publish HLS and DASH from a single encode (they should), whether playback relies on maintained open-standard players or a proprietary black box, and how their delivery layer will handle next-generation codecs. A platform that treats DASH as a first-class citizen is one tracking the open ecosystem rather than locking you into its own.
Glossary
- MPD— Media Presentation Description
The XML manifest at the heart of every DASH stream, describing periods, adaptation sets, representations, and segment addressing.
- Representation
One encoded rendition of an adaptation set at a specific bitrate and resolution—DASH's term for a rung on the bitrate ladder.
- Adaptation set
A group of representations of the same media type (video, audio, subtitles) that the player can switch between seamlessly.
- Period
A time slice of a DASH presentation. Multiple periods enable ad insertion, program changes, and content stitching.
- SegmentTemplate
An MPD element that defines segment URLs with variables like $Number$, letting players compute addresses without an explicit list.
- SegmentTimeline
An MPD element that explicitly lists segment start times and durations—required for live streams with irregular segment boundaries.
- MSE— Media Source Extensions
The browser API that lets JavaScript players feed media segments directly to a video element, making DASH (and non-native HLS) playback possible in Chrome, Firefox, and Edge.
- CENC— Common Encryption
The ISO/IEC 23001-7 standard for encrypting media once in a way that multiple DRM systems (Widevine, PlayReady) can license independently.
- DASH-IF— DASH Industry Forum
The industry body that publishes interoperability guidelines so DASH implementations from different vendors actually work together.
Frequently asked questions
Related
What is HLS? HTTP Live Streaming Explained
Learn what HLS (HTTP Live Streaming) is, how Apple's protocol delivers adaptive video over .m3u8 playlists, and how Videospan uses it to reach any device.
What is CMAF? Common Media Application Format Explained
Learn what CMAF (Common Media Application Format) is, how chunked fMP4 segments unify HLS and DASH delivery, and how Videospan uses it for low-latency video.