QuackNinja logo
Made for quick checks on real filesPowered by DuckDB

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

01

Drop in your files

Import CSV, Excel (.xlsx), or Parquet — add multiple files per session.

Step 01

02

Query with SQL

Filter, join, group, and validate fast — without setting up a database.

Step 02

03

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.

Best for trying it first

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.

Most popular

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.

Best for teams

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.

Session file budget: 100MB (Free) / 2.0GB (Pro)
Preview: 1,000 rows (Free) / 10,000 rows (Pro)
Export: 1,000 rows (Free) / 500,000 rows (Pro)

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.

By default, QuackNinja doesn’t need your files uploaded to run queries.

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 locallyNo uploadsMatches the queries below
If your browser blocks multiple downloads, click each file below.
1 Load tables2 Run a query3 Export CSV

Runs locally — sample files never uploaded.

Runs locally in your browser. Files stay on your computer.

Examples use DuckDB SQL.DuckDB SQL reference

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?
DuckDB SQL

QuackNinja uses DuckDB SQL (modern analytics SQL for local files).

Learn more in Docs
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 Excel
Is there a desktop app?

Not yet. QuackNinja is browser-first to stay lightweight and fast. A desktop app may come later.