QuackNinja logo
Made for quick checks on real exportsPowered 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.

Payments are offline for now — Pro features are unlocked for early users in exchange for feedback.

Outcomes

  • Runs on your computer (files stay local)
  • Join exports in seconds (customers ↔ transactions)
  • Find duplicates, missing values, and odd rows
  • Export a clean CSV for stakeholders
  • Works even when exports are messy

How it works

SQL in your browser — without the setup

Drop in exports, run familiar SQL, and share clean results in minutes.

Powered by DuckDB SQL

01

Attach exports

Import CSV, Excel (.xlsx), and Parquet. Add multiple files per session.

Step 01

02

Ask questions with SQL

Filter, join, group, and validate data fast — no scripts required.

Step 02

03

Export clean results

Download a share-ready CSV your team can trust.

Step 03

What you can do in 5 minutes

Quick wins on messy exports

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 exports

Combine customers ↔ transactions ↔ payments.

Spot weird rows

Null spikes, broken dates, strange categories.

Trust & privacy

Private by default

QuackNinja is built for sensitive exports (finance, ops, customer data).

Runs locally in your browser — files stay on your computer.

No uploads required for analysis.

You control what you export and share.

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).

Billing

Billing coming soon

Payments are being enabled. You can use QuackNinja free in the meantime.

Pricing

Simple plans that scale with your data

Start free. Upgrade when you need bigger files and share-ready exports.

Free

$0 forever

  • Max file: 25MB
  • Total session: 100MB
  • Preview: 1,000 rows
  • Export: 1,000 rows
  • Saved queries: 3

Best for trying small exports. Upgrade for share-ready outputs.

Pro

Checking plan...

$12 /month

Billing coming soon.

  • Max file: 1.0GB
  • Total session: 2.0GB
  • Preview: 10,000 rows
  • Export: 500,000 rows
  • Saved queries: Unlimited

Best for weekly exports, larger files, and results you actually need to share.

Bigger files. Bigger exports. Unlimited saved queries.

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)

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 exports 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. Pro raises the caps for bigger 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.