Screensaver ads in VAST XML
A screensaver ad fills the idle or dormant screen: playback has stopped, the app is still open, and the device would otherwise show a clock, a wallpaper or a promotional carousel. It is one of the six CTV Ad Portfolio formats, and it shares almost all of its structure with pause ads. The differences are in the signals and in how long the ad is on screen.
Quick reference
| VAST element | <NonLinear> inside <NonLinearAds> |
| Declare version | 4.2 or 4.3. Not 4.4 |
| plcmt | 6 |
| playbackmethod | 10 (sound on) or 11 (sound off) |
| pos | 7 fullscreen, 8 partial screen |
| Typical attr | 21 or 22, rarely 23 |
A screensaver ad tag
<VAST version="4.2" xmlns="http://www.iab.com/VAST">
<Ad id="screensaver-1">
<InLine>
<AdSystem version="1.0">My Ad Server</AdSystem>
<AdTitle>Idle screen cinemagraph</AdTitle>
<AdServingId>b2c9-scrn-0044</AdServingId>
<Impression><![CDATA[https://track.example.com/imp]]></Impression>
<Creatives>
<Creative id="c1">
<UniversalAdId idRegistry="Ad-ID">SCRN5678</UniversalAdId>
<NonLinearAds>
<NonLinear width="1920" height="1080">
<Duration>00:00:20</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
<![CDATA[https://cdn.example.com/screensaver-loop.mp4]]>
</MediaFile>
</MediaFiles>
<NonLinearClickThrough><![CDATA[https://brand.example.com]]></NonLinearClickThrough>
</NonLinear>
<TrackingEvents>
<Tracking event="creativeView"><![CDATA[https://track.example.com/view]]></Tracking>
<Tracking event="overlayViewDuration"><![CDATA[https://track.example.com/duration]]></Tracking>
</TrackingEvents>
</NonLinearAds>
</Creative>
</Creatives>
<Extensions>
<Extension type="plcmt" ext="adcom"><plcmt>6</plcmt></Extension>
<Extension type="pos" ext="adcom"><pos>7</pos></Extension>
<Extension type="playbackmethod" ext="adcom"><playbackmethod>11</playbackmethod></Extension>
<Extension type="attr" ext="adcom"><attr>22</attr></Extension>
</Extensions>
</InLine>
</Ad>
</VAST>The duration problem
A pre-roll runs for as long as the creative lasts. A screensaver runs for as long as the viewer stays away, which nobody knows at response time. The format therefore has two different notions of duration and it is worth keeping them apart.
- Creative duration is what
<Duration>declares: how long the asset plays before it loops or ends. For a video MediaFile this is a fact and belongs in the tag. - Exposure duration is how long the ad was actually on screen. Nothing in the response can know it, which is why
overlayViewDurationexists as a tracking event rather than as a declared value.
The carve-out that makes <Duration> optional applies to static creative with no known playback length. It does not license omitting it from a video asset, and VASTlint reports VAST-4.4-nonlinear-video-no-duration when a video MediaFile ships without one.
Why most screensaver creative should declare 22
Screensaver placements are the strongest case for the cinemagraph attribute. The environment is a television showing an idle screen, often for minutes at a time, frequently in a room where nobody is watching. Continuous full-motion video in that context looks like the app failed to go to sleep, and several platforms will refuse it.
A cinemagraph, subtle motion in an otherwise static composition, is the format's native register. Declare it honestly with attr value 22, because the publisher is checking the delivered experience against what its placement accepts. Declaring 23 for a creative that is effectively a still, or 21 for one that moves, is a mismatch the publisher can see and act on.
Sound on an idle screen
The portfolio gives screensaver its own playback methods, 10 for sound on and 11 for sound off, rather than reusing the pause values. Treat sound-on screensaver placements as rare. A television that starts talking while the viewer is out of the room is a support ticket, and most publishers signal 11.
The mismatch check applies here too: a screensaver plcmt of 6 combined with a pause playback method of 8 or 9 is contradictory, and VASTlint reports it as VAST-4.4-adcom-playbackmethod-format-mismatch.
QR codes belong here
Screensaver and pause are the two placements where a QR code makes sense, because the viewer is not mid-content and has a phone within reach. The portfolio adds typed QR elements in a <CreativeExtension>, with percentage-only positioning. See the QR and shoppable CTV guide for the markup and the trap that catches teams adapting icon code.
Common mistakes checklist
- Reusing a pause tag with the plcmt changed. The playback method and often the creative treatment need to change too.
- Declaring full motion for a near-static asset. The attribute is a claim about the delivered experience, and publishers block on it.
- Omitting Duration on a video asset. Same failure as pause: renders fine, measures nothing.
- Interactive-only creative. Screensaver placements skew toward older devices left idle on a home screen, so the share of the install base with no SIMID runtime is higher here than on pause. The fallback rules are in the pause ad guide.
- Assuming the ad is on screen for the creative duration. It is on screen until the viewer comes back. Use
overlayViewDuration.