Dedupe Bookmarks
BetaDrop a bookmarks.html export from Chrome, Firefox, Edge or Safari and download a copy with every duplicate link removed. Tracking parameters and #fragments are ignored when comparing, and nothing is uploaded.
- Free, no sign-up
- REST + MCP
- Updated
- Reviewed by Olgun Ozoktas
utm_ parameters, fbclid and gclid are ignored when comparing addresses. The link that is kept is written exactly as it was saved.
The bookmarks file without duplicates will appear here..
Why Use Our Bookmark Deduplicator?
Every major browser exports bookmarks in the Netscape bookmark file format: an HTML page of nested DL lists in which each folder is an H3 heading and each link is an A element with an HREF and an ADD_DATE. Real exports are not well-formed HTML, because DT and P elements are never closed. Dedupe Bookmarks reads the file with a single linear pass that tracks the folder stack, which copes with exports of many thousands of links without a DOM.
Duplicates are found by comparing a normalized form of each address. The host is lower-cased, the default ports 80 and 443 are dropped, a trailing slash is removed from the path, and by default utm_ parameters, fbclid, gclid and the #fragment are ignored. The rest of the query string is compared exactly, in its original order and encoding. The address written to the output is the one you saved, not the normalized form.
The output is a fresh bookmarks.html with one link per page, each in the folder of its first copy, with the original title and date. The duplicates CSV has four columns: normalized_url, count, titles and folder_paths. No link is opened or checked at any point.
How it compares
Browser extensions that remove duplicate bookmarks need permission to read and change every bookmark you have, and online cleaners take the file as an upload. Dedupe Bookmarks works on an exported copy inside the tab, shows exactly which addresses were merged, and leaves your live bookmarks alone until you choose to import the result.
Bookmark Cleanup Tips
- Two links count as the same page when their addresses match after lower-casing the host, dropping a default port and a trailing slash, and, with the options on, removing utm_ parameters, fbclid, gclid and the #fragment. Every other query parameter matters, so page=2 and page=3 stay separate.
- The first copy in the file wins: its title, its date and its folder are kept.
- When copies of one link sat in different folders, the link stays in the folder of the first copy and the duplicates CSV lists every folder it was in, so nothing moves without a record.
- The new file is rebuilt from the links, so favicons, Firefox tags and descriptions, separators and empty folders are not carried over.
- Bookmarklets and other non-web addresses, such as javascript: and place: links, are compared exactly as written.