You know an ad should play before your video, two more partway through, and one at the end — but how does the player actually know that schedule? The answer is VMAP. If VAST describes a single ad, VMAP is the timetable that says where the ad breaks go across your video and how many ads each one holds. It is the difference between having ads available and having a coherent, publisher-defined ad schedule.
This guide explains what VMAP is, how it works with VAST, the ways you can position ad breaks, how it fits into streaming delivery for both on-demand and live video, and when you actually need it. If you have already read our blog on what VAST is, this is the companion piece that completes the picture.
What is VMAP, in one sentence
VMAP (Video Multiple Ad Playlist) is an XML-based standard from the Interactive Advertising Bureau (IAB) that describes the schedule of ad breaks within a single piece of video content — where each break falls, how many ads it contains, and what type — while pointing to a VAST response for the actual ad in each break.
The key word is schedule. VMAP does not contain the ad, choose the ad, or serve the ad. It lays out the structure of ad opportunities across the video timeline — a pre-roll here, mid-rolls at these points, a post-roll at the end — and hands off the job of filling each break to VAST. Think of VMAP as the timetable and VAST as the individual trains: the timetable says a train departs at 9:00, 12:00, and 5:00, but each train is a separate vehicle with its own contents.
The problem VMAP was created to solve
To understand why VMAP exists, it helps to know the problem it was built for. In the early days of digital video advertising, a content owner who wanted ads in their video needed control over the video player to decide where those ads went. That was fine when they owned the player — but the moment their content was syndicated to a platform they did not control, such as a third-party site or an aggregation service, they lost the ability to manage ad placement.
The IAB introduced VMAP to fix exactly this. It is an XML template that lets a content owner describe the ad-break structure of their video independently of the player. The publisher defines the schedule once, in a standard format, and any VMAP-compatible player or platform can read it and honor that schedule — even one the publisher does not own. In other words, VMAP separates the ad schedule from the player, so the publisher keeps control of ad placement no matter where the content plays.
VMAP and VAST: how they work together
This is the relationship that confuses people most, so it is worth being precise. VMAP and VAST are not competitors and you do not choose between them — they are designed to work together, each doing a different job.
VAST describes a single ad: which video file to play, how long it runs, and how to track it. It answers the question “what plays in this break?” But VAST on its own has no concept of a timeline. It describes one ad for one slot; it does not know whether that slot is a pre-roll, a mid-roll, or one of several breaks.
VMAP supplies exactly what VAST lacks: the timeline. It defines how many breaks there are and where each one falls, and inside each break it references a VAST tag for the ad. When a player reads a VMAP document, it sees the full schedule of breaks, and at each break it makes the VAST request to fetch and play the actual ad.

So the flow is layered. VMAP is the outer structure — the playlist of breaks. VAST is what each break points to. A single VMAP document for a long video might reference several different VAST tags, one per break. This separation is powerful because it lets you change the ad schedule — add a mid-roll, move a break, change the pacing — without touching the ads themselves, and change the ads without rebuilding the schedule.
How you position ad breaks in VMAP
One of VMAP’s most practical features is the flexibility in how you define when each break occurs. There are three common ways to place a break on the timeline, and knowing them helps you design an ad experience that fits your content.
The first is a time offset — a specific point measured from the start of the video. A break at 30 seconds, another at 5 minutes, another at 12 minutes. This gives precise control and suits content where you know the exact moments you want ads, such as natural scene breaks.
The second is a percentage — a break placed at a proportion of the total duration, such as 25%, 50%, and 75% of the way through. This is useful when you have many videos of different lengths and want ads spaced proportionally without calculating exact timestamps for each one.
The third is by position — simply first, second, third, and so on — used when the exact timing is not known in advance, or for the special cases of the very start and very end. Pre-roll and post-roll are really just position-based breaks: “start” and “end.”
Most VMAP documents mix these. A typical schedule might specify a pre-roll at the start, mid-rolls at set percentages, and a post-roll at the end — giving the publisher full command of the ad load and pacing across the whole video.

