vastlint

VAST tag testing

A VAST tag is a URL or XML document that tells a video player how to find, display, and track an ad. When it works, the ad plays and impressions are counted. When it doesn’t, the player silently moves on, the impression is lost, and neither the buyer nor the seller gets useful diagnostic information. VAST tag testing is the process of catching those failures before they reach a live player.

What a VAST tag tester checks

A VAST tag tester does several things that manual inspection cannot. At minimum it covers:

  • Spec compliance. The IAB VAST specification (versions 2.0 through 4.3) defines which elements and attributes are required, optional, or forbidden. A tester validates the XML against these rules — 118 of them in vastlint — and surfaces any violations with the exact spec reference.
  • Creative preview. Fetching the <MediaFile> URLs and rendering the video inside the tester confirms the creative actually loads and plays. A tag can be spec-valid but point to a dead or CORS-blocked CDN URL.
  • Tracking pixel inspection. Every impression, start, quartile, complete, and click-tracking URL in the tag is surfaced so you can verify the right vendor pixels are present and pointing to the right environment (staging vs production).
  • Click-through verification. The <ClickThrough> and <ClickTracking> URLs are listed so you can confirm the destination and confirm no HTTP links were left in.
  • Inconsistency detection. Common tag-level problems that aren’t outright spec violations but will cause delivery issues: unresolved macros (%%CACHEBUSTER%%, [TIMESTAMP]), HTTP URLs in an HTTPS-required context, VPAID in a CTV placement, missing <Duration>, duplicate tracking events, and empty elements.

Why VAST tag testing matters

The video ad supply chain is long. A creative agency produces a tag. A trafficker uploads it to a DSP. The DSP sends it to an SSP. The SSP passes it to a player. At each hand-off, a silent failure is possible, and the player’s behavior when it encounters a broken VAST tag is typically to skip the ad entirely, not to surface an error.

The practical consequences:

  • Lost impressions. If the <Impression> element is missing or malformed, the ad may play but the impression is never recorded. The buy does not deliver and the budget does not spend.
  • Zero-fill and fill-rate drops. Players that implement strict VAST parsing will reject tags with errors before even attempting to render them, contributing to no-fill events that look like inventory problems but are actually tag problems.
  • Broken measurement. Third-party measurement vendors (DoubleVerify, Moat, IAS) rely on their pixels being present and firing. A tag where those pixels were accidentally omitted during a copy-paste will appear to deliver but will have no viewability or brand-safety data.
  • VPAID on CTV. VPAID is unsupported on most CTV/OTT players. A tag with a VPAID MediaFile will fail silently on every CTV impression. This is one of the most common reasons for unexpectedly low CTV delivery rates.
  • Unresolved macros in production. Tags tested in a DSP UI have macros like [CACHE_BUSTER] resolved at serve time. If the raw tag (with unresolved macros in the URL) is accidentally trafficked, every request goes to an invalid URL.
  • HTTP vs HTTPS. Modern browsers and players enforce HTTPS for all ad assets. An HTTP <MediaFile> or tracking pixel will be blocked, causing a mix of creative failures and missing measurement data.

When to test a VAST tag

VAST testing is most valuable at three points in the workflow:

  1. Before trafficking. Catch spec errors and missing pixels before the tag enters the ad server. This is the cheapest point to fix problems — one person, one tool, no wasted impressions.
  2. During QA. When a new creative is submitted by an agency or DSP partner, run it through a tester as part of the acceptance checklist. Add the tester URL to your QA runbook.
  3. When debugging delivery issues. If a campaign is under-delivering or measurement numbers don’t match, pulling the live tag and running it through a tester is the fastest way to rule out a tag problem.

What the vastlint tester checks specifically

The vastlint VAST tag tester combines the spec validator with a content inspector. For any VAST 2.0–4.3 tag — fetched from a URL or pasted directly — it produces:

  • Validator results — 118 rules derived from the IAB VAST 2.0–4.3 spec, each with a severity (error / warning / info), a description, and a link to the relevant spec section. Annotations are overlaid on the XML editor so you can see exactly which line triggered each rule.
  • Creative preview — the video player loads directly from the <MediaFile> URL. Companion banners and NonLinear overlays are rendered in a gallery below. SIMID interactive creatives are available behind a click-to-load gate.
  • Tracking vendor analysis — impression URLs, <Tracking> events, and error pixels are resolved against a vendor map (DoubleVerify, IAS, Moat, Comscore, Nielsen, TTD, The Trade Desk, and more). HTTP-only URLs and unresolved macros are flagged inline.
  • Click URLs<ClickThrough> and all <ClickTracking> URLs listed and linked.
  • Inconsistency panel — tag-level issues that are not spec violations but signal likely delivery problems: VPAID, missing Duration, unresolved macros, HTTP assets, duplicate events, empty tracking entries.
  • Media file table — all <MediaFile> entries with MIME type, delivery method, resolution, bitrate, codec, and URL.

Everything runs in-browser using a WebAssembly build of vastlint. Nothing is sent to a server; nothing is stored.

How to test a VAST tag

Option 1: Test by URL (recommended for live tags)

If you have a VAST endpoint URL (e.g. from GAM, DV360, Xandr, or your own ad server), paste the URL directly into the editor on the VAST tag tester. The tester detects the URL, fetches the XML automatically, runs all checks, and renders the creative — all in one step. This is the fastest way to QA a live tag.

Note on CORS: some ad servers return CORS headers that block client-side fetches. If the fetch fails, open the URL in a browser tab, select all, copy the XML, and paste it into the editor instead.

Option 2: Paste or upload XML

Paste raw VAST XML into the editor on the tester page, or drag and drop a .xml file. Validation runs automatically after a short debounce. This is the best option for testing tags from an agency or trafficking system before they go live.

Option 3: CLI (for CI/CD)

For automated testing in a CI/CD pipeline or pre-trafficking check, use the vastlint CLI:

brew install aleksUIX/tap/vastlint
vastlint validate tag.xml

The CLI exits non-zero on any error, making it composable with any pipeline. See the validation guide for full CLI options.

Common VAST testing failures and how to fix them

See the dedicated common VAST errors guide for a full reference with XML examples and fixes for the most frequent issues: missing <Impression>, bad <Duration> format, NonLinear missing width/height (VAST 4.2), HTTP assets, VPAID on CTV, and more.

Test your VAST tag now

Open the vastlint VAST tag tester — free, instant, nothing stored.