vastlint

VPAID is deprecated: what replaced it and how to migrate

Short answer: if a live VAST tag still uses apiFramework="VPAID", treat it as legacy and expect failures on CTV, SSAI, and stricter web-player environments. Use SIMID for interactivity, OMID for measurement, and keep a normal video <MediaFile> for playback.

VPAID has been officially deprecated by the IAB Tech Lab. If you are diagnosing a live tag, start with the VPAID deprecated explainer, the VPAID to SIMID migration guide, or the exact VAST 4.1 deprecation rule page. vastlint flags VPAID usage in VAST tags as a warning so you can catch it before launch.

Need to check whether a tag still uses VPAID?

Validate the VAST XML to find deprecated VPAID patterns fast, then use the migration guide to replace executable VPAID units with SIMID plus a normal video playback file.

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>

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.

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