VPAID vs MRAID is a name collision between two host APIs. VPAID, the Video Player-Ad Interface Definition, let an executable run in a video player, often as the thing that played the ad. IAB marks it deprecated. The SIMID page names the replacement: OMID for measurement and verification, SIMID for interactivity. MRAID, the Mobile Rich Media Ad Interface Definitions, is the API a creative calls inside an in-app webview: expand, resize, open, orientation, full-screen interstitials. The host is the app SDK, not a VAST player.
MRAID 3.0 is the reason the names get welded together. IAB's MRAID 3.0 note says selected VPAID events were integrated so in-app video creatives could report more uniformly, alongside creative-side viewability and audibility. Those are events inside the MRAID container. They do not make an MRAID playable into a VAST inline, and they do not make a VPAID media file into a legal mobile interstitial. vastlint checks apiFramework VPAID on a VAST 2.0–4.4 media file, and whether a decodable file remains. It does not execute VPAID and it does not certify an SDK's MRAID implementation.
Where each one fails
VPAID fails closed on the devices that do not offer a browser-like player. Google's IMA documentation says only the HTML5 SDK supports VPAID 2 JavaScript creatives. A stitcher cannot splice the script into an MPEG segment and keep the script's behavior. The error looks like a media-file miss. The trafficking sheet still said the line item had a creative.
MRAID fails when the SDK webview is missing or speaks an older subset. MRAID 3.0 says it is backward compatible with 2.0 containers and can degrade. That sentence is about in-app rich media. It is not a promise that a connected TV will run the creative. A VAST linear campaign that sets apiFramework to MRAID because the mobile SDK knew that word has renamed the interface. It has not given the television a file.
What to ship on each path
In-stream video gets a VAST document, a media file, SIMID only when there is a real interaction, and OMID when a vendor must measure. In-app expandable units and playables stay on MRAID, in an SDK that actually implements the version the creative calls. The two paths can belong to one campaign. They are not fallbacks for each other.
If a partner sends one tag and calls it both, split the artifact. The VAST XML is vastlint's document. The MRAID creative is a different file, loaded by a different host. Checking one will not bless the other.
Questions that separate the two
- Is the host a video player or a mobile SDK webview?
- Is the creative a VAST media file, or the ad itself inside the webview?
- Are the shared words VPAID events inside MRAID 3.0, or a VAST apiFramework?
- Does a decodable media file remain if the executable never runs?
- Is measurement OMID, or the creative reporting its own events?
A shared event name inside a mobile container does not turn that container into a VAST player.
See whether the VAST tag still depends on VPAID
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.
Sources
MRAID is the in-app rich media interface. Version 3.0 adds creative-side viewability and audibility, and selected VPAID events for in-app video reporting.
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.
VAST standards hub. VPAID is marked deprecated and replaced with SIMID.
Only the IMA HTML5 SDK supports VPAID 2 JavaScript creatives.
The sandbox beside a media file, against the in-app bridge.
SIMID and OMID, not MRAID.
VAST is the document. VPAID was an executable inside it.
