Avro viewer — read & query .avro files in your browser
Avro is a row-oriented binary format with its schema embedded in the file header — the format you meet at the ingest edge, where Kafka topics and Hadoop landing zones want cheap appends and painless schema evolution. That framing is exactly why you can't open a .avro in a text editor: the header carries a JSON schema, but the records after it are packed binary, length-prefixed and usually block-compressed. Drop a file here and you get the decoded picture instead — the full Avro schema (record fields, logical types, unions, nested records, arrays and maps) plus the actual records laid out in a table you can scroll. No avro-tools, no JVM, nothing to install.
Beyond just looking, you can run real SQL against the file — SELECT, WHERE, GROUP BY, the works — because DuckDB-WASM reads the Avro in the browser, and then export the result to Parquet, CSV or JSON. The one honest caveat is specific to this format: unlike Parquet, CSV and JSON, the Avro reader isn't bundled. DuckDB fetches its avro extension once from extensions.duckdb.org and caches it, so the very first read needs a network connection — a fully air-gapped browser can't open Avro here. Large files simply take longer, since DuckDB runs single-threaded (no SharedArrayBuffer), not because anything is being sent off-device.
To be exact about that network call: it pulls only the extension binary, never your data. Your .avro file is read entirely in the browser and is never uploaded — you can confirm it in devtools, where the sole request is the one-time extension fetch and there's zero traffic carrying your file or its records. No account, no server round-trip for the data itself. If you're treating this as a staging step rather than a quick look, the Converter writes Avro out to columnar Parquet, or to CSV/JSON, carrying the schema, logical types, unions and nesting across instead of flattening everything down to strings.
Drop a file or click to browse
Drop an Avro file — read locally in your browser, never uploaded
Frequently asked questions
- Is my Avro file uploaded to a server?
- No. The .avro file is read locally in your browser with DuckDB-WASM — its schema and records are decoded on your machine and never sent anywhere. The one request that does go out is unrelated to your data: the first Avro read fetches DuckDB's avro extension from extensions.duckdb.org. That call carries only the extension binary, not your file. You can verify all of this in the devtools Network tab — no request ever contains your records.
- Do I need to be online to open an Avro file?
- For the first read, yes — briefly. Avro isn't bundled the way Parquet, CSV and JSON are, so DuckDB downloads its avro extension once from extensions.duckdb.org, then caches it. A fully air-gapped browser that has never loaded that extension can't decode Avro here. After the first fetch it's cached, but a truly offline machine won't be able to pull it in the first place.
- Can I query the Avro file, or only view it?
- Both. You can browse the embedded schema and scroll the records, and you can run real SQL against the file — SELECT specific fields, filter with WHERE, aggregate with GROUP BY — then export the result. If you'd rather reshape the whole file instead of query it, the Converter writes Avro out to columnar Parquet, or to CSV/JSON, keeping logical types, unions and nested records/arrays/maps intact rather than degrading them to plain strings.