Remove Duplicate Rows

Paste a list or a sheet, check the columns that count, and see which rows would go. The box you pasted into does not change. Download when the preview looks right.

What counts as the same row

Columns show up after you paste.

Paste a sheet, or open the sample, to see which rows repeat.

Share settings

This link carries keep first or last, whether the first row is a header, and which columns are the key. It does not carry the sheet.

/tools/remove-duplicates-excel?keep=first&header=1&cols=0

The box you pasted stays put

I opened a sheet, hit the spreadsheet command that removes duplicates, and the extra rows were already gone. There was no list of what left. This page does the other order. You pick the columns. You pick first or last. You see the row numbers that would go. The paste above is still the paste.

The sample is eight data rows. The id 07030 appears twice, so one of those rows is a duplicate. The id 00123 appears twice with two cities, so it is a duplicate only if the key is the id alone. Check city as well and both 00123 rows stay. Two blank keys match each other. Two cells that say =SUM(A1) match each other. Download is the step that writes a file.

07030 is not 7030

A zip or an order id with a leading zero is text. This reader never calls Number() on a cell, and the writer does not stick a quote in front of a formula. I checked Papa Parse's docs on 21 September 2026 before leaving that library out. With dynamicTyping on, numeric fields become numbers. With escapeFormulae on, a cell that starts with = gets a quote in front. Either one would change the file. The reader here is the same one as the CSV viewer. It follows RFC 4180, and every cell stays a string.

An .xlsx file is refused. Save the workbook as CSV, then paste or open that file. A paste over 2,000,000 characters, or a sheet over 20,000 rows, stops with a message. The rest is not silently dropped and then called done.

First, last, and the columns that count

Keep the first copy walks from the top and holds the earliest row for each key. Keep the last copy holds the latest row and leaves it where it was, so the kept sheet is still in the original order. Uncheck every column and nothing is removed. The page says to pick one. A blank line in the file is not a row. If the reader drops any, the note above the tables says how many.

Comparison is the characters in the cells. It does not trim, and it does not fold case. If you want Ada and ada to count as one row, change the case first in the Text Case Converter, then paste the result back. If a kept cell is wrong, open the download in the CSV Viewer and Editor. That page also leaves leading zeros alone.

What the link carries

Copy settings link builds a URL with keep, header, and the column numbers. Open it and those knobs come back. The sheet does not. A ?v= on the address is a cache buster. It does not replace the knobs stored in this browser.

Questions

Does this change 07030 into 7030?

No. Every cell stays the text you pasted. 07030 and 7030 are different keys. A space in front of an id is part of the id. A cell that says =SUM(A1) stays text. It is not calculated, and the download does not put a quote in front of the equals sign.

When do rows actually disappear?

They do not disappear from the box you pasted into. That box stays editable. The tables below are a preview: which rows would stay, and which rows would go, with the original row number. The file changes when you download the kept rows or the removed-rows report.

What counts as the same row?

Only the columns you check. Keep the first copy leaves the earliest row and lists the later ones. Keep the last copy leaves the latest row in its original place and lists the earlier ones. Empty cells match other empty cells. Ada and ada are different, because the comparison does not change case. Two columns both have to match.

Does the sheet leave this tab?

The paste stays in the page. Close the tab and it is gone. This browser remembers keep first or last, whether the first row is a header, and which columns were checked, under softery.remove-duplicates-excel.settings. Clear settings puts keep first, a header, and column 1 back, and removes that store. The share link carries those knobs and not the sheet. Mixpanel and Google Analytics load with Softery.io. They see that someone opened the tool and which knob moved. They get a size bucket and a row count. They do not get the cells.

Looking for something else?