VAST Validator
Paste a VAST tag and check it against the IAB VAST rules in your browser. The XML never leaves your device.
The VAST Validator parses the tag you paste entirely in your browser. Remote ad tags, tracking pixels and MediaFile URLs are never fetched, and nothing you paste is uploaded to ArrayKit.
Open the XML Formatter
About VAST Validator
The VAST Validator parses a VAST (Video Ad Serving Template) tag and checks it against the IAB VAST rules so you can catch a broken creative before it ships. Paste an InLine or Wrapper document and it detects the version, then verifies the required nodes — AdSystem, AdTitle, Impression, Creatives and a VASTAdTagURI on wrappers — plus MediaFile delivery, type, width and height and the HH:MM:SS Duration. Every issue is grouped into errors and warnings with the exact node path, so you know which Ad, Creative or MediaFile to fix. It is built for ad-ops engineers, publishers and DSP integrators who debug video ad tags all day. Nothing is fetched or uploaded — the tag you paste is parsed entirely in your browser.
Features
- Detects the VAST version from the <VAST version> attribute (2.0 through 4.3)
- Checks required InLine nodes: AdSystem, AdTitle, Impression and Creatives
- Checks Wrapper structure and a non-empty VASTAdTagURI for downstream tags
- Requires at least one MediaFile with delivery, type, width and height on Linear creatives
- Validates Duration as HH:MM:SS and skipoffset as a time offset or percentage
- Flags misplaced nodes such as VASTAdTagURI in an InLine or AdTitle in a Wrapper
- Groups results into errors and warnings, each tagged with the exact node path
- Copy a plain-text report to drop into a ticket — all parsing stays in your browser
How to use the VAST Validator
- Paste your VAST XML (InLine or Wrapper) into the box, or load a sample
- Read the detected version and the error / warning count at the top
- Open each finding to see the node path and what to fix
- Copy the report to share the results with your ad-ops team
Example
Input
<VAST version="4.0"><Ad><InLine>
<AdSystem>Server</AdSystem><AdTitle>Ad</AdTitle>
<Impression>https://ex/imp</Impression>
<Creatives><Creative><Linear>
<Duration>0:30</Duration>
</Linear></Creative></Creatives>
</InLine></Ad></VAST>
Output
VAST 4.0 — 2 error(s), 0 warning(s)
[ERROR] …Linear > Duration — Duration "0:30" is not in HH:MM:SS format
[ERROR] …Linear — InLine Linear creative must contain a <MediaFiles> element
Version 4.0 is detected; the bad Duration and the missing MediaFiles are both flagged with their node paths.
Common errors & troubleshooting
- Duration "0:30" is not in HH:MM:SS format. — VAST Duration must be zero-padded HH:MM:SS (optionally HH:MM:SS.mmm). Write a 30-second spot as 00:00:30, not 0:30 or 30.
- MediaFile is missing the required delivery / type / width / height attribute. — Every MediaFile needs delivery ("progressive" or "streaming"), a MIME type such as video/mp4, and integer width and height in pixels.
- Wrapper must contain a <VASTAdTagURI>. — A Wrapper delegates to a downstream tag, so it needs a non-empty VASTAdTagURI (usually wrapped in CDATA) instead of Creatives with MediaFiles.
- The <VAST> element is missing the required version attribute. — Add version to the root, e.g. <VAST version="4.0">. Without it the parser cannot pick the right rule set and players may reject the tag.
Frequently asked questions
- Which VAST versions does this validator support?
- It reads the version attribute on the root <VAST> element and understands VAST 2.0, 3.0, 4.0, 4.1, 4.2 and 4.3. An unknown version is flagged as a warning so you can still see the rest of the structural checks.
- Does it validate a Wrapper differently from an InLine?
- Yes. An InLine ad must carry AdSystem, AdTitle, Impression, Creatives and, for a Linear creative, a Duration and at least one MediaFile. A Wrapper instead requires a non-empty VASTAdTagURI and does not need MediaFiles, so the two are checked with different rules.
- Why is my MediaFile flagged when the ad still plays in some players?
- Lenient players fall back to defaults, but the IAB spec requires delivery, type, width and height on every MediaFile. The validator holds the tag to the spec so it works across strict SSPs and players, not just the one you tested.
- What Duration format does VAST expect?
- A zero-padded HH:MM:SS value, optionally with milliseconds as HH:MM:SS.mmm. So 00:00:15 is valid but 0:15, 15 or 00:15 are not. The skipoffset attribute may instead be a percentage such as 25%.
- Can it follow a VASTAdTagURI and validate the wrapped tag?
- No — the validator never fetches remote URLs. It checks that the VASTAdTagURI is present and non-empty, but to inspect the downstream response you paste that VAST XML in separately and validate it on its own.
- Does the validator fetch or upload my VAST tag?
- Neither. The XML you paste is parsed on your device, and remote ad tags, trackers and MediaFile URLs are never requested. Nothing about the tag is sent to ArrayKit or any ad server.
Related tools
- VAST Tag Inspector — Inspect a VAST tag as a readable tree of creatives, media files and tracking events.
- VAST Error Code Lookup — Look up any VAST or VPAID error code (100-901) with its meaning, cause and fix.
- VAST Macro Expander — Browse VAST 4.x macros and expand a tracking URL with sample or custom values.
- VMAP Validator — Validate VMAP ad-break XML and see the ad-break timeline, in your browser.
- OpenRTB Bid Request Validator — Validate an OpenRTB 2.5 or 2.6 bid request for missing fields, wrong types and bad enums.
- ads.txt Validator — Validate ads.txt and app-ads.txt records against the IAB spec, line by line.
All ArrayKit tools