VASTlint

Find the exact VAST XML error and fix

Short answer: if you already know the failing element, rule ID, or error phrase, start here. This index maps specific VAST XML failures to the exact rule page, the copyable fix, and the right tool to validate the corrected tag.

Every rule vastlint enforces against the IAB VAST specification (versions 2.0 through 4.3) is documented here. Use this reference to look up a rule ID, understand why it fires, and see a concrete XML fix example.

error: ad will likely fail to render. warning: spec violation or risky practice. info: advisory.

Group by

Required VAST fields (54)

errorVAST-2.0-root-elementRoot element must be <VAST>errorVAST-2.0-root-version<VAST> must have a version attributewarningVAST-2.0-root-version-valueVAST version attribute must be a recognised version stringerrorVAST-2.0-root-has-ad-or-error<VAST> must contain at least one <Ad> or <Error>warningVAST-4.0-wrapper-root-error<VAST> root contains both <Ad> and <Error> elements (invalid per VAST 4.0)errorVAST-2.0-ad-has-inline-or-wrapperEach <Ad> must contain exactly one <InLine> or <Wrapper>errorVAST-2.0-inline-adsystem<InLine> must contain <AdSystem>errorVAST-2.0-inline-adtitle<InLine> must contain <AdTitle>errorVAST-2.0-inline-impression<InLine> must contain at least one <Impression>errorVAST-2.0-inline-creatives<InLine> must contain <Creatives> with at least one <Creative>errorVAST-4.1-adservingid-present<InLine> must contain <AdServingId> (VAST 4.1+)errorVAST-4.0-universaladid-present<Creative> must contain <UniversalAdId> (VAST 4.0+)errorVAST-4.0-universaladid-idregistry<UniversalAdId> must have an idRegistry attributeerrorVAST-2.0-linear-duration<Linear> must contain <Duration>errorVAST-2.0-linear-mediafiles<Linear> must contain <MediaFiles> with at least one <MediaFile>errorVAST-2.0-mediafile-delivery<MediaFile> must have a delivery attributeerrorVAST-2.0-mediafile-type<MediaFile> must have a type attributeerrorVAST-2.0-mediafile-dimensions<MediaFile> must have width and height attributeserrorVAST-2.0-wrapper-adsystem<Wrapper> must contain <AdSystem>errorVAST-2.0-wrapper-impression<Wrapper> must contain at least one <Impression>errorVAST-2.0-wrapper-vastadtaguri<Wrapper> must contain <VASTAdTagURI>errorVAST-2.0-companion-resource<Companion> must contain at least one StaticResource, IFrameResource, or HTMLResourceerrorVAST-2.0-nonlinear-resourceInLine <NonLinear> must contain at least one StaticResource, IFrameResource, or HTMLResourceerrorVAST-3.0-pricing-model<Pricing> missing required model attributeerrorVAST-3.0-pricing-currency<Pricing> missing required currency attributewarningVAST-3.0-pricing-model-case<Pricing> model value should be lowercase in VAST 3.0 (cpm/cpc/cpe/cpv)warningVAST-3.0-pricing-currency-format<Pricing> currency attribute must be a 3-letter ISO-4217 codeerrorVAST-3.0-icon-program<Icon> missing required program attributeerrorVAST-3.0-icon-width<Icon> missing required width attributeerrorVAST-3.0-icon-height<Icon> missing required height attributeerrorVAST-3.0-icon-xposition<Icon> missing required xPosition attributeerrorVAST-3.0-icon-yposition<Icon> missing required yPosition attributeerrorVAST-3.0-icon-resource<Icon> must have at least one resource elementerrorVAST-4.0-category-authority<Category> missing required authority attributeerrorVAST-4.0-companion-clicktracking-id<CompanionClickTracking> missing required id attributeerrorVAST-4.0-universaladid-idvalue<UniversalAdId> missing required idValue attribute (VAST 4.0)warningVAST-4.1-universaladid-idvalue-removed<UniversalAdId> idValue attribute was removed in VAST 4.1errorVAST-4.1-universaladid-content<UniversalAdId> must have text content in VAST 4.1+errorVAST-4.1-mezzanine-delivery<Mezzanine> missing required delivery attributeerrorVAST-4.1-mezzanine-type<Mezzanine> missing required type attributeerrorVAST-4.1-mezzanine-width<Mezzanine> missing required width attributeerrorVAST-4.1-mezzanine-height<Mezzanine> missing required height attributewarningVAST-4.1-verification-no-resource<Verification> should have JavaScriptResource or ExecutableResourcewarningVAST-4.1-blockedadcategories-no-authority<BlockedAdCategories> should have authority attributewarningVAST-4.0-interactive-creative-no-api<InteractiveCreativeFile> should have an apiFramework attributewarningVAST-4.1-interactive-creative-type<InteractiveCreativeFile> should have a type attribute identifying the MIME typeerrorVAST-4.1-verification-vendor<Verification> is missing required vendor attributeerrorVAST-4.1-js-resource-apiframework<JavaScriptResource> is missing required apiFramework attributewarningVAST-4.3-js-resource-browser-optional<JavaScriptResource> should have a browserOptional attributeerrorVAST-4.1-exec-resource-apiframework<ExecutableResource> is missing required apiFramework attributeerrorVAST-4.1-exec-resource-type<ExecutableResource> is missing required type attributewarningVAST-4.1-js-resource-apiframework-valueOMID <JavaScriptResource> should declare apiFramework="omid"warningVAST-4.1-exec-resource-apiframework-valueOMID <ExecutableResource> should declare apiFramework="omid"warningVAST-4.1-verification-parametersOMID <Verification> should include non-empty <VerificationParameters>

