Parquack

July 23, 2026 · View on GitHub

A Firefox and Chrome extension for viewing and querying Parquet, JSON, and CSV files directly in your browser, powered by DuckDB-WASM.

Features

  • Open local files via drag-and-drop or the file picker, or load from any URL
  • Auto-intercepts .parquet URL navigations and opens them in the viewer
  • Browse data with pagination and configurable page size
  • Run arbitrary SQL queries with a CodeMirror editor (syntax highlighting, query history)
  • SQL autocompletion: columns of the loaded file, plus DuckDB keywords, types, and functions with signature hints (including functions registered by extensions loaded via duckdbrc)
  • Multiple query result tabs — "Run in new tab" (⇧+⌘/Ctrl+Enter) keeps previous results around for side-by-side comparison
  • Export query results as CSV, JSON, or Parquet
  • Inspect schema, file metadata, row group statistics, and key-value metadata
  • Dark/light theme, configurable query page size, and a duckdbrc startup SQL field
  • Download the loaded file locally

Browser support

BrowserMinimum version
Firefox140
Firefox for Android142
Chrome120

Development

Prerequisites

  • Node.js 18+
  • npm

Setup

npm install

Build

npm run build              # both Firefox and Chrome
npm run build:firefox
npm run build:chrome

Watch (rebuilds on file change)

npm run watch              # Firefox
npm run watch:chrome

Run in a browser

Requires web-ext (included as a dev dependency):

npm run run:firefox
npm run run:chrome         # uses the default Chrome/Chromium install; override with --chromium-binary

Package for distribution

npm run package            # both targets → build/firefox/parquack.zip, build/chrome/parquack.zip
npm run package:firefox
npm run package:chrome

Architecture

FileRole
src/viewer.jsMain UI — DuckDB init, file loading, rendering, query execution
src/viewer.htmlViewer page shell
src/viewer.cssAll styles
src/background.jsExtension background — toolbar click handler and DNR redirect rule
src/patches/arrow-builder-valid.mjsDrop-in replacement for apache-arrow/builder/valid.mjs that avoids new Function
build.mjsesbuild-based build script; generates manifests and renders PNG icons

The build outputs to build/firefox/ or build/chrome/. The manifest is generated by build.mjs (not checked in) so the version stays in sync with package.json.

License

MIT