VASTlint
Back to blog
Wrappers/8 min read

The Wrapper You QA Is Not the Creative That Plays. The Inline Lives on Another Host.

A VAST wrapper can be spec-valid and still terminate on a different CDN, a different AdSystem, and a different MediaFile than the URL you tested. The session fails on the inline. Hop-one QA never sees that file.

Author

Alex Sekowski

Published

August 26, 2026

Reading time

8 min read

VASTWrappersSSAICTVAd ops

Most VAST tags in the wild are not InLine documents. They are a URI that returns a Wrapper, which returns another URI, which eventually returns the creative. The player follows that chain at playback. Your QA laptop often does not.

The failure mode is stable. Someone validates the first response, files a green screenshot, and ships. The device then requests hop three, gets an HTTP MediaFile on HTTPS inventory, a missing Duration, or a 404 mezzanine, and reports a VAST error the trafficking ticket cannot reproduce from the original URL.

What the wrapper is allowed to omit

A Wrapper carries VASTAdTagURI, optional Impression and tracking, and flags such as allowMultipleAds and fallbackOnNoAd. It does not have to carry Linear Duration. It does not have to carry MediaFiles. UniversalAdId, AdVerifications, and SIMID InteractiveCreativeFile typically sit on the InLine. Treating the wrapper as a complete creative is reading a cover letter as the contract.

allowMultipleAds is a chain property. A wrapper that sets it false can kill a pod that looked fine on hop one. You will not see that in a paste of hop one unless you also fetch what it points at.

The host changes

Hop one is often the ad server you traffic. Hop two is an SSP wrapper. Hop three is a CDN or a creative host you do not control. HTTPS on hop one does not imply HTTPS on hop three. Geo, user-agent, and app bundle on the device request are not the same as curl from your desk. A 200 in the office and a 403 on Fire TV are both real.

SSAI stitchers add another hop: they fetch the chain, transcode, and emit a new document. Validating the pre-stitch wrapper and never the stitched output is how a living-room player sees a different MediaFile than the one in the ticket.

What to do before you call it QA

  • Follow VASTAdTagURI until you have an InLine or you hit a fetch error. Count the hops.
  • Check Duration, MediaFiles, mezzanine, and AdVerifications on the InLine, not on the first wrapper.
  • Use the inspector when the question is which hop died. Use the tester when you need to see whether anything playable came back.
  • Re-run the same URL from a CTV user-agent if the buy is CTV. Desk curl is not a Roku.

Get VAST spec updates, platform guides, and release notes in your inbox.

Walk the chain

vastlint is independent of IAB Tech Lab and of the SSPs that mint these wrappers. The inspector fetches each hop and runs the same spec-derived catalog on every response. A green hop one is a statement about hop one.

Inspect the wrapper chain

Paste the live VAST URL. Read every hop, not only the first document. If you need a preview of what came back, use the tester on the same URL.

Open the VAST inspector

Next

Live URL, creative preview, tracking, click URLs.

When the chain itself is the error.

A wrapper that cannot name the next hop.

Keep reading

Related stories

All posts