VASTlint
Back to blog

VPAID and SIMID together lines up two runtimes and no fallback

vastlint can see both apiFramework values in one inline. It does not execute either one.

What you shipWho can play itWho cannotWhat you meant
VPAID file onlySome HTML5 playersCTV, SSAI, nativeA creative
SIMID file onlyNobody, if there is no media fileAnyone who skips the sidecarA creative
VPAID and SIMID, no media fileWhichever runtime happens to runThe other runtimeCoverage
Media file, optional SIMID, optional OMIDPlayers that take the fileOnly the click, if SIMID is skippedThe split IAB described
A VAST tag can declare VPAID and SIMID together. That is two runtimes. The working set is a media file, SIMID when interaction is required, and OMID when measurement is required.
vastlint can see both apiFramework values in one inline. It does not execute either one. Diagram by vastlint.org. An independent open-source project. The diagram restates figures already cited in this post.

Alex Sekowski · September 29, 2026 · 7 min read

VPAID and SIMID together is the compatibility idea that survives deprecation memos. The tag lists a VPAID media file for old web players and a SIMID interactive file for everyone else. IAB's SIMID page does not describe that pair as a fallback chain. It says VPAID is being replaced, OMID takes measurement, SIMID takes interactivity, and the interactive layer is separate from the media asset so the player keeps the stream. The asset is a media file. VPAID was allowed to be that asset. SIMID is not allowed to be that asset.

A player that implements SIMID and finds no media file does not owe you a VPAID session as consolation. A player that only implements VPAID does not open the SIMID sidecar. You have two products in one response, and each audience misses one of them. vastlint checks both apiFramework values in a VAST 2.0–4.4 inline, and whether a non-executable file remains. It does not execute VPAID and it does not open a SIMID session. Seeing both strings is not a pass.

The together that matches the standards

Media file, always, if you want the ad to play when interaction is skipped. SIMID, only when there is an interaction, as InteractiveCreativeFile with type text/html. OMID, only when a vendor must measure, in AdVerifications. That trio is the replacement. VPAID is absent from it. If a named HTML5 seat still requires VPAID, that is a separate tag or a documented exception, not a silent sibling on the CTV copy.

Google publishes the two as separate HTML5 documents: VPAID 2 limited to the HTML5 SDK, and SIMID support with its own list of messages. A player can implement a subset of SIMID and none of VPAID. Counting on both to be present because both were in the XML overstates what either document promised.

Wrappers make the double declaration look like one creative

Hop one can be a plain wrapper. The inline can carry VPAID as the media file and SIMID as a URL that 404s, or the reverse. QA that stops on the wrapper blesses the campaign. The player that unwraps finds out which half is real. Inspect the chain, then validate the inline you would actually serve.

Measurement does not get to hide inside whichever half runs. If the VPAID unit used to carry the viewability script, moving that script into the SIMID file repeats the bundle. Put it in the verification node so it does not depend on which framework the player chose to ignore.

If both strings are in the inline

  • Confirm a decodable media file exists that is neither framework.
  • Treat the VPAID file as legacy HTML5, not as the spare for SIMID.
  • Treat SIMID as optional interaction, not as the media.
  • Keep OMID in AdVerifications.
  • Do not read a structural pass as proof that both runtimes executed.

Two frameworks in one response are two bets, and the screen that can run one of them was never the audience for the other.

standards triage note

See both apiFramework values in the inline

Run VAST 2.0–4.4 tags against specification-derived rules. Nothing is stored. vastlint does not execute VPAID, open a SIMID session, run OMID, or certify an MRAID SDK.

Paste the tag

XML opens the validator, and a live tag URL opens the tester.

Or test a live URL

Sources

IAB Tech Lab SIMIDIAB Tech Lab

SIMID page, updated January 3, 2024. SIMID 1.2 separates the interactive layer from the media asset. Both are delivered by VAST 4.x. OMID is named for measurement and SIMID for interactivity, as the replacement for VPAID.

IAB Tech Lab VASTIAB Tech Lab

VAST standards hub. VPAID is marked deprecated and replaced with SIMID.

Only the IMA HTML5 SDK supports VPAID 2 JavaScript creatives.

SIMID support is documented on its own page, including which messages the HTML5 SDK implements.

Why the ranking still depends on the job.

The three objects that replace the pair.

Why they are not one fallback chain.

Read another comparison in this set

All posts

Check the tag these notes describe

The comparison does not execute the creative. The tag still has to carry a media file, and the node for interaction or measurement.