VMAP-1.0-repeatafter-conflict
VMAP-1.0-repeatafter-conflict
repeatAfter has no effect when timeOffset is `"start"` or `"end"` — those positions occur once per playback
WarningVMAPIAB VMAP 1.0.1 §2.3.1VMAP 1.0 (all VMAP documents)
Short answer
The repeatAfter attribute only makes sense for mid-roll positions defined by a timecode or percentage. When timeOffset is start or end, the break occurs exactly once per playback and repeatAfter is meaningless.
Why this matters in production
This rule is a strong risk signal. Tags with this issue often still parse, but they become brittle across SDKs, SSAI resolvers, and CTV environments. VMAP rules validate the ad break schedule envelope. Malformed break timing, wrong namespace declarations, or invalid AdSource content prevent players from resolving any of the ads in the playlist. Affected scope: VMAP 1.0 (all VMAP documents).
Check your VAST tag for
VMAP-1.0-repeatafter-conflict and other issues instantly.Open the VAST tag validator →Other VMAP rules
VMAP-1.0-root-versionRoot `<VMAP>` element must have a version attributeVMAP-1.0-root-version-value`<VMAP>` version attribute should be `"1.0"` — the only published VMAP versionVMAP-1.0-root-namespace`<VMAP>` should declare the VMAP namespace URI http://www.iab.net/videosuite/vmapVMAP-1.0-root-unknown-child`<VMAP>` may only contain `<AdBreak>` and `<Extensions>` elementsVMAP-1.0-adbreak-timeoffset`<AdBreak>` must have a timeOffset attributeVMAP-1.0-adbreak-timeoffset-format`<AdBreak>` timeOffset must be hh:mm:ss[.mmm], n%, `"start"`, `"end"`, or #mVMAP-1.0-adbreak-breaktype`<AdBreak>` must have a breakType attributeVMAP-1.0-adbreak-breaktype-value`<AdBreak>` breakType must be a comma-separated list of `"linear"`, `"nonlinear"`, or `"display"`