What a VMAP document actually contains
It helps to picture the structure, because it makes the schedule-versus-ad split concrete. A VMAP document is an XML file whose outer element is the VMAP itself, and inside it sits a series of ad-break entries. Each break entry carries a few key pieces of information: the timing of the break (the offset, percentage, or position described above), the break type — whether it is a linear video break or another format — and an ad source that points to where the ad comes from, which is almost always a VAST tag reference.
Reading it top to bottom, a player sees the VMAP wrapper, then walks through each ad break in order: this break is at the start and holds one linear ad from this VAST tag; this break is at 50% and holds a pod of two ads from that VAST tag; this break is at the end. Notice what is present and what is absent — the document carries the timing and the structure, but for the actual ad it only holds a pointer to VAST, never the ad file itself. That is the whole design in miniature: VMAP owns the when and the how-many, VAST owns the what.
Because the ad references are just pointers, the same schedule can serve completely different ads over time simply by changing what the VAST tags return, and the same set of ads can be re-scheduled simply by editing the VMAP — without ever touching the other layer.
Ad pods: more than one ad per break
VMAP also lets a single break hold more than one ad, played back to back — what the industry calls an ad pod, much like a traditional television commercial break that runs several spots in a row. In the VMAP schedule, a break can specify that it holds two or three ads in sequence, and each is filled by its VAST reference.
This matters for longer content and for services trying to mirror the familiar TV ad experience. A mid-roll in a 40-minute episode might run a short pod of two ads rather than a single spot, increasing the revenue from that break while keeping the viewing rhythm close to what audiences already expect from broadcast television.
Where VMAP fits in streaming delivery
Most explanations of VMAP stop at the player. But for streaming, the more important question is how that schedule turns into ads actually stitched into your video — and this is where VMAP connects to the delivery infrastructure.
For on-demand video (VOD), VMAP is a natural fit. Because a VOD asset has a known, fixed timeline, the schedule of breaks can be defined cleanly in advance — a pre-roll, mid-rolls at set points, a post-roll — and a server-side ad insertion system can use that VMAP schedule to fetch the VAST-referenced ads and stitch them into the stream at the right moments, so the viewer sees a seamless program. This is why VMAP shows up constantly in AVOD and FAST monetization, where structured, repeatable ad schedules across a large VOD catalog are exactly what publishers need.

Live streaming works a little differently, and the distinction is worth understanding. In a live stream, you often do not know in advance exactly when a break will occur — so instead of a predefined timeline, breaks are typically signaled inside the stream in real time using SCTE-35 markers, which announce an ad opportunity the moment it happens. VMAP is timeline-based and shines for the known structure of on-demand content; SCTE-35 handles the live, in-the-moment case. Both ultimately lead to the same place: an ad request, a VAST response, and server-side insertion of the ad into the stream. The difference is simply how the timing of the break is determined — a preplanned VMAP schedule versus a live SCTE-35 signal.
Understanding this saves a common confusion: VMAP is not a replacement for SCTE-35, and neither is a replacement for VAST. VMAP schedules breaks (mainly for VOD), SCTE-35 signals breaks (for live), and VAST fills whatever break is opened. They are complementary layers, not alternatives. If you want the wider picture of how ads are chosen and where they come from, our guides to the ad decision server and ad demand sources for streaming cover the decisioning and supply sides.
Where 5centsCDN fits
5centsCDN operates the streaming delivery and insertion layer, which is where a VMAP schedule becomes real ads inside your video. For on-demand content, our ad insertion technology can take the ad-break structure, request the VAST-referenced ad for each break, and stitch the ads into your stream so viewers see a clean, professionally paced program. For live content, our platform uses in-stream signaling such as SCTE-35 to detect breaks and insert ads in real time. Either way, you define the ad experience and bring your demand, and we handle turning that schedule into delivered, inserted ads.
For publishers running free ad-supported channels, our FAST channel builder ties programming and ad breaks together, and our ad manager provides the decisioning and reporting layer across your demand sources. If you are still mapping out how the pieces fit, our guide to OTT monetization models covers the business side of AVOD and FAST. To talk through how a VMAP-based ad schedule would work for your catalog, get in touch with our team.
The takeaway: VMAP is the schedule, VAST is the ad. VMAP defines where your ad breaks fall across a video and how many ads each holds, then points to VAST for the actual creative in every break. It gives publishers control over the ad experience even on players they do not own, and for streaming it is the structure that drives clean, well-paced ad insertion — especially for on-demand and FAST content. Master the split between the schedule and the ad, and the whole video-advertising workflow becomes much easier to design and reason about.
Frequently asked questions
What is the difference between VMAP and VAST?
VAST describes a single ad — which file to play, how long it runs, and how to track it. VMAP describes the schedule of ad breaks across a whole video — where each break falls and how many ads it holds — and references a VAST tag for the ad in each break. In short, VMAP is the timetable of breaks; VAST is what plays in each one. They work together, not as alternatives.
Does VMAP choose or serve the ads?
No. VMAP only defines the structure and timing of ad breaks. It does not select which ad plays or deliver the creative — each break references a VAST response, and the ad decision is made by the ad server or ad decision server that the VAST tag points to.
When should I use VMAP?
VMAP is most useful for on-demand video with a known timeline, where you want multiple, structured ad breaks — pre-roll, mid-rolls, and post-roll — such as in AVOD and FAST services. It is especially valuable when your content plays on video players you do not control, because it lets you define the ad schedule independently of the player.
Is VMAP used for live streaming?
VMAP is timeline-based and is best suited to on-demand content, where break points are known in advance. In live streaming, ad breaks are usually signaled in real time using SCTE-35 markers instead, because the timing is not known ahead of time. Both approaches end in a VAST request and server-side ad insertion; they simply determine the break timing differently.
Can a VMAP ad break contain more than one ad?
Yes. A single VMAP break can hold multiple ads played in sequence, known as an ad pod, similar to a traditional TV commercial break. Each ad in the pod is filled by its own VAST reference, which lets publishers increase revenue per break while keeping a familiar viewing rhythm.