CSV Dedupe
Drop duplicate rows from a CSV (first kept), optionally keyed on specific columns. Runs entirely in your browser, no upload.
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
- Key columns — names (when there's a header) or 1-based indices, comma- separated. Blank means match the entire row.
- First row is a header — keep it and allow naming columns.
- Delimiter — comma, tab, semicolon, pipe, or any single character.
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=%2CMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
