CSV Dedupe

Drop duplicate rows from a CSV (first kept), optionally keyed on specific columns. Runs entirely in your browser, no upload.

Deduped CSV

CSV dedupe

Remove duplicate rows from a CSV, keeping the first occurrence. By default a row counts as a duplicate only when the whole row matches; give one or more key columns to dedupe on just those (e.g. keep the first row per email). It runs in your browser; nothing is uploaded.

Options

FAQ

Which duplicate is kept?

The first one in order; later duplicates are dropped.

Can I dedupe on more than one column?

Yes — list the key columns comma-separated, as header names (email,company) or 1-based indices (1,3). A row only counts as a duplicate when all key columns match an earlier row; mixing names and indices in one list works too.

Is the duplicate check case-sensitive?

Yes. Values are compared exactly as they appear, so Alice and alice are different, and a stray leading space makes a row unique. Normalize the data first (trim whitespace, lower-case a key column) if you need fuzzy matching. Rows with fewer fields than the key columns treat the missing fields as empty.

Is my data uploaded?

No — it's processed locally with WebAssembly.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool csv-dedupe "name,age
Alice,30
Alice,30
Bob,25"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/csv-dedupe/?data=name%2Cage%0AAlice%2C30%0AAlice%2C30%0ABob%2C25&columns=name&header=true&delimiter=%2C

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.