VASTlint

VAST examples / Companions

A <Companion> with an invalid renderingMode

VAST 4.20 errors2 warningsVAST-4.1-companion-renderingmode-value

The scenario

A CTV advertiser wanted its companion to appear as an interactive end-card after the video finished, rather than concurrently beside it. VAST 4.1 added renderingMode on <Companion> to express exactly that placement intent.

The broken tag

<?xml version="1.0" encoding="UTF-8"?>
<!-- WARNING: VAST-4.1-companion-renderingmode-value — Companion renderingMode not in allowed enum -->
<VAST version="4.2">
  <Ad id="ad-001">
    <InLine>
      <AdSystem>Test</AdSystem>
      <AdTitle>Test Ad</AdTitle>
      <AdServingId>test-serving-id-001</AdServingId>
      <Impression><![CDATA[https://track.example.com/impression]]></Impression>
      <Creatives>
        <Creative>
          <UniversalAdId idRegistry="ad-id.org">TEST-001</UniversalAdId>
          <CompanionAds>
            <Companion width="300" height="250" renderingMode="overlay">
              <StaticResource creativeType="image/png">
                <![CDATA[https://cdn.example.com/companion.png]]>
              </StaticResource>
            </Companion>
          </CompanionAds>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

What the validator reports

Running this tag through vastlint produces the following. The primary failure for this example:

warningVAST-4.1-companion-renderingmode-valueIAB VAST 4.1 §2.3.8line 14

Companion renderingMode attribute value is not in allowed set (default, end-card, concurrent)

The same tag also surfaces these secondary findings — real tags rarely fail in isolation:

warningVAST-2.0-version-mismatchIAB VAST 2.0 §2.1

VAST version attribute does not match structural signals in the document

Why it breaks

The <Companion> sets renderingMode to a value outside the allowed tokens (default, end-card, or concurrent). renderingMode tells the player how and when to display the companion; an unrecognized value leaves the player without a valid placement instruction. Strict players reject the value, and lenient ones fall back to default placement, ignoring the intended end-card behavior.

What it costs

The companion renders in the wrong mode or not at all: the intended end-card experience collapses to a default placement or is dropped, so the advertiser loses the post-roll interactive moment it designed the unit around. On CTV, where end-cards are a primary engagement surface, that defeats the purpose of the companion buy.

The fix

Set renderingMode to one of default, end-card, or concurrent to match the intended placement. Confirm the target players support the chosen mode.

<!-- allowed: default | end-card | concurrent -->
<Companion width="1280" height="720" renderingMode="end-card">
  <StaticResource creativeType="image/png">
    <![CDATA[https://cdn.example.com/endcard.png]]></StaticResource>
</Companion>

VAST XML fragment only. This excerpt belongs inside a complete VAST document, so standalone validation will fail until it is wrapped in a full <VAST>response.

Check your own version of this tag

Paste the resolved XML to run the same spec check, test a live tag URL, or inspect the wrapper chain hop by hop.

Related examples

Related reading