Loading inspector…

VAST — Video Ad Serving Template — is the XML-based protocol that connects ad servers to video players across the CTV and online video ecosystem. When a CTV player needs to serve an ad, it fires a VAST request to the ad server, receives an XML document, parses it for creative details, fetches the media file, plays the ad, and fires tracking beacons at defined playback milestones. Every link in that chain — the XML structure, the media file URL, the tracking event types, the error pixel — needs to be correct for the impression to deliver and be measured. The VAST Inspector parses the XML client-side so you can audit all of these elements before the tag goes live in a campaign.

VAST versions 2.0 through 4.x introduce progressively more features. VAST 2.0 covers the baseline: linear in-stream ads, click tracking, and impression pixels. VAST 3.0 added ad pods (multiple ads per break), companion ads, and the AdVerifications framework. VAST 4.0 through 4.2 added universal ad IDs (ISCI/Ad-ID), ViewabilityVendor, InteractiveCreativeFile, and a full overhaul of the Verification resource model. Many CTV publishers require VAST 4.x specifically because the ViewabilityVendor and Verification nodes are needed for IAS, DoubleVerify, and MOAT measurement integration. If your tag is VAST 3.0 or earlier, it may still serve but will fail brand safety verification on inventory that requires VAST 4.0+ compliance.

Wrapper chains are the most common source of slow ad serving in CTV. A wrapper VAST doesn't contain a creative — it contains a pointer (VASTAdTagURI) to another VAST document, which may itself be a wrapper pointing to yet another. Each hop adds a round-trip HTTP request at playback time. A three-hop chain with 250ms per request adds 750ms to ad load time before the media file even begins buffering. CTV players implement a maximum wrapper depth (typically 3–5 hops) and will generate a VAST error 302 if the chain exceeds it. The inspector shows the full wrapper chain structure so you can identify whether your tag will resolve within the player's tolerance.

Tracking events are how ad servers measure campaign delivery beyond the impression pixel. VAST defines a set of standard events — start, firstQuartile, midpoint, thirdQuartile, complete, skip, pause, resume, fullscreen, mute, unmute, and more — each with a URL that the player fires when the event occurs. On a completed 30-second ad, a properly instrumented player fires 5+ tracking beacons. If any beacon URL is malformed, uses HTTP instead of HTTPS, or points to an inactive endpoint, the event goes unrecorded and your VCR data is underreported. Use the inspector to verify that all beacon URLs resolve and use HTTPS before deploying your tag to CTV inventory.

MediaFile inspection is the final step before a VAST tag is production-ready. VAST allows multiple MediaFile nodes for the same creative — different codecs, resolutions, and bitrates — so the player can select the most compatible file. For CTV, H.264 at 1080p is the minimum; H.265/HEVC is preferred for Apple TV 4K and newer Roku devices. Audio codec should be AAC with a bitrate of 128+ kbps and loudness normalized to CALM Act standards (−24 LKFS). If the MediaFile node specifies H.265 but the file is actually H.264, or if the declared resolution doesn't match the actual file, some CTV players will drop the creative and fire a VAST error 403. The inspector parses declared attributes from the XML; pair it with a media file validator to confirm the actual file matches the declaration.

Frequently asked questions

What is the difference between VAST and VMAP?

VAST (Video Ad Serving Template) is the protocol for a single ad break — it describes one or more ads, their creatives, tracking events, and click URLs. VMAP (Video Multiple Ad Playlist) is a higher-level protocol that describes an entire ad schedule for a piece of content: when breaks occur (time offset, before, after), how many ads per break, and what VAST ad tags to call for each break. Publishers who control their entire content stream use VMAP to define the ad schedule. Publishers who pass a single ad slot to a demand source use VAST. The VAST Inspector handles both, but will flag a VMAP document with a note to confirm you intended to inspect a VMAP rather than a standalone VAST tag.

Why does my VAST tag work in one player but fail in another?

VAST players have discretion in how strictly they enforce the spec — particularly around wrapper chain depth, HTTPS requirements for tracking URLs, and which VAST versions they support. A tag that works in a lenient web video player may fail in a strict CTV player (e.g., Roku, tvOS) that requires VAST 4.0+, enforces HTTPS-only tracking pixels, and sets a 3-wrapper depth limit. The inspector shows version, wrapper chain depth, and whether any tracking URLs use HTTP, which covers the most common cross-player compatibility issues.

What VAST error codes should I watch for?

The most common VAST errors in CTV campaigns: 100 (XML parse error — malformed XML), 200 (trafficking error — no ads returned), 301 (wrapper timeout — VASTAdTagURI didn't respond in time), 302 (wrapper depth limit exceeded), 303 (wrapper no ads), 400 (undefined linear ad), 401 (file not found — MediaFile URL 404s), 402 (media file timeout), 403 (media file unsupported — codec or resolution mismatch), 501 (companion display error). Errors 301–303 indicate wrapper chain problems; 401–403 indicate media file delivery problems. Both categories are diagnosable with the VAST Inspector before the tag runs in production.

How do I validate a VAST tag's tracking URLs are all HTTPS?

Use the VAST Inspector and review the Tracking Events section. Any URL beginning with http:// rather than https:// is flagged. Most CTV players, browsers (Chrome/Firefox enforce mixed content blocking), and measurement vendors reject HTTP tracking beacons — they either silently drop the ping or block the ad entirely. Fixing a single http:// tracking URL in a high-traffic campaign can recover thousands of unrecorded impression events per day.

Can the VAST Inspector handle password-protected or internal VAST endpoints?

The VAST Inspector parses XML that you paste directly into the tool — it does not make outbound HTTP requests to fetch your tag URL. This means it works with any VAST XML you have access to, including internal staging endpoints, bearer-token-authenticated ad servers, and local file content. Paste the raw XML output from your ad server response and the inspector parses it client-side without any network request from your tag's server.