Nonlinear overlay VAST ads
A nonlinear overlay is an ad that displays on top of a playing video without interrupting playback. The viewer can continue watching the content while the overlay is shown. Nonlinear ads are the VAST equivalent of a banner ad over video — typically an image, animated GIF, or HTML creative rendered in a transparent layer above the player.
Nonlinear overlays are the most frequently misunderstood and incorrectly built creative type in VAST. The element structure, required attributes, and resource types are significantly different from linear ads.
Quick reference
| Creative element | <NonLinearAds> containing <NonLinear> |
| Resource types | StaticResource, IFrameResource, HTMLResource |
| minSuggestedDuration | Suggested display time (HH:MM:SS) — advisory, not enforced |
| Playback | Video continues behind the overlay |
| Platform support | Web players primarily; limited CTV support |
NonLinearAds element structure
Nonlinear ads use a completely different element tree from linear ads. The creative element is <NonLinearAds> (not <Linear>), which contains one or more <NonLinear> elements. Each <NonLinear> defines one rendition of the overlay.
<VAST version="4.2">
<Ad id="1">
<InLine>
<AdSystem>My Ad Server</AdSystem>
<AdTitle>Nonlinear Overlay Ad</AdTitle>
<Impression id="imp1"><![CDATA[https://track.example.com/impression]]></Impression>
<Creatives>
<Creative id="creative1" sequence="1">
<NonLinearAds>
<TrackingEvents>
<Tracking event="creativeView"><![CDATA[https://track.example.com/creative-view]]></Tracking>
</TrackingEvents>
<NonLinear id="nl1"
width="480" height="70"
minSuggestedDuration="00:00:15"
scalable="true"
maintainAspectRatio="true">
<StaticResource creativeType="image/png">
<![CDATA[https://cdn.example.com/overlay-banner.png]]>
</StaticResource>
<NonLinearClickThrough>
<![CDATA[https://example.com/landing]]>
</NonLinearClickThrough>
<NonLinearClickTracking>
<![CDATA[https://track.example.com/nl-click]]>
</NonLinearClickTracking>
</NonLinear>
</NonLinearAds>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>Resource types
Each <NonLinear> must contain exactly one resource element:
| Element | creativeType attribute | Use case |
|---|---|---|
StaticResource | MIME type of the asset (e.g. image/png, image/gif) | Image or animated GIF overlay |
IFrameResource | None (URL goes in element content) | HTML page loaded in a sandboxed iframe |
HTMLResource | None | Inline HTML injected directly into the player DOM |
<!-- StaticResource: image or GIF -->
<NonLinear width="480" height="70" minSuggestedDuration="00:00:15">
<StaticResource creativeType="image/png">
<![CDATA[https://cdn.example.com/overlay.png]]>
</StaticResource>
<NonLinearClickThrough><![CDATA[https://example.com/landing]]></NonLinearClickThrough>
</NonLinear>
<!-- IFrameResource: HTML page in sandboxed iframe -->
<NonLinear width="480" height="70" minSuggestedDuration="00:00:15">
<IFrameResource><![CDATA[https://cdn.example.com/overlay.html]]></IFrameResource>
<!-- No ClickThrough needed — iframe handles its own clicks -->
</NonLinear>
<!-- HTMLResource: inline HTML injected into player DOM -->
<NonLinear width="480" height="70" minSuggestedDuration="00:00:15">
<HTMLResource><![CDATA[<a href="https://example.com/landing" target="_blank">
<img src="https://cdn.example.com/overlay.png" width="480" height="70" />
</a>]]></HTMLResource>
</NonLinear>Required attributes on NonLinear
The following attributes are required on each <NonLinear> element:
- width and height — pixel dimensions of the overlay. Required for the player to allocate space and position the element.
- minSuggestedDuration — advisory display duration in
HH:MM:SSformat. The player may show the overlay for a shorter or longer time; this is a suggestion, not an enforcement.
Optional but recommended:
- scalable — whether the overlay can be scaled. Defaults to
falseif omitted. - maintainAspectRatio — whether the player should maintain the aspect ratio when scaling.
- id — unique identifier for the nonlinear element.
→ vastlint rule: VAST-2.0-nonlinear-width-height
Tracking for nonlinear ads
Nonlinear ads support a different set of tracking events from linear ads. The <TrackingEvents> block goes inside <NonLinearAds>, not inside the individual <NonLinear> element.
| Event | Fires when |
|---|---|
creativeView | Overlay is rendered and visible |
acceptInvitation | User expands or interacts with the overlay |
collapse | User closes or collapses the overlay |
Linear events (start, complete, etc.) are not applicable to nonlinear ads.
Serving nonlinear alongside a linear ad
A single VAST response can include both a <Linear> creative and a <NonLinearAds> creative within the same <Ad> block. The player plays the linear ad first, then shows the nonlinear overlay during the content that follows, or both simultaneously depending on the placement configuration.
<Creatives>
<!-- Linear ad plays first -->
<Creative id="linear" sequence="1">
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>...</MediaFiles>
</Linear>
</Creative>
<!-- Nonlinear overlay displayed during or after the linear -->
<Creative id="overlay" sequence="2">
<NonLinearAds>
<NonLinear width="480" height="70" minSuggestedDuration="00:00:10">
<StaticResource creativeType="image/png">
<![CDATA[https://cdn.example.com/overlay.png]]>
</StaticResource>
<NonLinearClickThrough><![CDATA[https://example.com/landing]]></NonLinearClickThrough>
</NonLinear>
</NonLinearAds>
</Creative>
</Creatives>Common mistakes checklist
- Using
<Linear>instead of<NonLinearAds>— a nonlinear overlay is not a linear ad. Using<Linear>for an overlay image will cause the player to try to play it as a video. - Missing width and height — required attributes. Players cannot position the overlay without knowing its dimensions.
- Missing creativeType on StaticResource — required attribute. Without it, the player cannot determine how to render the resource.
- TrackingEvents inside NonLinear instead of NonLinearAds — tracking events for nonlinear go inside
<NonLinearAds>, not inside the individual<NonLinear>element. - Expecting CTV support — most CTV platforms (Roku, Fire TV, Apple tvOS) do not support nonlinear overlays. They are a web-only format in practice.