What changed between VAST 2.0 and VAST 3.0
VAST 3.0 was released by the IAB in 2012. It added meaningful new capabilities — skippable ads, industry icons, Ad Pods — while keeping full backwards compatibility with VAST 2.0. A valid 2.0 document is also a valid 3.0 document.
| Area | Change |
|---|---|
| New elements | skipoffset, <Icons>, <Pricing>, <Advertiser>, <CreativeExtensions> |
| New tracking events | progress, skip, exitFullscreen, acceptInvitation, adExpand, adCollapse |
| Ad sequencing | Ad Pods via sequence attribute on <Ad> |
| Companion ads | required attribute on <CompanionAds> |
| Media files | minBitrate / maxBitrate on <MediaFile> |
| VPAID | apiFramework="VPAID" on <MediaFile> (VPAID 1.0 / 2.0) |
Skippable linear ads
The most visible 3.0 addition. The skipoffset attribute on <Linear> tells the player when to show the skip button. The value is either a time code (HH:MM:SS) or a percentage of duration.
<Linear skipoffset="00:00:05">
<Duration>00:00:30</Duration>
<TrackingEvents>
<Tracking event="skip"><![CDATA[https://track.example.com/skip]]></Tracking>
</TrackingEvents>
...
</Linear>→ Rule reference: VAST-3.0-skipoffset-format
progress tracking event
VAST 3.0 added the progress tracking event, which fires at an arbitrary playback position rather than only at the standard quartile milestones. The position is set with the offset attribute.
<Tracking event="progress" offset="00:00:10">
<![CDATA[https://track.example.com/10s]]>
</Tracking>Industry icons
The <Icons> element allows ad servers to include clickable overlay icons — most commonly the AdChoices triangle — that players must render for the specified duration.
<Icons>
<Icon program="AdChoices" width="20" height="20" xPosition="right" yPosition="top"
duration="00:00:30" offset="00:00:00">
<StaticResource creativeType="image/png">
<![CDATA[https://example.com/adchoices.png]]>
</StaticResource>
<IconClicks>
<IconClickThrough>
<![CDATA[https://optout.aboutads.info/?c=2&lang=EN]]>
</IconClickThrough>
</IconClicks>
</Icon>
</Icons>Ad Pods
Multiple ads can now be sequenced into a single ad break using the sequence attribute on <Ad>. Players must play them in order.
<VAST version="3.0">
<Ad id="ad1" sequence="1">
<InLine>...</InLine>
</Ad>
<Ad id="ad2" sequence="2">
<InLine>...</InLine>
</Ad>
</VAST><Pricing> element
Allows the ad server to communicate the price of the ad in the VAST tag itself. Useful for header bidding and auction-based buying.
<Pricing model="CPM" currency="USD">
<![CDATA[2.50]]>
</Pricing><Advertiser> element
A new optional element inside <InLine> to identify the advertiser by name. Useful for competitive separation logic.
<InLine>
<AdTitle>Brand Campaign</AdTitle>
<Advertiser>Brand Name Inc.</Advertiser>
...
</InLine>required attribute on <CompanionAds>
The required attribute tells the player whether companion ads are optional or mandatory for display.
<!-- all: player must show all companions -->
<CompanionAds required="all">...</CompanionAds>
<!-- any: player must show at least one companion -->
<CompanionAds required="any">...</CompanionAds>
<!-- none: companions are optional -->
<CompanionAds required="none">...</CompanionAds><CreativeExtensions>
A vendor-extension point at the creative level, complementing the existing <Extensions> element at the ad level. Allows custom data to be attached to individual creatives.
New tracking events
| Event | When it fires |
|---|---|
skip | When the user clicks the skip button |
progress | At the time offset specified by the offset attribute |
exitFullscreen | When the player leaves fullscreen mode |
acceptInvitation | When the user accepts an invitation to expand the ad |
adExpand | When the ad expands |
adCollapse | When the ad collapses |
Migration checklist: VAST 2.0 → 3.0
- Update
versionattribute on<VAST>to"3.0" - Add
skipoffsetto skippable<Linear>elements and include askiptracking event - Add
<Icons>with AdChoices icon to all linear ads (check your DSP requirements) - Set
requiredattribute on<CompanionAds>if companions are mandatory - Add
sequenceattribute to<Ad>elements in ad break positions - Replace hardcoded price signals with
<Pricing>if used
Validate your VAST 3.0 documents at vastlint.org/validate. Continue to the VAST 3.0 to 4.0 migration guide →