DATA MODEL
Strict JSON inputs only
Strings must contain valid Unicode scalar values. Numbers must be finite. Arrays cannot be sparse. Cycles, BigInt, symbols, functions and undefined values are rejected instead of being silently changed.
CANONICALIZATION
UTF-16 member ordering and deterministic serialization
Object keys use the RFC 8785 ordering rule, array order is preserved and finite numbers follow ECMAScript JSON serialization. UTF-8 bytes of the canonical string are hashed with SHA-256.
EXECUTABLE VECTORS
Implement against public expected outputs
Download canonical JSON vectors
The zero-dependency offline receipt verifier contains the same canonicalizer for browser and server use.