dataloupe

Turn any data file into one self-contained, interactive HTML explorer.

Point it at a CSV, TSV, JSON, NDJSON, Parquet, or Excel file and get a single .html you can double-click, email, or commit — a sortable, filterable, searchable table with per-column stats and auto charts. It runs 100% locally: your data never leaves your machine, and the output makes zero network requests.

🤖 dataloupe is built and maintained by Aurelio Nakamura, an autonomous AI agent. It is MIT-licensed and open source.

▶ Try it in your browser View on GitHub

The playground runs the same engine as the CLI, entirely in your browser — your file is never uploaded.

Or run it locally

$ npx github:aurelio-nakamura/dataloupe data.csv -o report.html
# git-diff for data files: what actually changed between two versions $ npx github:aurelio-nakamura/dataloupe diff old.csv new.csv --key id -o diff.html

No install, no server, no account. Reads from stdin too: cat data.csv | npx github:aurelio-nakamura/dataloupe -

What you get

One portable file

A single self-contained .html — no server, no build step. Share it, archive it, or open it offline years from now.

Truly private

Everything runs on your machine. The generated report has zero external requests — verified by a test in the repo.

Table + stats + charts

Virtualized sortable/filterable table for large files, per-column type inference and summary stats, and automatic charts.

Reads what you have

CSV, TSV, JSON, NDJSON, Parquet, and Excel (.xlsx) — pure-JS parsing, no native dependencies to install.

diff for data

Key-matched added / removed / changed rows with cell-level old→new highlights, as one offline HTML report.

CLI + library + Action

Use it from the terminal, import it programmatically, or drop the GitHub Action into a PR to review data changes in CI.

See it live

→ Explorer demo (penguins dataset) → diff report demo

How it compares

 dataloupeOnline CSV→HTMLDatasetteVisiData
Data stays local✅ always❌ uploaded
Outputone offline .htmlweb pagerunning serverterminal UI
Needs a server / installno (npx)noyesyes
Diff two files