VASTlint
VAST-2.0-macro-lowercase

VAST-2.0-macro-lowercase

Recognised macro is not uppercase — players match macro names case-sensitively

WarningMacrosIAB VAST 4.2 §6VAST 2.0 and later (all versions)

Short answer

Macro substitution is case-sensitive. A recognised macro written in lower or mixed case (for example [timestamp]) is never substituted and reaches the server verbatim. Write every macro in uppercase.

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. Macro rules catch substitution problems in tracking, click, and error URLs. A misspelled, mis-cased, or out-of-context macro is never replaced by the player, so the server receives literal placeholder text instead of the measurement value, and unencoded characters can break the request entirely. Affected scope: VAST 2.0 and later (all versions).

Invalid

<Tracking event="start"><![CDATA[https://t.example.com/s?ts=[timestamp]]]></Tracking>

Valid

<Tracking event="start"><![CDATA[https://t.example.com/s?ts=[TIMESTAMP]]]></Tracking>
Check your VAST tag for VAST-2.0-macro-lowercase and other issues instantly.Open the VAST tag validator →