SmartQueryTools

Convert Arrow to CSV Online

Convert Arrow files to CSV format directly in your browser. No upload required — your data never leaves your device.

About converting Arrow to CSV

Arrow IPC files are mostly written by code rather than by people. pyarrow.feather.write_feather, pandas DataFrame.to_feather, Polars write_ipc and R arrow::write_feather all produce them, and the Hugging Face datasets library caches every split as .arrow files. Converting one to CSV is the quickest way to hand that data to someone without Python or R, or to load it into a tool that only accepts delimited text.

Compressed files work as they are. The Arrow format allows LZ4 or Zstandard compression of each buffer, and pyarrow and pandas apply LZ4 by default when they write Feather files. The reader decodes both codecs in your browser, so there is no need to write the file again uncompressed first.

Files written by pyarrow from a pandas DataFrame can carry the index as an extra column. When the index was not a plain 0 to n range, it shows up in the CSV as __index_level_0__ or under the index name. Drop it in the SQL Query tool, or call reset_index(drop=True) before writing the Arrow file.

Not sure which format you need? Read the Apache Arrow vs Parquet comparison.

Worked example

A small sample file, converted with the default settings.

Input (Arrow)

Arrow IPC file (binary, columnar) — shown as a table with its schema

sensor_idsiteread_attemp_cok
101Dock A2026-03-02 09:15:00.1234.25true
102Dock A2026-03-02 09:15:00.1254.5true
205Cold Room 22026-03-02 09:15:01-18.75true
311Loading Bay2026-03-02 09:15:01.004NULLfalse

Schema: sensor_id INTEGER, site VARCHAR, read_at TIMESTAMP_NS, temp_c DOUBLE, ok BOOLEAN

Output (CSV)

sensor_id,site,read_at,temp_c,ok
101,Dock A,2026-03-02 09:15:00.123,4.25,true
102,Dock A,2026-03-02 09:15:00.125,4.5,true
205,Cold Room 2,2026-03-02 09:15:01,-18.75,true
311,Loading Bay,2026-03-02 09:15:01.004,,false

What changes when you convert Arrow to CSV

  • Arrow field names become the CSV header, and rows from every record batch are written one after another with no sign of where one batch ended.
  • Dictionary-encoded columns, such as a pandas category or a Polars Categorical, are written as full strings. The site column repeats Dock A in full rather than storing a code.
  • Nanosecond timestamps are cut to milliseconds. read_at keeps .123 but any digits after that are lost. Timezone-aware columns are written as UTC with no offset.
  • A float32 column is widened before it is printed, so a stored 0.1 can appear as 0.10000000149011612. NaN is written as the text NaN.
  • Nulls from the Arrow validity bitmap become empty fields, like the missing temp_c for sensor 311.
  • Struct, list and map columns do not flatten. Each value is written as compact JSON text in one quoted field, such as [1,2,3] or {"lat":1.5}.

Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.

Frequently Asked Questions

Can it read a Feather file saved with LZ4 or Zstandard compression?

Yes. pandas and pyarrow compress Feather files with LZ4 by default, and Polars write_ipc can use Zstandard. Both codecs are decoded in the browser, so you can drop the file in as it is.

Can I convert an Arrow stream file with the .arrows extension?

Yes. The reader accepts both the IPC file format and the streaming format, and it recognises the .arrow, .arrows, .ipc and .feather extensions.

Does this read Feather version 1 files?

No. Feather version 1 is a separate, older layout from before Arrow 0.17. Open it with pyarrow or an older pandas and save it again with to_feather, which now writes version 2.

What is CSV format?

CSV (Comma-Separated Values) is a plain-text tabular format supported by virtually every data tool, spreadsheet app, and programming language.

Related Tools