VASTlint
Back to blog

SIMID vs OMID lines up a sidecar and a measurement script

The two strings replaced different halves of VPAID. vastlint checks which element each one sits on. It does not open either session.

SIMID is an InteractiveCreativeFile beside a media file. OMID is a JavaScriptResource with apiFramework omid inside AdVerifications.
The two strings replaced different halves of VPAID. vastlint checks which element each one sits on. It does not open either session. 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

SIMID vs OMID is the pair people collapse because both names arrived when VPAID was split. IAB Tech Lab's SIMID page says the replacement is two standards: OMID for measurement and verification, SIMID for interactivity. SIMID is an interactive document beside a media file the player owns. The player loads it in a sandboxed frame and talks to it over a defined channel. OMID is the API a verification script uses once the player has OM SDK. In the tag, that script is a JavaScriptResource with apiFramework omid, inside AdVerifications on VAST 4.1 and later.

They are not two legal values of one attribute. A SIMID URL in the verification node does not measure the impression. An OMID script in InteractiveCreativeFile does not draw the overlay. vastlint checks that split in the VAST 2.0–4.4 document: the interactive file against a real media file, and the verification node a measurement script would have to occupy. It does not open a SIMID session and it does not run OMID.

What each one does when the other fails

If the SIMID frame never loads, the media file is still a media file, provided you gave the player one. Duration and quartiles stay with the playhead. The click layer is gone. That is a failed interaction, not a failed ad, and it is the reason the sidecar exists. If the OMID script never loads, the media file can still play and the SIMID layer can still take a click. The impression is then unmeasured. verificationNotExecuted is the VAST path for that miss. A quartile pixel is not a substitute for it.

IAB's OM SDK page, updated November 4, 2025, lists OMID 1.6 as the current API docs and still documents earlier versions. SIMID 1.2 is the iteration described on the SIMID page. vastlint does not implement either API. A tag can be structurally ready for both and still fail in a player that has no OM SDK, or in a player whose SIMID support stops at a subset of messages. Google's IMA HTML5 guide documents that subset on its own page, separate from VPAID.

The tag-level swaps that look like a migration

The common miss is a single apiFramework cell copied onto the wrong element. SIMID belongs on InteractiveCreativeFile, with type text/html, next to a MediaFile. OMID belongs on the verification resource. Putting either string on a MediaFile and deleting the playable file recreates the VPAID failure: if the script does not run, nothing plays. Putting both jobs inside the interactive file, the way VPAID bundled them, hides measurement in a document the stitcher may ignore.

Wrappers hide the choice until the last hop. The wrapper can look like a plain MP4. The inline can be SIMID with a broken media file, or OMID with an empty resource URL. The comparison that matters is the inline the player or the stitcher finally parses. The two nodes in a VAST 4.3 inline look like this. browserOptional on JavaScriptResource is the 4.3 attribute. Earlier 4.1 and 4.2 documents use the same parent elements without it.

SIMID beside the file, OMID outside it
xml
<MediaFiles>  <MediaFile delivery="progressive" type="video/mp4" width="1280" height="720">    <![CDATA[https://cdn.example.com/ad.mp4]]>  </MediaFile>  <InteractiveCreativeFile type="text/html" apiFramework="SIMID">    <![CDATA[https://cdn.example.com/interactive.html]]>  </InteractiveCreativeFile></MediaFiles><AdVerifications>  <Verification vendor="measurement.example">    <JavaScriptResource apiFramework="omid" browserOptional="true">      <![CDATA[https://cdn.example.com/omid.js]]>    </JavaScriptResource>  </Verification></AdVerifications>

What to look for in the inline

  • A media file the player can decode without the interactive frame.
  • SIMID only on InteractiveCreativeFile, and only when interaction is required.
  • OMID only on the verification resource, inside AdVerifications or a legacy Extension of that type.
  • No VPAID media file standing in for either half.
  • The inline after wrappers, not the wrapper from QA.

An interactive sidecar and a measurement script can both be present, and they still cannot stand in for each other.

standards triage note

See whether the two strings landed on the right elements

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.

OM SDK page, updated November 4, 2025. Measurement providers collect signals through the OMID API. The current API docs listed there are OMID 1.6.

IAB Tech Lab VASTIAB Tech Lab

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

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

The index for this split.

The structural checks on AdVerifications.

InteractiveCreativeFile, the sandbox, and the media file beside it.

How AdVerifications carries a verification resource.

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.