Skip to the tool
URLExtractor

Duplicate URL Remover

Remove repeated addresses from a list while keeping the first occurrence and the original order — and see exactly which rows were removed, and why.

You provide
A list of URLs, one per line.
You receive
The de-duplicated list, plus a preview of exactly which entries were removed and which entry they matched.
Use it when
Use it after combining exports, or before importing a list somewhere that rejects duplicates.

Your list is processed in this browser tab. Nothing is uploaded.

Paste a list and choose Remove duplicates to see what would be removed, and why.

What this tool cannot do

  • With no options on, two addresses match only when they are byte-for-byte identical. Every looser rule is opt-in and shown in the removal preview.
  • Paths and query values are never lowercased. They are case-sensitive on most servers, so /Page and /page are different pages.
  • The output keeps your original text unless you ask for the normalised form instead.

Conservative by default

Out of the box, two lines are duplicates only if they are exactly the same text. That is deliberately strict, because almost every "obvious" relaxation is wrong somewhere:

  • https://example.com/?id=1 and https://example.com/?id=2 are different pages.
  • https://example.com/Page and https://example.com/page are different on any case-sensitive server, which is most of them.
  • https://example.com/docs#install and https://example.com/docs#api may show completely different content on a single-page application.

So each looser rule is a checkbox you turn on knowingly, and the removal preview names the rule that caused each removal.

What each matching rule does
RuleTreats as the sameWatch out for
Ignore host capitalisation`EXAMPLE.com/a` and `example.com/a`Safe — hostnames are case-insensitive by definition.
Ignore a leading www.`www.example.com/a` and `example.com/a`Usually safe; a few sites serve different content.
Ignore tracking parameters`?utm_source=x&id=4` and `?id=4`Safe for utm_ and click ids; other parameters still count.
Ignore the #fragment`/docs#install` and `/docs#api`Not safe on single-page apps, where the fragment is the page.
Ignore the whole query string`?id=1` and `?id=2`Rarely what you want. This merges genuinely different pages.
Ignore a trailing slash`/docs` and `/docs/`Usually the same page; occasionally not.

The removal preview

The Removed tab lists every line that was dropped, the line number it duplicated, and the rule that matched them. A CSV export of the same thing is available, so you can audit the decision rather than trusting it.

That is the point of the tool: not just a shorter list, but a list you can defend.

URL CleanerWant the tracking parameters actually removed, not just ignored?

Frequently asked questions

Does it change my URLs?

Not unless you ask it to. The matching rules affect comparison only; the output keeps your original text. There is a separate option to write the normalised form instead, and it is off by default.

Which copy is kept?

The first occurrence, in the original order — that is usually what you want when the list is in a meaningful sequence. You can switch to keeping the last occurrence instead.

Can I sort the result?

Yes. Sorting is applied after de-duplication, so it changes the output order without changing which rows survive.

Related tools

Guides for this tool

Share this pageWhatsAppXLinkedInFacebook