VASTlint

VAST companion sizes: 300x250, 728x90, and required width height

Short answer

Players match companions by pixel size, not by id. Every <Companion> needs width and height. Ship at least 300x250 plus one large format (728x90 or 160x600) so more slots can fill.

Why this happens

A publisher page exposes a banner slot with a fixed size. The VAST player walks the <Companion> list and keeps the first element whose width and height match that slot. A companion with no dimensions, or a 970x250 creative on a page that only has 300x250, is skipped. The linear video can still play.

IAB display inventory still clusters on a small set of sizes. 300x250 is the default mid-page rectangle. 728x90 is the desktop leaderboard. 160x600 is the wide skyscraper. 320x50 is the mobile banner. One size is not enough if you traffic both desktop and mobile.

Copyable multi-size example

<CompanionAds required="none">
  <Companion width="300" height="250">
    <StaticResource creativeType="image/jpeg">
      <![CDATA[https://cdn.example.com/300x250.jpg]]>
    </StaticResource>
  </Companion>
  <Companion width="728" height="90">
    <StaticResource creativeType="image/jpeg">
      <![CDATA[https://cdn.example.com/728x90.jpg]]>
    </StaticResource>
  </Companion>
  <Companion width="160" height="600">
    <StaticResource creativeType="image/jpeg">
      <![CDATA[https://cdn.example.com/160x600.jpg]]>
    </StaticResource>
  </Companion>
  <Companion width="320" height="50">
    <StaticResource creativeType="image/jpeg">
      <![CDATA[https://cdn.example.com/320x50.jpg]]>
    </StaticResource>
  </Companion>
</CompanionAds>

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.

Exact rule pages

Check companion sizes before launch

The validator flags missing width or height. The tester shows which companion assets survived a live fetch. Use inspect when a wrapper hop dropped CompanionAds.

Further reading