Spreadsheet Duplication Remover
Nothing is sent anywhere. Excel and CSV files are opened by this browser tab, so the file never leaves your machine, and there is no size limit beyond your own memory.
What this does differently
Most duplicate removers compare whole lines of text. That catches the easy case and misses the one you actually have: the same customer imported twice, where one row spells the company “Northwind” and the other “Northwind Ltd”. Nothing about those two lines is identical, but they are plainly the same person.
So this tool asks a better question: which columns identify a record? Match on Email and the two rows collapse into one. Match on Email and Signed up, and they stay separate. You decide what a duplicate is, and then you get to see which rows were removed and which line each of them came from before anything is downloaded.
You choose the columns
A duplicate is whatever you say it is - the same email, or the same name and date - not only an identical row.
Nothing leaves your machine
Your file is opened by the browser, not sent to a server, so there is no upload, no storage and no row limit.
It shows its work
Every removed row is listed with its original line number, so you can check the decision before you download.
How to remove duplicate rows
- 1
Upload a file, or paste your rows
Upload an Excel workbook (.xlsx, .xls) or a .csv, and pick which sheet to work on if there is more than one. Or paste straight out of Excel or Google Sheets - commas, tabs, semicolons and pipes are all detected, and quoted fields are handled properly.
- 2
Say what makes a row a duplicate
Pick the columns that identify a record - Email on its own, say, or Name plus Signed up. Leave them all unselected and it matches the entire row, which is the classic behaviour.
- 3
Choose which copy survives
Keep the first occurrence, keep the last, or remove every copy of anything that appears more than once. Case, edge spaces, repeated spaces and punctuation can each be ignored.
- 4
Check, then take it away
Review the removed rows by line number, then download as .xlsx or .csv, copy the CSV, or open the cleaned table straight in SheetAI.
Which copy should survive?
This is the choice people get wrong, and it changes the answer more than any other setting.
Keep the first occurrence
The default, and what Excel's Remove Duplicates does. Right when the earliest record is the authoritative one - an original signup, a first order.
Keep the last occurrence
Right when rows arrive in date order and the newest one supersedes the others - a status that has been updated, a corrected address, a re-submitted form.
Remove every copy
Leaves only rows that appeared exactly once. Useful for reconciliation: what is in this list and nowhere else, or which records were entered twice and need a human.
Matching rules, and why the defaults are what they are
Ignore upper / lower case
"[email protected]" and "[email protected]" are the same address, and email is case-insensitive on the part that matters. On by default.
On by default
Ignore spaces at the ends
A trailing space is invisible and it is the single most common reason a dedupe misses a row - the same reason VLOOKUP fails on " John".
On by default
Treat repeated spaces as one
"Acme Ltd" with a double space matches "Acme Ltd". Common in data typed by hand or concatenated from two fields.
On by default
Ignore punctuation and symbols
Makes "Cedar Health, Inc." match "Cedar Health Inc" and "+1 (555) 010-9999" match "15550109999". Powerful, and blunt enough to leave off unless you need it.
Off by default
Common jobs, and the settings for them
Email and contact lists
Deduplicate on the email column alone, so the same person is not mailed twice even though their company name was spelled differently on two imports.
Match on: Email · Keep: last
Orders and transactions
Two exports covering overlapping date ranges leave the same order in twice. Match on the order id and the double-count disappears.
Match on: Order ID · Keep: first
Product catalogues
The same SKU listed under two category spellings. Match on SKU, keep the last row, and the newest price and stock level survive.
Match on: SKU · Keep: last
Survey and form responses
People submit twice when a page reloads. Match on respondent email and keep the last submission, which is the one they meant.
Match on: Email · Keep: last
Reconciling two lists
Stack both exports, match on the identifying column, and remove every copy. What is left appeared in only one of them - which is exactly what you were looking for.
Match on: Reference · Keep: none
Before a database import
A duplicate primary key fails the whole import. Dedupe on the key column first and the load runs clean the first time.
Match on: ID · Keep: first
How this is done in Excel and Google Sheets
Both have a built-in command, and both are worth knowing - including where they fall short.
How to remove duplicates in Excel›
Select your range, then Data → Remove Duplicates, tick the columns that define a duplicate, and OK.
Excel keeps the first occurrence and tells you how many it removed - but not which rows, so there is nothing to check afterwards.
It also matches case-insensitively and will not ignore a trailing space, which is why a list can look deduplicated and still contain pairs.
How to remove duplicates in Google Sheets›
Data → Data cleanup → Remove duplicates, then choose which columns to compare.
Or =UNIQUE(A2:D) in a spare column to get the deduplicated set as a live formula, leaving the original data in place.
UNIQUE compares whole rows of the range you give it, so column-level matching means building the key yourself with something like =A2&"|"&C2.
How to find duplicates without deleting them›
=COUNTIF(A:A, A2) > 1 flags every row whose value appears more than once - useful when a human needs to decide.
Conditional formatting → Highlight cell rules → Duplicate values does the same visually in Excel.
Here, choose "Remove every copy" and look at the Removed tab: that is your list of everything that appeared more than once, with line numbers.
Why duplicates keep coming back›
Overlapping exports are the usual cause: two reports covering shared date ranges, stacked into one sheet.
The second cause is a key that is not really a key - names and companies get typed differently by different people.
Dedupe on something stable instead: an id, an email, a SKU. That is why this tool asks which columns matter rather than assuming the whole row.
Spreadsheet Duplication Remover FAQ
Duplicates were the easy part
Once the list is clean, SheetAI can do the rest of the job in the sheet itself - standardise the dates, split the name column, chart the trend, or build the summary you were going to make by hand. Ten credits on signup, no card.
Try SheetAI freeExplore Other Free Tools
Want this inside a real spreadsheet?
SheetAI runs the same AI over your own sheet: it reads your cells, writes the formulas in place, cleans the data, and builds the charts.
Works in your browser and Google Sheets · Setup in 30 seconds