Skip to content
barcoder

Standards/icao-vds-nc

ICAO VDS-NC

TypeQR Data Format
Completeness82%medium

Overview

The ICAO Visible Digital Seal for Non-Constrained environments (VDS-NC) is a cryptographically signed data structure, encoded in a 2D barcode (typically a QR Code, optionally Data Matrix), that carries the essential information of a travel or health document together with a digital signature protecting it against tampering 1, 2. It was defined by the International Civil Aviation Organization (ICAO), a United Nations agency, as part of the Machine Readable Travel Documents standard, Doc 9303, and reuses the same eMRTD trust framework (country-level PKI) that underpins ePassports 3.

A VDS-NC is structured as three parts — a header, a message, and a signature — serialized as canonicalized JSON and signed with ECDSA (ES256 / ES384) 4. During the COVID-19 pandemic ICAO published a VDS-NC profile for travel-related public-health proofs (vaccination and test certificates), making it a direct peer of the EU DCC and SMART Health Cards formats 1.

History

Doc 9303 lineage. The VDS concept extends ICAO's long-running Doc 9303 Machine Readable Travel Documents standard, the same framework that defines ePassports and the eMRTD PKI 3. The "Non-Constrained" variant (VDS-NC) targets environments where data size is less restricted than on a chip — i.e. printed/displayed barcodes.

COVID-19 health proofs. During the pandemic ICAO produced specific VDS-NC guidance for travel-related public-health proofs, enabling member states' ministries (interior, foreign affairs, health, technology) to issue verifiable vaccination and test certificates for international travel 1. ICAO also published a Guide for Handling ICAO VDS-NC Health Proofs and the EU DCC, addressing interoperability between the two systems at borders 2.

Capacity-building. ICAO offered implementation packages (iPACK) and training to help designated authorities deploy VDS-NC issuance and inspection, aiming for global interoperability and mutual recognition of health proofs 1, 5.

Technical specification

A VDS-NC is a signed JSON object with three top-level parts 4:

{ "hdr": { "t": "icao.vacc", "v": 1, "is": "UTO" },
  "msg": { ... document-specific fields ... },
  "sig": { "alg": "ES256", "cer": "...", "sigvl": "..." } }
  • Header (hdr) — document type (t, e.g. icao.vacc for vaccination, icao.test for test), schema version (v), and issuing country (is, ISO 3166-1) 4.
  • Message (msg) — the health/travel payload (e.g. for a vaccination proof: holder identity, vaccine/prophylaxis, doses, dates, certificate ID) 1, 4.
  • Signature (sig) — the signing alg (ES256 = ECDSA P-256/SHA-256, or ES384), the signer certificate cer, and the signature value sigvl 4.

Canonicalization & signing. The JSON protected by the signature is canonicalized per RFC 8785 (JSON Canonicalization Scheme) before signature generation and verification; the ECDSA signature is the raw r‖s form 4, 6. (ICAO Doc 9303 also defines a compact CBOR/byte serialization of the seal for constrained variants.)

Trust framework. VDS-NC reuses the eMRTD PKI: a Barcode Signer Certificate (BSC) is issued under the country's CSCA (Country Signing Certificate Authority). A verifier needs only the issuing state's root (CSCA) certificate to validate the seal's integrity; the signer certificate can be carried inline in the seal 3.

Carrier. The encoded seal is the payload for a QR Code or Data Matrix 6.

Use cases

  • Travel-related public-health proofs — verifiable COVID-19 vaccination and test certificates for international travel 1.
  • eMRTD-family travel documents — VDS/VDS-NC profiles cover visas, residence permits, emergency travel documents, arrival/visa attestations, and other supplementary travel documents 4.
  • Offline border verification — because the signer certificate can be embedded and only the country CSCA root is required, inspection works without live connectivity, suited to border posts 3.
  • Add-on to paper documents — a printed seal extends a paper certificate with tamper-evident, machine-verifiable data 2.

Implementations

  • Kotlin generator/parser — tsenger/vdstools — 13★, last active 2026. Parses and generates VDS and VDS-NC seals across profiles (vaccination, test, residence permit, emergency travel, visa, arrival attestation), supports ES256/ES384, and outputs barcode-agnostic bytes for QR or Data Matrix 4.
  • Android reader — australian-passport-office/vds-nc-reader-library-android — Kotlin, reads and evaluates VDS-NC per ICAO Doc 9303 in Android apps 3.
  • JVM verifier — kurzdigital/vds-jvm parses and verifies VDS / VDS-NC seals 6.
  • EU tooling — the EU Publications Office published a VDS Reader for inspecting ICAO seals 6.
  • ICAO iPACK — official implementation package and training for state authorities deploying issuance/inspection 1, 5.

Comparison

ICAO VDS-NC EU DCC SMART Health Cards DIVOC
Data model signed JSON seal (hdr/msg/sig); CBOR variant in Doc 9303 CWT / CBOR + COSE W3C VC as JWS over FHIR W3C VC (JSON-LD)
Encoding canonical JSON (RFC 8785) in QR/Data Matrix Base45 + ZLIB, HC1: numeric shc:/, Deflate JSON-LD in QR
Signature ES256 / ES384, raw r‖s ES256 / PS256 ES256 issuer-controlled
Trust eMRTD CSCA / BSC PKI, offline-capable EU Gateway CSCA/DSC PKI issuer JWKS + VCI directory per-country keys
Governance ICAO (UN agency) EU eHealth Network → WHO VCI consortium / HL7 eGov Foundation (India)
Scope travel docs + health proofs health proofs health/clinical credentials health campaigns

VDS-NC is distinguished by its roots in the ePassport (eMRTD) trust ecosystem: it reuses the same CSCA PKI that already binds ICAO member states, so verification needs only an issuing country's existing root certificate and can run fully offline at a border. Where EU DCC built a new EU Gateway and SHC uses web-published keys, VDS-NC leans on infrastructure governments already operate for passports 3, 4.

Fun facts

It rides on ePassport infrastructure. Because VDS-NC reuses the eMRTD CSCA PKI, any state that already issues ePassports has most of the trust machinery to issue and verify VDS-NC seals — verification can require nothing more than the issuing country's root certificate 3.

ICAO published a dedicated EU-DCC interoperability guide. Recognizing that two parallel health-proof formats existed at borders, ICAO issued a Guide for Handling ICAO VDS-NC Health Proofs and the EU DCC so inspectors could process both 2.

Status

VDS-NC is a published ICAO standard within the Doc 9303 / MRTD family and remains in use for travel documents beyond the pandemic (visas, residence permits, emergency travel documents) 4. Its public-health-proof profile saw heavy pandemic-era uptake and now sits alongside the wound-down EU DCC and SMART Health Cards as a post-pandemic credential format; the underlying VDS/VDS-NC mechanism and its eMRTD trust model continue as part of ICAO's machine-readable travel-document toolkit, with tooling actively maintained (e.g. tsenger/vdstools, last active 2026) 4, 7.

Sources

  1. Guidance for Visible Digital Seals (VDS-NC) for Travel-Related Public Health Proofs — ICAO
  2. Guide for Handling ICAO VDS-NC Health Proofs and the EU DCC — ICAO
  3. vds-nc-reader-library-android (Doc 9303, eMRTD trust) — Australian Passport Office
  4. vdstools — VDS/VDS-NC structure, profiles, ES256/ES384 — tsenger
  5. Visible Digital Seals iPACK — ICAO
  6. vds-jvm — parse and verify VDS/VDS-NC — kurzdigital

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · content/standards/icao-vds-nc/index.md