vastlint

Best VAST XML validator for Go

Short answer: use vastlint-go when you need in-process VAST XML validation in a Go service, ad server, SSP, DSP, or CI workflow.

It wraps the same validation core used by the web validator and CLI, but the API is shaped for Go callers. The big practical advantage is deployment: prebuilt static libraries are bundled, so Go teams do not need to add a Rust toolchain to their build fleet.

Why use the Go binding

  • Go-native API for production services and QA pipelines
  • Same core rule coverage as the CLI, web app, and Rust library
  • No Rust toolchain required for callers
  • Good fit for real-time ad-tech systems where validation must stay in-process

Install

go get github.com/aleksUIX/vastlint-go

Minimal example

import vastlint "github.com/aleksUIX/vastlint-go"

result, err := vastlint.Validate(xmlBytes)
if err != nil {
    log.Fatal(err)
}

if !result.Valid {
    for _, issue := range result.Issues {
        log.Printf("[%s] %s: %s", issue.Severity, issue.ID, issue.Message)
    }
}

When not to use the Go binding

If you just want a quick manual answer, use the web validator. If you only have a live tag URL, use the tester. If the real problem is wrapper depth or redirect chains, jump to the inspector.

Related reading