vastlint

VPAID: Video Player-Ad Interface Definition

VPAID (Video Player-Ad Interface Definition) is an IAB standard that defined a common interface between video players and executable interactive ad units. It was the dominant standard for rich interactive video ads and ad verification from roughly 2012 to 2019.

VPAID has been officially deprecated by the IAB Tech Lab. SIMID replaces it for interactivity; OMID replaces it for verification. vastlint flags VPAID usage in VAST tags as a warning.

What VPAID does

VPAID layers on top of VAST. Where VAST provides ad metadata and media files, VPAID adds an executable layer: a JavaScript ad unit that runs inside the video player and can:

  • Render interactive overlays, surveys, games, and expanded panels
  • Control media playback (pause, resume, skip)
  • Collect rich interaction data (hover time, expand rate, engagement events)
  • Run third-party verification and viewability measurement scripts

How VPAID appears in a VAST tag

A VPAID ad is a <MediaFile> with apiFramework="VPAID" and type="application/javascript". The player loads the JavaScript, calls the standardised VPAID API functions, and defers media control to the ad unit.

<!-- VPAID 2.0 MediaFile -->
<MediaFile delivery="progressive"
           type="application/javascript"
           apiFramework="VPAID"
           width="640"
           height="360">
  <![CDATA[https://adserver.example.com/vpaid_unit.js]]>
</MediaFile>

vastlint will flag this with rule VAST-2.0-vpaid vastlint flags it with a warning that VPAID is deprecated and not supported in most modern CTV environments.

Why VPAID was deprecated

Security

VPAID scripts run in the same JavaScript context as the player. A malicious or buggy creative has full access to the publisher's DOM, cookies, and global state. This is fundamentally unsafe and was routinely exploited for ad fraud and data theft.

SSAI incompatibility

Server-side ad insertion stitches ads directly into the media stream at the server. There is no browser-side JavaScript runtime at insertion time, so VPAID cannot work in any SSAI environment.

CTV incompatibility

Smart TVs, streaming sticks, and set-top boxes use native media players without a browser-compatible JavaScript runtime. VPAID is simply non-executable on CTV, which now represents a majority of premium streaming inventory.

Latency

Because the VPAID script controls media loading, publishers cannot pre-cache the video asset. Every impression pays a latency penalty waiting for the VPAID unit to initialise and hand off to the media. SIMID solves this by returning media control to the player.

VPAID versions

VersionPublishedNotes
VPAID 1.02009Original Flash-based spec
VPAID 2.02012JavaScript support; the version still in use today (deprecated)

There will be no VPAID 3.0. SIMID is the successor.

What replaces VPAID

VPAID use caseReplacement
Rich interactive ads (overlays, games, surveys)SIMID 1.2: sandboxed iframe + postMessage
Ad verification and viewability measurementOMID (Open Measurement SDK)

VPAID and VAST version compatibility

VPAID works alongside VAST 2.0 and 3.0 tags by adding apiFramework="VPAID" to a <MediaFile>. VAST 4.0 introduced <InteractiveCreativeFile> as the canonical way to reference interactive creatives, which is what SIMID uses. You may still encounter VPAID references in VAST 4.x tags from legacy DSPs.

How vastlint handles VPAID

vastlint does not attempt to execute VPAID units. It validates the VAST XML structure around them. When it finds a <MediaFile> with apiFramework="VPAID", it emits:

  • VAST-2.0-vpaid Warning: VPAID is deprecated; most CTV and SSAI environments will not render this ad

If the tag also contains a <InteractiveCreativeFile apiFramework="VPAID"> (a common mistake), additional structural rules may fire. Check the VPAID rules reference for all VPAID-related rules.

Check whether your VAST tag contains VPAID or other deprecated patterns instantly.Validate a tag →

Further reading