Turn messy exports into answers in minutes.
Run SQL on CSV, Excel, and Parquet — without setting up a database. Join files, spot issues, and export a clean result your team can use.
Runs locally in your browser. Your files stay on your computer.
Start free, then switch to a paid plan when you need higher limits or team access.
Outcomes
- Runs on your computer (files stay local)
- Join files in seconds (customers ↔ transactions)
- Find duplicates, missing values, and odd rows
- Export a clean CSV for stakeholders
- Works even when files are messy
How it works
SQL on your files — instantly, in the browser
Upload CSV/Excel/Parquet, run familiar SQL, export clean results for your team in minutes.
Powered by DuckDB SQL
Drop in your files
Import CSV, Excel (.xlsx), or Parquet — add multiple files per session.
Step 01
Query with SQL
Filter, join, group, and validate fast — without setting up a database.
Step 02
Export & share
Download a clean, share-ready CSV your team can trust.
Step 03
Pricing
From quick checks to big exports — upgrade when you need it
Start free, then upgrade for larger files, bigger exports, and unlimited saved queries.
Free
$0 forever
- Upload files up to 25MB
- Total session size up to 100MB
- Preview up to 1,000 rows
- Export up to 1,000 rows
- 3 saved queries
For quick checks, first imports, and validating whether your file workflow fits before you commit to larger limits.
No credit card. 30 seconds to first query.
Individual
$12 /month
Bigger files, bigger exports, unlimited saved queries.
Included limits
- Upload files up to 1.0GB
- Total session size up to 2.0GB
- Preview up to 10,000 rows
- Export up to 500,000 rows
- Unlimited saved queries
Higher file, preview, export, and saved-query limits for one account, without managing seats.
Cancel anytime. Switch plans anytime.
Team
$39+ /month
One shared plan — invite teammates and manage seats.
Included value
- Each member can upload files up to 1.0GB
- Each member gets 2.0GB per session
- Export up to 500,000 rows per member
- Unlimited saved queries for every assigned member
- Owner-managed seats
One owner manages the plan while each assigned member gets the same higher limits as an Individual plan.
Owner manages seats. Add or remove members anytime.
Trust & privacy
Sensitive data? Keep it local.
QuackNinja runs locally, so you can explore sensitive files without moving them to a database or BI tool.
Local processing
Runs in your browser. Your raw files stay on your computer.
No uploads required
Query and validate data without sending files to a server.
Share only what you choose
Export just the results you want — you control what leaves your machine.
What you can do in 5 minutes
Quick wins on messy files
Use QuackNinja when you just need an answer — fast — without spinning up a database, notebook, or BI report.
Find duplicates
Catch repeated customer IDs, invoices, or rows.
Validate totals
Reconcile sums, fees, refunds, and balances.
Join files
Combine customers ↔ transactions ↔ payments.
Spot weird rows
Null spikes, broken dates, strange categories.
Example queries
Get your first answer in under 2 minutes.
Attach exports, run SQL, and export a clean result — without setting up a database.
Try it with sample data
Load the demo tables in one click
Creates 3 tables: customers, transactions, payments.
Runs locally — sample files never uploaded.
Runs locally in your browser. Files stay on your computer.
Try these 4 queries
Works on CSV / Excel / Parquet (DuckDB dialect)Find duplicate customer IDs
Catch repeated IDs and see how many times they appear.
SELECT
customer_id,
COUNT(*) AS cnt
FROM customers
GROUP BY 1
HAVING COUNT(*) > 1
ORDER BY cnt DESC
LIMIT 50;Works on CSV / Excel / Parquet
Join customers to transactions
Answer: who spent the most (with customer names).
SELECT
c.customer_id,
c.name,
SUM(t.amount) AS total_spend,
COUNT(*) AS txn_count
FROM customers c
JOIN transactions t
ON t.customer_id = c.customer_id
GROUP BY 1,2
ORDER BY total_spend DESC
LIMIT 25;Works on CSV / Excel / Parquet
Spot weird rows fast
Find null spikes + negative/zero amounts.
SELECT
COUNT(*) AS rows_total,
SUM(CASE WHEN customer_id IS NULL THEN 1 ELSE 0 END) AS missing_customer_id,
SUM(CASE WHEN amount IS NULL THEN 1 ELSE 0 END) AS missing_amount,
SUM(CASE WHEN amount <= 0 THEN 1 ELSE 0 END) AS non_positive_amount
FROM transactions;Works on CSV / Excel / Parquet
Reconcile totals
Check if payments match transactions.
WITH tx AS (
SELECT
customer_id,
SUM(amount) AS tx_total
FROM transactions
GROUP BY 1
),
pay AS (
SELECT
customer_id,
SUM(amount) AS pay_total
FROM payments
GROUP BY 1
)
SELECT
COALESCE(tx.customer_id, pay.customer_id) AS customer_id,
COALESCE(tx_total, 0) AS tx_total,
COALESCE(pay_total, 0) AS pay_total,
(COALESCE(pay_total, 0) - COALESCE(tx_total, 0)) AS diff
FROM tx
FULL OUTER JOIN pay
ON tx.customer_id = pay.customer_id
ORDER BY ABS(diff) DESC
LIMIT 50;Works on CSV / Excel / Parquet
Tip: Files become tables automatically (e.g., customers, transactions).
FAQ
Common questions
Quick answers to the most common questions.
Do my files ever leave my computer?
No. QuackNinja runs locally in your browser. Your data stays on your machine unless you choose to export results.
What SQL dialect does QuackNinja use?
What file types are supported?
CSV, Excel (.xlsx), and Parquet. You can attach one or multiple files per session and query them like tables.
How do I reference my files in SQL?
Each attached file becomes a table name you can query directly (for example: customers, transactions). We also show the table names in the sidebar.
Can I join multiple files?
Yes — join files in seconds (customers ↔ transactions ↔ payments). DuckDB handles joins, group-bys, and filters locally.
Does QuackNinja support window functions and CTEs?
Yes. DuckDB SQL supports CTEs (WITH …), window functions (OVER/PARTITION BY), and common analytics patterns.
Why are there limits on file size / rows?
Because everything runs in your browser. Limits keep performance fast and stable. Paid plans raise the caps for bigger files and exports.
Can I export results?
Yes. Export any query output to a clean CSV that’s ready to share with teammates or stakeholders.
What about Excel sheets — which sheet is used?
You can choose a sheet on import. If you don’t select one, we default to the first sheet.
Docs: Importing ExcelIs there a desktop app?
Not yet. QuackNinja is browser-first to stay lightweight and fast. A desktop app may come later.