SuperAPI AI Directory

dataloupe

Offline tabular data access: describe, preview and query CSV, TSV, JSON, Parquet and Excel files, diff datasets and build an interactive HTML explorer.

Open website

About this tool

Purpose

dataloupe is used to view, explore, and compare tabular data locally and offline. It reads files such as CSV, TSV, JSON (arrays of objects), NDJSON/JSONL, Parquet, Excel (.xlsx), and generates a self-contained, offline interactive HTML browser, or acts as an MCP server for AI assistants to query local data without the data leaving the local machine.

Main capabilities

  • Generate a single self-contained HTML browser: one command reads a data file and writes an .html file next to it. It can be opened by double-clicking, sent by email, dropped into Slack, or committed to a repository. The file embeds a strict Content-Security-Policy (default-src 'none'; connect-src 'none', etc.), and the browser itself blocks any network requests, so it also runs on air-gapped machines, with zero network requests, no CDN, no web fonts, no telemetry.
  • Data viewing and statistics: features a sortable, searchable, filterable table, supports full-text search across all columns, and the virtualized table body remains smooth on large files; provides per-column statistics (nulls, unique value count, min/max/mean/median/std for numeric values, top values for categorical columns) as well as automatic charts (histograms for numeric and date columns, frequency bars for categorical columns, drawn as inline SVG).
  • Built-in SQL console: in the viewer, click ▸_ SQL to run real SELECT queries against the data, supporting WHERE, AND, LIKE, IN, GROUP BY, aggregates (COUNT/SUM/AVG/MIN/MAX), ORDER BY, LIMIT/OFFSET, running entirely in the browser inside the shared file, with no server, no WASM download, no network.
  • Shareable views: the current search, sort, focused column, and theme are stored in the URL hash, so any filtered/sorted view can be bookmarked and shared; opening the same file reaches the same view, still fully offline.
  • Provenance and lineage panel: click ⓘ about to open a collapsible panel listing the embedded source filename, format, generation time, dataloupe version, row count, inferred type and statistics for each column, as well as human title/notes; and in real time describes the currently applied filters/sort/column view in plain language, with a one-click Copy link to this view. ReportIt also records the SHA-256 (and byte size) of the source data and the operations applied in order (load → filter → group-by → order → limit), making it verifiable and reproducible. --title and --note can write human context.
  • diff mode (git diff for data files): matches rows by key, presents added/removed/changed rows in a self-contained offline HTML report, and highlights old → new for changed cells. Supports --key id or --key region,date; when --key is omitted, it automatically detects a unique id-like column, otherwise falls back to whole-row matching; it can compare across any two supported formats (such as a .csv against a .parquet snapshot, or last week's .xlsx against this week's).
  • stdin support: can be connected directly to shell pipelines (format auto-detected, or forced with --format).
  • CI integration: provides a GitHub Action that lets you view actual data file changes in a PR, outputting a downloadable self-contained HTML report and a count summary; the step exposes added/removed/changed/unchanged/changed-any outputs, making it easy to fail a check when data changes; see examples/workflows/data-diff.yml for an example workflow.
  • Programmatic API: after npm install dataloupe, you can generate the same self-contained offline HTML in your own code, with TypeScript types, as ESM.
  • <dataloupe-table> web component: can embed an interactive browser in any web page, with no framework, no build step, and no server; it reuses the same rendering engine and mounts to a sandboxed <iframe> (unique opaque origin + inline default-src 'none' CSP), and the data it points to never leaves the browser and cannot touch the host page. It can be loaded from a CDN (about 110 KB, zero runtime dependencies, provided by versioned git tags), or self-hosted on GitHub Pages; attributes src, format, limit, title, height; events dataloupe:load / dataloupe:error; it can also import "dataloupe/element" to register.
  • MCP server: lets MCP clients such as Claude Desktop, Cursor, and VS Code directly inspect and query local data files, with no database, no server to run, and no upload. The visualization tool visualize_data can generate a file or query result as a self-contained offline interactive HTML browser on disk and return the path. Optional environment variables: DATALOUPE_MCP_ROOT restricts file access to that directory (paths are normalized before inspection to prevent symlink escape); DATALOUPE_MCP_MAX_BYTES is the per-file read limit (default 512 MiB, set to 0 to disable); when DATALOUPE_MCP_READONLY is set to 1/true, writes to the caller-specified out_path are refused, and visualize_data/diff_data still return artifacts but only write to new temporary files. All tools are read-only with respect to data, and dataloupe never modifies files.
  • Container operation: the MCP server has been published to the official MCP Registry (io.github.aurelio-nakamura/dataloupe) and released as an OCI image on the GitHub Container Registry, and can be pointed at that image via stdio using JSON-RPC; the image has zero runtime dependencies and only reads directories mounted at /data.

Usage

  • Run via npx, no installation required: npx dataloupe sales.csv.
  • Or install globally: npm install -g dataloupe.
  • Requires Node.js ≥ 18; the package is a prebuilt, self-contained CLI with no compilation step and no need to fetch runtime dependencies.
  • You can also pin to a repository: npx github:aurelio-nakamura/dataloupe sales.csv.
  • Supports stdin pipelines, with format auto-detected or forced with --format.
  • Excel multiple worksheets are specified with --sheet; Excel date cells are automatically recognized.
  • MCP client configuration example (Claude Desktop / Cursor's mcpServers) see the official documentation; the container method can point to an OCI image.

Use cases

  • Avoid uploading to servers when handling financial, health, internal, or other sensitive data.
  • Need to deliver a dataset to others as a single portable HTML file, so the other party can use it offline long-term without installing anything.
  • Open reports on air-gapped or offline machines.
  • Review data changes in PRs and CI.
  • Embed a data browser in your own code or web pages.
  • Let AI assistants query data files locally offline and replace truncated text tables with shareable HTML artifacts.

Limitations

  • Requires Node.js ≥ 18 (except for the container method).
  • Generated report size is usually tens of KB plus the data itself.
  • The MCP server reads are constrained by a default 512 MiB single-file limit (adjustable or disableable).
  • The output contains no runtime dependencies, and no code is fetched when the page is opened.
  • The official materials do not provide information such as fees, pricing, or platform restrictions.

Open source and license

MIT © Aurelio Nakamura. Built and maintained by an AI agent (Aurelio Nakamura); issues, ideas, and PRs are welcome; see CONTRIBUTING.md for the build/test process, code structure, and how to add new input formats.