VMAP Validator & Ad Break Timeline

Validate VMAP ad-break XML and see the pre-, mid-, and post-roll breaks on a timeline, entirely in your browser.

The VMAP Validator parses your playlist entirely in your browser. The XML you paste stays on your device, the AdTagURI and VAST behind each break are never requested, and nothing is uploaded to ArrayKit.

Open the VAST Validator

About VMAP Validator

The VMAP Validator parses a Video Multiple Ad Playlist and tells you whether every ad break is scheduled correctly before you ship it to a player. Paste your VMAP XML and it reads each vmap:AdBreak, checks the timeOffset format (start, end, HH:MM:SS.mmm, a percentage, or an #n position), confirms the breakType is linear, nonlinear, or display, and verifies the AdSource carries inline VASTAdData or an AdTagURI. Valid breaks are laid out on a pre-, mid-, and post-roll timeline so you can read the ad pod schedule at a glance, while broken breaks are flagged inline. Built for ad-ops engineers and video developers who debug server-side ad insertion and CTV playlists, it runs entirely in your browser — the playlist stays on your device and no ad tag is ever called.

Features

How to use the VMAP Validator

  1. Paste your VMAP XML into the input box, or load the sample playlist
  2. Read the summary chips for the break count and pre/mid/post totals
  3. Scan the timeline to confirm each AdBreak lands in the right slot
  4. Open any break flagged in red to see which attribute or AdSource is wrong

Example

Input

<vmap:VMAP xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0">
  <vmap:AdBreak timeOffset="start" breakType="linear" breakId="pre">
    <vmap:AdSource>
      <vmap:AdTagURI><![CDATA[https://ads.example/vast]]></vmap:AdTagURI>
    </vmap:AdSource>
  </vmap:AdBreak>
</vmap:VMAP>

Output

Valid VMAP · 1 break · 1 pre-roll
AdBreak "pre" — start · linear · Ad tag URI

A single pre-roll AdBreak pointing at an AdTagURI validates cleanly.

Common errors & troubleshooting

Frequently asked questions

What is VMAP and how is it different from VAST?
VMAP (Video Multiple Ad Playlist) is a scheduling wrapper that tells a player when to show ad breaks — pre-roll, mid-roll, or post-roll. VAST describes the ads themselves. A VMAP AdBreak either embeds a VAST document in VASTAdData or points to one with an AdTagURI.
Which timeOffset formats does the VMAP validator accept?
It recognizes the four VMAP offset styles: the keywords start and end, an absolute time as HH:MM:SS.mmm, a percentage of the content duration such as 25%, and an #n position marker like #2. Anything else is flagged as an unrecognized timeOffset.
Does the tool fetch the VAST behind an AdTagURI?
No. The validator only inspects the VMAP structure — it detects whether each AdBreak uses inline VASTAdData or an AdTagURI, but it never calls the ad server or downloads the tag. Nothing you paste leaves your browser.
How does it decide whether a break is a pre-, mid-, or post-roll?
A timeOffset of start is a pre-roll, end is a post-roll, and any concrete time, percentage, or #n position is treated as a mid-roll. The timeline groups the breaks by that resolved slot so the pod order is obvious.
Can it validate a VMAP with only one AdBreak?
Yes. Whether your playlist has a single break or a full pre/mid/post pod, each vmap:AdBreak is checked the same way and placed on the timeline in schedule order, including a lone break that is not wrapped in a list.
Why is my breakType being rejected?
VMAP allows only linear, nonlinear, or display for breakType. A typo, a VAST creative type, or an empty attribute will be flagged. Set a valid value on the vmap:AdBreak element to clear the error.

Related tools

All ArrayKit tools