Docs
Documentation
Runs DuckDB SQL locally in your browser for CSV, Excel, and Parquet.
What QuackNinja is
QuackNinja helps you get quick answers from real exports. It runs in your browser and keeps files on your computer.
Attach CSV, Parquet, and Excel files, run SQL, and export results as CSV. No setup needed.
Note
This is a single-session experience per browser tab.
SQL dialect
QuackNinja uses DuckDB SQL. If you’re coming from Postgres/MySQL, most queries work as-is, but some functions and date handling differ.
Query tabs
The SQL editor supports multiple tabs. Each tab keeps its own SQL so you can switch between queries without losing work.
Saved queries
Save queries you run often and reopen them later. Free plans have a small cap; Pro removes the limit.
What it’s for
- Check an export before sharing (missing values, duplicates).
- Combine two exports (customers + transactions).
- Confirm a number before you send a report.
- Clean a messy CSV without spreadsheets.
- Query one sheet from an Excel workbook.
- Pull a subset and export it for stakeholders.
3-minute start
- 1Open the Console.
- 2Attach one or more files.
- 3Run a SQL query.
- 4Export results as CSV.
Privacy
QuackNinja runs in your browser. Files stay on your computer by default. No upload is required.
Note
If you refresh, QuackNinja may ask to reconnect file permissions.
Import formats and limits
Supported formats: CSV, Parquet, and Excel (.xlsx).
Parquet keeps column types as-is on import (no extra type detection step).
- Max single file size (your plan): 1GB.
- Total session size (your plan): 2GB.
Preview vs export
Preview keeps the grid fast. Export uses your full SQL but respects your plan’s row cap.
Export always uses the SQL currently in the editor. There is no full-table export shortcut.
- Preview limit: 10,000 rows.
- Export cap: 500,000 rows.
Tip
If your SQL has no LIMIT, QuackNinja adds a preview limit and shows a banner.
Copy/paste examples
Quick examples you can copy and run right away:
SELECT * FROM customers LIMIT 25;
SELECT status, COUNT(*) AS total
FROM customers
GROUP BY status
ORDER BY total DESC;
SELECT *
FROM orders o
JOIN customers c ON c.id = o.customer_id
LIMIT 100;
SELECT id, COUNT(*) AS dupes
FROM customers
GROUP BY id
HAVING COUNT(*) > 1;
SELECT *
FROM customers
WHERE email IS NULL;
SELECT region, SUM(revenue) AS total
FROM sales
GROUP BY region
ORDER BY total DESC;
SELECT *
FROM events
WHERE created_at >= '2024-01-01'
LIMIT 100;Fix column types
If a column looks like text but should be a number or date, use CAST or TRY_CAST in your SQL.
SELECT
TRY_CAST(total AS DOUBLE) AS total_num,
TRY_CAST(created_at AS TIMESTAMP) AS created_at_ts
FROM orders
LIMIT 100;Common tasks
Guide
Quickstart
Attach files, run SQL, and export results.
Guide
Import CSV
Simple defaults for quick CSV imports.
Guide
Import Excel
Guided import with sheet selection.
Guide
Import Parquet
Preserves types and loads fast.
Guide
Session persistence
Restore the last files you attached.
Guide
Export results
Download results as a clean CSV.
Guide
Troubleshooting
Fix missing tables and common import issues.
Plan limits at a glance
| Plan | Max single file size | Total session size | Preview rows | Export rows |
|---|---|---|---|---|
| Free | 25MB | 100MB | 1,000 | 1,000 |
| Pro | 1GB | 2GB | 10,000 | 500,000 |
File size limits
Warning
QuackNinja enforces max single file size and total session size based on your plan. If you hit the limit, split the file or remove unused columns before importing.