VAST document structure (2)

VAST XML schema rules (25)

errorVAST-2.0-text-only-elementText-only element contains a child elementwarningVAST-2.0-unknown-attributeElement has an attribute not defined in the VAST specerrorVAST-2.0-inline-unknown-child<InLine> contains an unrecognised child elementerrorVAST-2.0-wrapper-unknown-child<Wrapper> contains an unrecognised child elementerrorVAST-2.0-creatives-unknown-child<Creatives> may only contain <Creative> elementserrorVAST-2.0-creative-unknown-child<Creative> contains an unrecognised child elementerrorVAST-2.0-linear-unknown-child<Linear> contains an unrecognised child elementerrorVAST-2.0-trackingevents-unknown-child<TrackingEvents> may only contain <Tracking> elementserrorVAST-2.0-mediafiles-unknown-child<MediaFiles> contains an unrecognised child elementerrorVAST-2.0-extensions-unknown-child<Extensions> may only contain <Extension> elementserrorVAST-2.0-videoclicks-unknown-child<VideoClicks> contains an unrecognised child elementerrorVAST-2.0-nonlinearads-unknown-child<NonLinearAds> contains an unrecognised child elementerrorVAST-2.0-nonlinear-unknown-child<NonLinear> contains an unrecognised child elementerrorVAST-2.0-companionads-unknown-child<CompanionAds> may only contain <Companion> elementserrorVAST-2.0-companion-unknown-child<Companion> contains an unrecognised child elementerrorVAST-3.0-icons-unknown-child<Icons> may only contain <Icon> elementserrorVAST-3.0-icon-unknown-child<Icon> contains an unrecognised child elementerrorVAST-3.0-iconclicks-unknown-child<IconClicks> contains an unrecognised child elementerrorVAST-2.0-creativeextensions-unknown-child<CreativeExtensions> may only contain <CreativeExtension> elementserrorVAST-4.2-closedcaptionfiles-unknown-child<ClosedCaptionFiles> may only contain <ClosedCaptionFile> elementswarningVAST-2.0-extension-misplaced-element<Extension> contains an element that has a dedicated location in the VAST specwarningVAST-2.0-creative-extension-misplaced-element<CreativeExtension> contains an element that has a dedicated location in the VAST specwarningVAST-2.0-extension-cdata<Extension> leaf text with XML-sensitive characters should be wrapped in CDATAwarningVAST-2.0-creative-extension-cdata<CreativeExtension> leaf text with XML-sensitive characters should be wrapped in CDATAwarningVAST-2.0-url-cdataURI value is not wrapped in CDATA

Value format rules (18)

