VASTlint

VAST describes the ad and HLS delivers the video stream

VAST vs HLS is a comparison of instructions with media delivery. A VAST XML response tells an ad player or stitcher which creative to use and which events to track. HTTP Live Streaming, or HLS, delivers media with playlists and video segments. A VAST response may name an HLS playlist as a MediaFile, but the ability to play it depends on the player or stitcher. A valid VAST tag does not prove that an HLS stream is reachable or decodable.

QuestionVASTHLS
What is it?An IAB video ad response standardAn HTTP streaming format
What does the file look like?XML with a <VAST> rootA text playlist, commonly .m3u8, plus media segments
What does it tell the client?Ad media candidates, duration, tracking, wrappers, and click behaviorWhich renditions and segments to request for playback
Who uses it?Ad SDK, player, or SSAI stitcherStreaming player or SSAI output pipeline
Can it replace the other?A VAST document is not a video streamAn HLS playlist does not carry the VAST ad contract

What a VAST response points to

A VAST MediaFile holds a URL and metadata about a candidate media resource. It might point to a progressive MP4. It may also point to an HLS playlist when the receiving player or stitcher supports streaming media files. This fragment shows that handoff, not a complete VAST document:

<MediaFiles>
  <MediaFile delivery="streaming"
             type="application/vnd.apple.mpegurl"
             width="1920" height="1080">
    <![CDATA[https://cdn.example.com/ads/spot/master.m3u8]]>
  </MediaFile>
</MediaFiles>

VAST XML fragment only. This excerpt belongs inside a complete VAST document, so standalone validation will fail until it is wrapped in a full <VAST>response.

The MIME type describes the HLS playlist, and delivery="streaming"distinguishes it from a progressively downloaded file. Neither attribute proves that the URL returns the declared format. A player must support that format and the codecs used by the segments. The exact media types accepted vary by player and ad platform. If a buyer sends only an HLS rendition to a player that accepts only MP4 ad assets, the tag can parse correctly and still fail to play.

What the HLS URL returns

The URL above returns an HLS playlist, not another VAST response. A multivariant playlist points to media playlists at different bitrates. This shortened example shows two variants:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1600000,RESOLUTION=854x480
480p/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
1080p/playlist.m3u8

A media playlist then points to timed media segments. The HLS player selects and requests those segments as network conditions change. Apple's HLS documentation describes this playlist structure. VAST tracking is a separate responsibility of the ad playback path; the HLS playlist alone does not define VAST impression or quartile events.

How SSAI joins VAST and HLS

  1. The stitcher encounters an ad break in the content stream and requests an ad.
  2. The ad server returns VAST, often after the stitcher resolves one or more wrappers.
  3. The stitcher chooses a compatible creative. It may use a Mezzanine source to transcode new renditions that match the content.
  4. The stitcher inserts ad segments into the HLS output manifest and handles VAST tracking according to its integration.

In this flow, the viewer's device may never see the VAST XML. It sees the stitched HLS stream. The stitcher is the VAST client. This is why a browser test of a VAST URL and a production SSAI result can differ. A working MP4 in a browser can still fail transcoding or manifest insertion on CTV.

How to debug a failure at the boundary

  • Check the ad response: validate the VAST XML, version, MediaFile attributes, and wrapper chain with the validator or inspector.
  • Check the media URL: fetch the .m3u8 resource and confirm the response is an HLS playlist with reachable variants and segments.
  • Check the playback contract: confirm that the specific player or stitcher accepts HLS as ad media and supports its codecs and rendition ladder.
  • Check measurement: verify VAST impression and tracking behavior in the actual playback path. Seeing HLS segments load does not prove the ad was counted.

For a live VAST URL, start with the tag tester. For a pasted response, start with the VAST XML guide.

Sources