viewhack

Arrow, Feather and Avro viewer: see the rows of a data file

Drop an Apache Arrow file (IPC file or stream), a Feather v2 file or an Avro container file to see its schema with every column's type and whether it can be null, the row count, the number of record batches or Avro blocks, and the rows in a table. Nested records become dotted columns such as address.city; lists and maps show as JSON. Save it all as CSV or JSON.

The file is read on your device. It is never uploaded.

What it shows

Formats and compression it reads

FileHow it is recognisedOpened?
Arrow IPC file (.arrow)starts and ends with ARROW1; a footer lists every record batchyes
Arrow IPC stream (.arrows)no magic: each message starts with FF FF FF FF and a length, the first one a schemayes
Feather v2 (.feather)the Arrow IPC file format under another name (pyarrow 0.17 and later)yes
Arrow body compressionLZ4 frame or Zstandard per bufferyes, both
Avro container (.avro)starts with Obj and byte 01, then the JSON schemayes
Avro codecsthe avro.codec header entrynull, deflate and snappy (with its CRC-32 check); not zstandard, bzip2 or xz
Feather v1FEA1no, named only
Apache ORCORCno, named only

Compression matters more than it looks: pandas.DataFrame.to_feather() writes LZ4-compressed Feather by default, and Spark writes Avro with snappy unless told otherwise, so a viewer without those decoders fails on the most common files. Arrow is read by apache-arrow 21.2.0 (Apache-2.0), with Zstandard from fzstd 0.1.1 (MIT); the LZ4 frame decoder and the whole Avro reader are viewhack's own code, written from the format specifications. All of it is served from this site.

A worked example

Apache Avro's own test file weather.avro is 358 bytes. Its header says codec null and holds the schema test.Weather ("A weather reading.") with three fields: station (string), time (long) and temp (int). One block follows, holding 5 records. The first row reads 011990-99999, -619524000000, 0. The time is a plain long with no timestamp-millis logical type, so it is shown as the number the file stores. Read as milliseconds since 1970 it is 1950-05-15 14:00 UTC, but only the writer's documentation can tell you that. Its siblings weather-deflate.avro and weather-snappy.avro hold the same five rows and open the same way.

What it cannot do