warningVAST-4.0-category-authority-not-uri<Category> authority attribute is not a valid authority URLinfoVAST-4.0-category-authority-unknown<Category> authority is not a recognised IAB Content Taxonomy authoritywarningVAST-4.1-blockedadcategories-authority-not-uri<BlockedAdCategories> authority attribute is not a valid authority URLinfoVAST-4.1-blockedadcategories-authority-unknown<BlockedAdCategories> authority is not a recognised IAB Content Taxonomy authoritywarningVAST-4.1-verification-vendor-format<Verification> vendor should use a domain-qualified identifier such as company.com-omidwarningVAST-4.1-verification-tracking-reasonverificationNotExecuted tracking URI should include the [REASON] macroerrorVAST-2.0-duration-format<Duration> value does not match HH:MM:SS[.mmm] formaterrorVAST-2.0-mediafile-delivery-enum<MediaFile> delivery must be "progressive" or "streaming"warningVAST-3.0-skipoffset-formatLinear skipoffset does not match HH:MM:SS[.mmm] or n% formatwarningVAST-3.0-progress-offset-formatTracking progress offset does not match required formatwarningVAST-3.0-skip-event-no-skipoffsetskip tracking event present but Linear has no skipoffset attributeerrorVAST-3.0-minmaxbitrate-pair<MediaFile> must have both minBitrate and maxBitrate or neitherwarningVAST-3.0-bitrate-conflict<MediaFile> has both bitrate and minBitrate/maxBitratewarningVAST-4.0-tracking-event-removedfullscreen/exitFullscreen tracking events were removed in VAST 4.0errorVAST-4.1-tracking-event-valueTracking event attribute not in the valid set for this VAST versionwarningVAST-4.1-adtype-valueAd adType must be video, audio, or hybridwarningVAST-4.1-companion-renderingmode-valueCompanion renderingMode must be default, end-card, or concurrentwarningVAST-3.0-companion-required-attr<CompanionAds> required attribute must be all, any, or none

Security and URL rules (6)

Consistency and parse rules (4)

Deprecated VAST features (5)

Ambiguous and underspecified rules (7)

CTV and SSAI-specific rules (3)

SIMID (9)

VMAP (24)

errorVMAP-1.0-root-versionRoot `<VMAP>` element must have a version attributewarningVMAP-1.0-root-version-value`<VMAP>` version attribute should be `"1.0"` — the only published VMAP versionwarningVMAP-1.0-root-namespace`<VMAP>` should declare the VMAP namespace URI http://www.iab.net/videosuite/vmaperrorVMAP-1.0-root-unknown-child`<VMAP>` may only contain `<AdBreak>` and `<Extensions>` elementserrorVMAP-1.0-adbreak-timeoffset`<AdBreak>` must have a timeOffset attributeerrorVMAP-1.0-adbreak-timeoffset-format`<AdBreak>` timeOffset must be hh:mm:ss[.mmm], n%, `"start"`, `"end"`, or #merrorVMAP-1.0-adbreak-breaktype`<AdBreak>` must have a breakType attributeerrorVMAP-1.0-adbreak-breaktype-value`<AdBreak>` breakType must be a comma-separated list of `"linear"`, `"nonlinear"`, or `"display"`warningVMAP-1.0-adbreak-repeatafter-format`<AdBreak>` repeatAfter does not match the required hh:mm:ss[.mmm] formaterrorVMAP-1.0-adbreak-unknown-child`<AdBreak>` may only contain `<AdSource>`, `<TrackingEvents>`, and `<Extensions>` elementserrorVMAP-1.0-adbreak-multiple-adsource`<AdBreak>` may contain at most one `<AdSource>` elementwarningVMAP-1.0-adsource-bool-attr`<AdSource>` allowMultipleAds and followRedirects must be `"true"` or `"false"`errorVMAP-1.0-adsource-content`<AdSource>` must contain exactly one of `<VASTAdData>`, `<AdTagURI>`, or `<CustomAdData>`errorVMAP-1.0-adtaguri-empty`<AdTagURI>` must contain a URI referencing an ad responseerrorVMAP-1.0-adtaguri-cdata`<AdTagURI>` URI must be contained within a CDATA blockerrorVMAP-1.0-customaddata-cdata`<CustomAdData>` data must be contained within a CDATA blockerrorVMAP-1.0-vastaddata-vast-root`<VASTAdData>` must contain an embedded `<VAST>` element (as XML, not CDATA)infoVMAP-1.0-embedded-vast-versionEmbedded VAST is not version 3.0 — VMAP players are only required to support VAST 3.0errorVMAP-1.0-trackingevents-unknown-childVMAP `<TrackingEvents>` may only contain `<Tracking>` elementserrorVMAP-1.0-tracking-eventVMAP `<Tracking>` must have an event attributeerrorVMAP-1.0-tracking-event-valueVMAP `<Tracking>` event must be `"breakStart"`, `"breakEnd"`, or `"error"`infoVMAP-1.0-error-tracking-macroVMAP error tracking URI should include the `[ERROR_CODE]` macroerrorVMAP-1.0-tracking-url-emptyVMAP `<Tracking>` element does not contain a tracking URIwarningVMAP-1.0-repeatafter-conflictrepeatAfter has no effect when timeOffset is `"start"` or `"end"` — those positions occur once per playback

