parquet lens
JetBrains Marketplaceplugin 33510free viewer, Pro subscription
Parquet Lens opens Parquet, Avro, TFRecord, Arrow and Feather files in the editor tab of IntelliJ IDEA and the other JetBrains IDEs, straight off disk, with no notebook and no conversion step. The file is read in the pieces its own format has (row groups, record batches, blocks or records), so nothing is loaded whole and a 10 GB dataset pages the way a 10 MB one does. The schema tab shows the types, the codecs and the per-column null counts and min and max the Parquet footer carries, read from the metadata alone with no scan of the rows. Pro adds a filter, evaluated across every row group with min/max pruning where the writer stored those statistics, a sort of the whole dataset by any column rather than the visible page, exact stats over every row, an export of the rows as CSV, JSONL or Parquet, and a profile report on every column.
- opens
- .parquet, .pq, .parq, .avro, .tfrecord, .tfrecords and .tfrec (plain, gzip or zlib compressed), .arrow, .arrows, .ipc, .feather and .ftr
- runs on
- PyCharm, IntelliJ IDEA and every IntelliJ-based IDE from 2024.2 on, with no upper build
- store
- JetBrains Marketplace, plugin 33510
- newest version
- 1.8.0, published 2026-09-11
- pro
- a subscription with its own 30-day trial; the price is quoted below as the store shows it

free
- Any size: the file opens on its metadata, rows arrive in pages of up to 5000 in constant memory, go-to-row lands on any row, and there is no row cap
- Arrow and Feather: Arrow IPC file and stream formats, Feather v2 with lz4 and zstd compression and dictionary-encoded columns
- Avro containers: blocks decoded only when paged into view; null, deflate, snappy and zstandard codecs; nested records, arrays and maps as readable cells, logical types decoded to their values
- TFRecord datasets: tf.Example and SequenceExample records paged by their framing, every feature key a column, byte features as text or as an image label with its size
- Schema view: logical and physical types, nullability, codec, encodings, and per-column null counts and min/max from the footer, no scan needed
- Find in file: streaming text search across every row, at multi-gigabyte scale
- Column stats on the visible page: nulls, distinct, min, max and mean, always labeled with their scope
- Full types: timestamps, dates, times, decimals, uuid, float16, binary, and nested lists, structs and maps rendered as JSON with a pretty detail pane
- Bytes as: a raw binary column read as text in the charset you pick, in the grid, the detail pane, find, copy and export alike
- Copy out: a row as JSON, the page as CSV
- Named errors: a corrupt or truncated file reports a clear reason, and a codec the reader does not have is refused by name
- Themes: eight looks for the grid; trying one is free for the open window
pro
- Filter queries: keep only the rows where columns match, for example
lang == "en" && score >= 0.5, evaluated across every row group with min/max pruning - Export: write all rows, the search matches or the filter matches to CSV, JSONL or a new Parquet file; an Avro, TFRecord, Arrow or Feather dataset becomes Parquet in one step
- Column profile: a report on every column, with ranges, histograms, outliers, the largest gap in a timestamp column, a duplicate-row count and a correlation matrix, written as HTML, Markdown or JSON
- Global sort: sort the whole dataset by any column, not just the visible page
- Exact stats: distinct counts and true distributions over every row, beyond what the metadata can tell you
- Kept themes: a chosen look stays set from file to file
price, as the store shows it
Pro is $1.90 a month or $19 a year for individual use, $3.90 or $39 for organizations. A year of continuous subscription earns JetBrains' perpetual fallback license: the version available when that year started stays yours for good, including its fixes. Each Lens plugin comes with its own free 30-day Pro trial.
where it stops
- No editing: files are never written to; a Pro export creates a new file, a CSV, JSONL or Parquet copy or a profile report
- Not a query engine: the Pro filter predicates and the whole-file sort, no SQL, no joins across files
We wrote the Arrow reader ourselves against the format specification, and the test suite checks every decode path against files the reference implementation wrote.

what's new
- 1.8.0published 2026-09-11
The profile report, a Pro export. Pick a name ending in .profile.html, .profile.md or .profile.json in the Export Rows dialog and the rows you chose are read once and written out as a report rather than a copy. Every column gets its row, null and empty counts and the kinds of value it holds. A numeric column adds the min, max, mean and standard deviation, the quartiles, a histogram and an outlier count; a text column its lengths, its distinct count and its most frequent values; a date or timestamp column the earliest and latest value, the median step and the largest gap. The whole table gets a duplicate-row count, which stays exact up to two million rows, and a correlation matrix over up to forty numeric columns. Where a figure came from a sample rather than from every row, the report says so beside the number, and it says the same wherever a count stopped at a cap. When the export finishes, the Export finished balloon offers Open report: the HTML opens in your browser, the Markdown and the JSON in an editor tab. A cancelled profile leaves no file, and the open file is refused as a destination, as it is for the other exports.
- 1.7.0published 2026-09-09
Export to Parquet, a Pro action. Pick a .parquet name in the Export Rows dialog, whose filter now reads CSV, JSONL or Parquet, and the rows you chose, all of them, the search matches or the filter matches, are written as one snappy-compressed Parquet file. That is the whole conversion: an Avro, TFRecord, Arrow or Feather dataset becomes Parquet in one step. A column keeps the type its file declares where the writer has it, so int64, float64, text, bytes, bool, date, timestamp and a decimal of up to 18 digits go out as they came in. An int32 or float32 column widens to int64 or float64, a nested column lands as JSON text, and a value with no Parquet shape of its own, a time of day for instance, is written as the text the grid shows. A raw binary column keeps its bytes whatever Bytes as is set to; the charset applies only where a cell has to become text. TFRecord columns are sampled from the first records rather than declared, so there the values alone decide each type. The file that is open is refused as a destination with "That is the open file. Pick another name.", as it is for CSV and JSONL, and a cancelled export leaves nothing behind, neither the file nor the scratch copy the writer keeps beside it while it works. When the export finishes, the Export finished balloon offers Open in Parquet Lens, and the new file opens in its own tab here.
- 1.6.0published 2026-09-09
Bytes as, a new choice beside the sort controls, reads a raw binary column as text. Parquet writers that never mark a column as a string leave it as bare bytes, and the grid showed a hex dump with its byte count. Pick UTF-8, Windows-1250, ISO-8859-2, CP852, EUC-KR, Shift_JIS or Windows-1254 and the column decodes, in the grid, the detail pane, find, copy page and export alike; a value that is not text under that charset keeps its hex, so an image column stays as it was. The export popup has a row for the CSV dialect: "RFC 4180 (comma)" as before, or "Excel EU (semicolon, decimal comma)", which is what Excel and LibreOffice expect on a European locale, where the fields are split on semicolons and floating point and decimal cells carry a decimal comma. The choice is remembered across files. The lz4 reader knew one layout, the hadoop block frame Spark and Hive write. It now opens every layout the legacy lz4 id has been used for: the standard LZ4 frame whether its blocks are linked or independent, plus the bare raw block that fastparquet and older arrow write. A page that fits no layout is refused by name, with both sizes in the message, and a page header claiming more than lz4 can produce is refused before any buffer exists.
more
- every format, every product
- opening a large file
- the exports and the profile report
- the VS Code edition
- support
Pricing, invoices and licensing questions go to [email protected]; anything else about the product to [email protected].