Remove duplicate bookmarks by exporting them to a bookmarks.html file, cleaning that file, and importing it back. FindUtils Dedupe Bookmarks reads the export in your browser, keeps the first copy of every link, and gives back a clean file plus a CSV of what it removed. The tool does not upload or store the file, and it never opens a link.

This guide explains where duplicates come from, how to export from each browser, exactly which links count as the same page, which copy is kept, and how to import the result without doubling everything again.

Why Do Duplicate Bookmarks Pile Up?

Duplicate bookmarks come from ordinary habits, not from mistakes:

  • Sync: signing two browsers or two computers into one profile merges both collections.
  • Imports: importing an old browser's favorites adds them next to what is already there.
  • Tracking tags: the same article saved from a newsletter carries ?utm_source=newsletter, and saved again from the site it does not.
  • Anchors: a link to #comments or #setup is a second bookmark for the same page.

A bookmark manager shows these as separate rows, often in different folders, so finding them by eye in a collection of hundreds is slow.

How to Export Bookmarks From Each Browser

BrowserSteps
ChromeBookmark manager, then the three-dot menu, then Export bookmarks
FirefoxLibrary window, then Import and Backup, then Export Bookmarks to HTML
EdgeFavorites, then the three-dot menu, then Export favorites
Safari on a MacFile, then Export, then Bookmarks, or File, then Export Browsing Data to File in newer versions

Every one of them writes the same Netscape bookmark file format, so the same tool reads all four.

How to Remove the Duplicates

Open FindUtils Dedupe Bookmarks, upload the bookmarks.html file or paste its text, and read the summary line: links read, kept, duplicates removed, repeated addresses and folders. Download the deduplicated file, and download the duplicates CSV if you want a record of what went.

Two options change the comparison. Ignore tracking parameters and Ignore #fragments are on by default; turn either off for a stricter match.

Two bookmarks are duplicates when their addresses match after normalizing. With the default options, these pairs compare as follows:

Bookmark ABookmark BResult
https://Example.com/docs/https://example.com/docsSame page: host case and trailing slash are ignored
https://example.com:443/https://example.com/Same page: the default port is ignored
https://example.com/a?utm_source=newshttps://example.com/aSame page: utm_ parameters are ignored
https://example.com/a?fbclid=abchttps://example.com/a?gclid=xyzSame page: fbclid and gclid are ignored
https://example.com/guide#setuphttps://example.com/guideSame page: the #fragment is ignored
https://example.com/list?page=2https://example.com/list?page=3Different pages: other parameters always count
http://example.com/https://example.com/Different: the scheme is not changed
https://www.example.com/https://example.com/Different: a www host is a different host

Titles never matter. Two bookmarks named differently for one page are still duplicates, and two bookmarks with the same name for different pages are not.

Bookmarklets and other non-web addresses, such as javascript: links, are compared exactly as written.

Which Copy Is Kept, and Where Does It Go?

The first copy in the file is kept, with its own title, its saved date and its folder. Browsers export bookmarks in the order the bookmark manager shows them, so the copy higher up in your collection is the one that stays.

When copies of one link sat in different folders, the link stays in the folder of the first copy. Nothing is moved into a new folder and the tree is not flattened. The summary notes how many addresses were spread across folders, and the duplicates CSV lists every folder each copy was in.

A folder whose links were all duplicates of links elsewhere ends up empty, so it is not written, and the notes say how many folders that affected.

What Is in the Duplicates CSV?

The duplicates CSV has one row per address that appeared more than once:

ColumnContent
normalized_urlThe address in the form it was compared in
countHow many copies were found
titlesEvery distinct title the copies had, joined with a vertical bar
folder_pathsEvery folder a copy sat in, joined with a vertical bar; top-level links show as (top level)

Keep the CSV until you have checked the imported result. It is the only record of which copies were merged.

What Is Not Carried Over

The clean file is rebuilt from the links, so a few things stay behind on purpose:

  • Favicons stored in the export are not written.
  • Firefox tags and descriptions are not written.
  • Separators between groups are not written.
  • Empty folders are not written, because a bookmark file only needs folders that hold links.

Every link that remains keeps its address exactly as it was saved, including any tracking tag on the kept copy.

How to Import the Clean File

Import the deduplicated file with your browser's bookmark import option. Importing adds bookmarks alongside the ones already in the browser; it does not replace them. To end up with a single clean set, remove or archive the existing bookmarks before importing, and keep the original export as a backup until you are satisfied.

Practical Examples

Two synced laptops. A collection merged from two machines has the whole bookmark bar twice. Every link in the second copy is a duplicate of the first, so the second set of folders ends up empty and is not written.

A newsletter reader. Articles saved from email carry utm_ parameters. With Ignore tracking parameters on, each article collapses into one bookmark with the title of the first copy.

An audit before switching browsers. Deduplicate first, then convert the clean file with Bookmarks HTML to CSV to review every link in a spreadsheet.

Common Mistakes

Importing without clearing the old bookmarks. The browser keeps the old set and adds the clean one, which recreates every duplicate.

Expecting http and https to merge. The scheme is part of the address and is never rewritten. Two copies that differ only by http and https are both kept.

Expecting dead links to be removed. No link is opened or checked. A bookmark to a page that no longer exists is kept like any other.

Deleting the original export straight away. Keep it and the duplicates CSV until the imported result looks right.

Tools Used in This Guide

ToolUse
Dedupe BookmarksRemove duplicate links from a bookmarks.html export
Bookmarks HTML to CSVReview every link in a spreadsheet
CSV to Bookmarks HTMLTurn an edited spreadsheet back into an importable file

FAQ

Does Chrome have a built-in duplicate bookmark finder?

No. Chrome's bookmark manager can search and sort bookmarks, but it has no option to find or remove duplicates. Exporting the bookmarks, cleaning the export with Dedupe Bookmarks, and importing the result is the no-extension route.

Which copy of a duplicate bookmark is kept?

The first copy in the exported file is kept, with its title, its saved date and its folder. Later copies are removed and listed in the duplicates CSV.

Yes, while Ignore tracking parameters is on. utm_ parameters, fbclid and gclid are ignored when addresses are compared. Every other query parameter still counts.

Is the bookmarks file uploaded?

No. The export is read and rebuilt inside the browser tab, and no request carries the file.

Next Steps

Export your bookmarks and clean them with Dedupe Bookmarks. To review the result as rows, convert it with Bookmarks HTML to CSV.