DAAST (29)

errorDAAST-1.0-root-versionRoot `<DAAST>` element must have a version attributewarningDAAST-1.0-root-version-value`<DAAST>` version attribute must be a recognised version string (`1.0` or `1.1`)errorDAAST-1.0-root-has-ad-or-error`<DAAST>` must contain at least one `<Ad>` or `<Error>`errorDAAST-1.0-ad-has-inline-or-wrapperEach DAAST `<Ad>` must contain exactly one `<InLine>` or `<Wrapper>`errorDAAST-1.0-inline-adtitleDAAST `<InLine>` must contain `<AdTitle>`errorDAAST-1.0-inline-impressionDAAST `<InLine>` must contain at least one `<Impression>`errorDAAST-1.0-inline-categoryDAAST `<InLine>` must contain `<Category>` (required in DAAST, unlike VAST)errorDAAST-1.0-inline-creativesDAAST `<InLine>` must contain `<Creatives>` with at least one `<Creative>`errorDAAST-1.0-wrapper-daastadtaguriDAAST `<Wrapper>` must contain `<DAASTAdTagURI>`warningDAAST-1.0-wrapper-vast-adtaguri`<VASTAdTagURI>` is a VAST element — DAAST wrappers redirect via `<DAASTAdTagURI>`errorDAAST-1.0-wrapper-impressionDAAST `<Wrapper>` must contain at least one `<Impression>`warningDAAST-1.0-videoclicks-element`<VideoClicks>` is a VAST element — DAAST uses `<AdInteractions>`warningDAAST-1.0-audiointeractions-renamed`<AudioInteractions>` was renamed `<AdInteractions>` in the final DAAST releaseerrorDAAST-1.0-linear-durationDAAST `<Linear>` must contain `<Duration>`errorDAAST-1.0-duration-formatDAAST `<Duration>` value does not match HH:MM:SS[.mmm] formaterrorDAAST-1.0-linear-mediafilesDAAST `<Linear>` must contain `<MediaFiles>` with at least one `<MediaFile>`errorDAAST-1.0-mediafile-deliveryDAAST `<MediaFile>` must have a delivery attributeerrorDAAST-1.0-mediafile-delivery-enumDAAST `<MediaFile>` delivery must be `"progressive"` or `"streaming"`errorDAAST-1.0-mediafile-typeDAAST `<MediaFile>` must have a type attributewarningDAAST-1.0-mediafile-audio-typeDAAST `<MediaFile>` type is a video MIME type — DAAST creatives are audiowarningDAAST-1.0-mediafile-idDAAST `<MediaFile>` should have an `id` attribute (required by the DAAST XSD)errorDAAST-1.0-mediafile-url-emptyDAAST `<MediaFile>` does not contain a media URIerrorDAAST-1.0-tracking-event-valueDAAST `<Tracking>` event is not in the DAAST audio event seterrorDAAST-1.0-progress-offsetDAAST `<Tracking event="progress">` requires a valid offset attributeerrorDAAST-1.0-pricing-modelDAAST `<Pricing>` is missing the required model attributewarningDAAST-1.0-pricing-model-valueDAAST `<Pricing>` model must be one of `cpm`, `cpc`, `cpe`, `cpv`, `cpo`errorDAAST-1.0-pricing-currencyDAAST `<Pricing>` is missing the required currency attributewarningDAAST-1.0-error-url-emptyDAAST `<Error>` element is present but contains no URIinfoDAAST-1.0-error-tracking-macroDAAST `<Error>` URI does not include the `[ERRORCODE]` macro — error diagnostics will be incomplete