Drop a Parquet file here
Parquet, Avro, Arrow IPC or JSON Lines. Click to browse instead.
Open a .parquet file without Python: see the schema and first rows at once, run SQL on it, export to CSV. Read from your disk, never uploaded.
The file is read straight from your disk and is never uploaded. Parsing and every SQL query run inside this tab; the only download is the DuckDB engine, fetched on the first query.
Drop a Parquet file here
Parquet, Avro, Arrow IPC or JSON Lines. Click to browse instead.
A colleague sends you a .parquet file and you just want to know what is in it — which columns, what types, roughly how many rows, what the first few records look like. Normally that means a Jupyter notebook, pyarrow or pandas, and a few minutes of setup for a thirty-second question. This page is the parquet viewer for that moment: drop the file and the schema, row groups and preview appear, and if you need an aggregate you can type SQL against it right there. It also opens .jsonl / .ndjson, Arrow IPC files (.arrow, .feather) and .avro, one file at a time. For a CSV, use CSV Explorer instead.
Parquet keeps its table of contents in a footer at the end of the file, so the page reads only that last stretch — about 512 KB — and shows the schema immediately, whether the file is 10 MB or 1 GB. You get a schema tree with every column's name, physical type and logical type (TIMESTAMP(MICROS, UTC), DECIMAL(18,2), nested struct, list and map), whether it is nullable, the total row count, each row group with its row and byte counts, the codec per column (SNAPPY, ZSTD, GZIP and so on), the encodings used, compressed versus uncompressed size with the ratio, min/max and null-count statistics when the writer stored them, the created_by string, and any key/value metadata such as the pandas or Spark schema JSON, collapsed until you open it. A preview of the first 1,000 rows then streams into a virtual table. Nested values expand as JSON, timestamps are printed with the digits their unit implies (three for milliseconds, six for microseconds, nine for nanoseconds) and a Z when the column is UTC-adjusted, decimals are shown exactly rather than rounded through a float, and binary columns appear as hex of their first 32 bytes.
The query bar is powered by DuckDB-WASM (DuckDB 1.4). The first time you run SQL the page downloads the engine, about 7 MB, which your browser caches for the next visit; the Parquet and JSON extensions are served from this site. Your file is always exposed as the table t, so the default query is SELECT * FROM t LIMIT 100, and templates give you SUMMARIZE t, count(*), the null ratio per column and the top N values of a column with one click. Each result shows the time taken and the row count; up to 10,000 result rows are kept on screen, so add a LIMIT or export when you need more. You can export any result as CSV or JSONL, up to 1,000,000 rows per export — the page tells you when a larger result has been cut — which is the quickest way to turn Parquet into a CSV for someone who cannot open Parquet. A Stop button cancels a running query, and engine errors are shown verbatim rather than paraphrased. On a 1 GB file with tens of millions of rows, count(*) is instant because it comes from the metadata, a GROUP BY over one column or a SUMMARIZE of every column takes seconds to tens of seconds, and the file is read in pieces rather than loaded into memory whole.
The engine runs on a single CPU core, because this site cannot turn on the browser's multi-threaded mode, so a large GROUP BY or join is noticeably slower than desktop DuckDB on the same machine. Memory is bounded by the browser — a 32-bit WebAssembly heap of roughly 4 GB — so a huge sort or join can fail, in which case you see the engine's own error. Encrypted Parquet files using modular encryption cannot be opened. Iceberg and Delta Lake are table layers on top of Parquet and are not understood here: the page opens a single data file, not a table directory, and multi-file selection is not supported yet. Arrow IPC and Avro files currently show schema and metadata only, with no row preview and no SQL. INT96 timestamps written with overflow by old Spark versions may show up as a count of nanoseconds since the epoch instead of a date. DECIMAL min/max statistics with more than 15 digits are approximate and marked with ≈. Parquet export is not available yet; results leave as CSV or JSONL.
The file is read straight from your disk with File.slice; nothing is uploaded, and neither the data nor your queries leave the browser. The only outside request is the DuckDB engine code, fetched from the public CDN cdn.jsdelivr.net on your first SQL run and cached afterwards.
Drop it on this page. The schema, row groups, codecs, statistics and metadata appear at once from the file's footer, and the first 1,000 rows load into a scrollable table. No pyarrow, no notebook, no install — and nothing is uploaded, because the file is read from your own disk.
No. The browser reads the file with File.slice and everything — parsing the footer, previewing rows, running SQL — happens inside the tab. The only download is the DuckDB engine itself, about 7 MB, which comes from a public CDN the first time you run a query. Your data and your queries never leave your machine.
The schema and preview need no engine, but SQL is run by DuckDB compiled to WebAssembly, which is about 7 MB of code. It is fetched from cdn.jsdelivr.net, a public CDN, the first time you press Run and cached by your browser for later visits; the Parquet and JSON extensions come from this site. Only the engine is downloaded — your file is never sent anywhere.
Desktop DuckDB spreads work across every core you have. Here the engine runs on one core, because this site cannot enable the browser's multi-threaded WebAssembly mode. Simple scans and a count(*) — which is read from the metadata — are fast, but a heavy GROUP BY, sort or join over tens of millions of rows takes seconds to tens of seconds rather than a fraction of that.
Open the file, run a query such as SELECT * FROM t, and export the result as CSV. Up to 1,000,000 rows are written per export; a larger result is cut at that point and the page says so, so add a WHERE or LIMIT to export in slices. JSONL export works the same way. Exporting back to Parquet is not available yet.
No. Iceberg and Delta Lake are metadata layers that describe many Parquet files; this page opens one data file at a time and does not read those table manifests. Pick an individual .parquet file from the table's folder to inspect its schema and rows. Multi-file selection is not supported yet either.
Yes, for the schema and metadata: drop an Arrow IPC file (.arrow, .feather) or an .avro file and the column names and types appear. Row preview and SQL are not available for those formats in this version. JSONL / NDJSON files get the full treatment — schema inferred from the first rows, preview and SQL.
Older Spark versions wrote INT96 timestamps that can overflow, and a value like that cannot be turned into a trustworthy date, so the page shows the raw count instead of guessing. Correctly written timestamps are displayed with fixed digits for their unit — three for milliseconds, six for microseconds, nine for nanoseconds — plus a Z when the column is marked UTC-adjusted.
Open a CSV too big for Excel and query it with SQL in the browser.
Browse SQLite databases: tables, schema and SQL queries, all local.
Read a multi-gigabyte text, log or JSON file without loading it whole.