happytails.ai
English

Avro Schema Compatibility Checker

Check whether a new Avro schema can still read data written with the old one, or the other way round. Every field, type and enum symbol that blocks compatibility is listed with its path.

Accepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems. The writer schema as JSON, or {"versions":[...]} with earlier schemas oldest first for transitive modes. Up to 1,000,000 characters. Review the settings before running.

Your result

How to use Avro Schema Compatibility Checker
  1. Paste the earlier Avro schema in the main box, or {"versions":[...]} for a transitive mode.
  2. Paste the new schema in the New schema field.
  3. Choose backward, forward or full compatibility.
  4. Run the check and download the JSON report or the CSV list of problems.

Report a problem or share an idea.

Useful next steps

Accepts Avro schemas as JSON of up to 1,000,000 characters each, with at most 50,000 JSON values and 64 nesting levels, and up to 50 earlier versions for transitive modes. The check runs in your browser in a background worker. Downloads are a JSON report and a CSV list of problems.

Modes

Backward means the new schema can read data written with the old one, which is what a consumer upgrade needs. Forward means the old schema can read data written with the new one. Full checks both. The transitive modes check the new schema against every earlier version you list, oldest first, instead of only the latest one.

Resolution rules

Checks follow the Schema Resolution section of the Avro 1.11 specification: int promotes to long, float and double, long to float and double, float to double, and string and bytes to each other. Records match by full name, unqualified name or a reader alias. A reader field the writer does not have needs a valid default. A reader enum needs every writer symbol unless it has a default. Each branch of a writer union must resolve in the reader.

Limits of the check

This checks Avro schema resolution rather than extra rules of a particular schema registry. Valid decimal logical types must have equal precision and scale, for both bytes and fixed encodings. Unknown or invalid logical types use the underlying Avro type. Union defaults are checked against the first branch; nested defaults are validated recursively.