Paste an Avro schema (.avsc) here to view itPaste Avro

What is the Avro Viewer?

Trying to read a chunk of Apache Avro schema that came back on one line and looks like a wall of braces? This tool fixes that. Paste your .avsc schema or a JSON-encoded Avro record into the left panel, and the right panel renders it with proper indentation, line breaks, and syntax highlighting. Both Avro schemas and the JSON encoding of Avro data are valid JSON, so the same viewer handles both.

Avro schemas describe records, enums, arrays, maps, unions, and primitive types — and they get nested fast. A four-level Order → OrderItem → Address → Geo schema is unreadable when it arrives unformatted. Spotting a typo in a field name, finding which record owns a particular logical type, or comparing two versions during a Schema Registry evolution review — all of that gets easier once the structure is laid out.

Everything runs in your browser. No upload to a server, no schema stored anywhere. Paste, read, copy.

How to Use the Avro Viewer

Three quick steps. The buttons described below are the actual buttons on this page.

1

Paste, Upload, or Load a Sample

Paste an Avro schema (or JSON-encoded record) into the left Input panel. Click Upload for an .avsc or .json file, or hit Sample to load a realistic Order schema. Quick example of what minified input looks like:

{"type":"record","name":"Order","namespace":"com.example.commerce","fields":[{"name":"orderId","type":"string"},{"name":"totalCents","type":"long"}]}

Both schemas (.avsc) and JSON-encoded Avro records work — they are both JSON underneath, per the Avro 1.11 specification.

2

Read the Formatted Output

The right Output panel renders the parsed Avro with two-space indentation. Records, fields, unions, and nested types each get their own line. If the input is not valid JSON, the viewer surfaces the parse error so you can fix the typo first.

3

Copy or Download

Hit Copy to grab the formatted Avro for a pull request or chat. Hit Download to save as .avsc. The clear button on the input panel resets you to a blank state. Parsing uses the browser's native JSON.parse() — your data never leaves the page.

When You'd Actually Use This

Schema Registry Reviews

Reviewing an Avro schema PR before it goes into a Schema Registry? Paste the diff in here and read it side-by-side with the previous version. Much easier than scrolling through a single-line blob.

Kafka Topic Debugging

You hit a deserialization error on a Kafka topic. The bad message comes back as JSON-encoded Avro. Paste it in, find the field that does not match the schema, fix the producer.

Documenting an Event

Writing a doc for an event your team produces? Drop the schema in the viewer, copy the formatted version straight into the wiki. The tree shape of records and unions reads naturally once it is laid out.

Onboarding Newcomers

Walking a new teammate through an Avro-based pipeline? Pretty-printed schemas with field names on their own lines are a lot less intimidating than the unformatted blob that lives in the registry.

Common Questions

Does it support binary Avro container files?

Not directly. This viewer reads JSON inputs — Avro schemas (which are JSON) and the JSON encoding of Avro data. For binary .avro Object Container Files, use the avro-tools command-line utility to dump them to JSON first, then paste the JSON here.

Is my schema sent to a server?

No. Parsing runs entirely in your browser using the native JSON.parse() and JSON.stringify(). Nothing is uploaded, nothing is logged.

Will it complain if my schema is structurally wrong?

It validates JSON syntax only — missing braces, stray commas, that kind of thing. For full Avro structural rules (every record needs type, name, and fields; primitive type names; resolution of named types in unions), use the Avro Validator.

What's the difference between this and the JSON Viewer?

Avro schemas are valid JSON, so the JSON Viewer technically works on them. The Avro Viewer adds Avro-flavored sample data, an Avro-aware page, and links out to related Avro tools (validator, fixer, converters). Cosmetically similar, contextually different.

How big a schema can I paste?

Anything your browser can handle. Schemas of a few thousand fields are no problem. Once you push past 10 MB the Ace editor itself starts to slow down — that is the bottleneck, not the parser.

Does it handle Avro logical types like decimal or timestamp-millis?

Yes — they are just {"type": "long", "logicalType": "timestamp-millis"} style annotations in the schema, which is plain JSON. The viewer renders them with full indentation. See the logical types section of the Avro spec.

Other Avro Tools

Viewing is one part of working with Avro. These tools handle the rest: