Find duplicate bookmarks in your export

Upload a bookmarks HTML file, see every duplicate grouped by URL, and download a deduplicated copy. Runs entirely in your browser.

Why duplicate bookmarks pile up

Nobody saves the same page twice on purpose. Duplicates come from the mechanics of saving: you bookmark an article from a newsletter link (with utm_source bolted on), then again months later from the address bar. Sync merges the bookmarks from an old laptop into your current profile. You import an export "just to be safe" on a new machine without deleting anything first. Each of those events looks harmless; ten years of them means an export where a meaningful slice of the file is the same pages under slightly different URLs.

How it works

The whole pipeline runs inside this browser tab, with no server involved:

  1. Your bookmarks HTML file is read locally and parsed as a document — every link it contains is pulled out along with its title and saved-date attribute. Non-web links (anything that isn't http or https) are skipped.
  2. Each URL is normalized — lowercased host, trailing slash removed, known tracking parameters dropped, fragment ignored — and used as a matching key.
  3. Bookmarks with the same key are grouped; any group with more than one member appears in the results table, sorted by how many copies there are, with the different titles the page was saved under.
  4. The deduplicated download keeps one entry per unique page: the first occurrence, with its original title, saved date, and URL as you saved it. The file is generated in the tab and offered back to you as a download.

How to use it

  1. Export your bookmarks from your browser: open the bookmarks manager and choose the export option to save an HTML file. The menu paths for each browser are inour export and import guide.
  2. Choose that file above with the Bookmarks HTML file picker.
  3. The status line tells you the total checked, how many URLs were duplicated, and how many copies are removable — and the table lists every duplicated URL.
  4. Press Download deduplicated HTML to get a copy of the file with one entry per unique page.
  5. Replace the old set: import the clean file into a fresh folder (or clear the old bookmarks first, then import) so you can verify the result before committing.

Which URLs count as duplicates

Matching happens on the normalized URL, never on the raw text. This is exactly what gets unified — and what deliberately stays apart:

Saved asand also asResultWhy
Example.com/articleexample.com/articleGroupedThe host is lowercased before comparing.
/article//articleGroupedTrailing slashes are stripped — on deep paths and on the bare domain root.
?utm_source=newsletterno parameterGroupedutm_* identifies the click, not the page.
?fbclid=… / ?gclid=…no parameterGroupedFacebook and Google click IDs are removed too.
#commentsno fragmentGroupedFragments scroll within the page; they don't change it.
?page=2?page=3Kept apartAny query parameter that isn't a known tracker is preserved — it might change the page.
http://example.com/ahttps://example.com/aKept apartThe protocol is not rewritten or upgraded.
www.example.com/am.example.com/aKept apartSubdomains are not unified.

The conservatism is intentional: wrongly merging two genuinely different pages (a paginated archive, two products on one domain) destroys information, while missing a stylistic near-duplicate only leaves a bookmark you can delete by hand.

What the deduplicated file contains

A standard Netscape bookmarks HTML file — the same format browsers export — with one entry per unique URL. The surviving copy is the first occurrence in your file's order, keeping its title, its saved date (when the export recorded one), and its URL exactly as you saved it; the normalized URL is only a matching key and is never written into the output. It is a flat list: folders are flattened, because merging "same URL, three different folders" into a tree has no correct answer. Chrome, Firefox, Edge, and Safari all import it. To inspect the file before or after, thebookmark file viewer opens it as a searchable table.

When to run this

  • Before a migration — moving to a new machine or browser profile: dedupe first so you don't seed the fresh setup with years of sync dust. Thebrowser-bookmarks migration guide covers the rest.
  • After sync has multiplied things — the classic "same tab twice" profile built by merging old devices.
  • Before importing into any new manager — most tools have no duplicate detection at import time, so a doubled file stays doubled forever. What a manager should doafter the cleanup is covered in ourbookmark organizer guide.
  • On a research pile collected from many sources — newsletter links, search results, and shared posts save the same pages under different campaign URLs. If the pile is a reading queue rather than a link list, aread-it-later setup is the better fit.

Privacy: what happens to your file

Nothing leaves your computer. There is no server component to this tool: your file is read into the page's memory, parsed, grouped, and re-generated entirely inside your browser tab. No part of it is uploaded, no request carries its contents anywhere, there is no account and no quota, and closing the tab discards everything — there is nothing retained because there is nothing sent. If you want proof before you trust a bookmarks file to any web tool, open your browser's network inspector before selecting the file: deduplication produces no network requests at all.

Limits and edge cases

  • Near-duplicates are not caught. Different subdomains, AMP variants, protocol changes, and shortened URLs that expand elsewhere all stay as separate entries — see the table above.
  • First copy wins. If the first saved copy has the worst title ("Untitled page"), that is the survivor. Re-export, re-order, or fix titles after importing.
  • Folders are flattened in the download, by design. Treat the output as a deduplicated link set, not a re-organized library.
  • Original save dates are kept in the downloaded file — but if you import that file into Marqly, items take their import date; saves' original dates are not preserved through an import. Titles and tags do come along.
  • Only http(s) bookmarks are processed. Other entries in the export are ignored, which is why the counts can differ slightly from what the browser's manager displays.

After the cleanup

Deduplication fixes the redundancy, not the findability — a flat list of two thousand unique links is still two thousand links. Importing the cleaned file intoMarqly keeps its titles and tags, and on the Pro plan AI tags each imported link automatically, while semantic search finds "that piece about negotiating a raise" without you remembering its title or where you filed it. Marqly has afree plan to get started on; see our guide onhow to import Chrome bookmarks, or clean the tracking parameters out of individual links with theURL cleaner before you save them at all.

Related tools and guides

Frequently asked questions

How does it decide two bookmarks are duplicates?

URLs are normalized before comparing: the host is lowercased, a trailing slash is stripped, tracking parameters (utm_*, fbclid, gclid) are removed, and #fragments are ignored. So the same article saved from a newsletter link and from the address bar counts as one page. Different query strings that actually change the page are kept apart.

Does the deduplicated file keep my folders?

No — the download is a flat list, one entry per unique URL, keeping the first occurrence with its title and saved date. Rebuilding a folder tree while merging entries that lived in different folders has no right answer, so we do the honest simple thing. Every browser imports the flat file fine.

Is my bookmarks file uploaded to a server?

No. Parsing, normalizing, grouping, and generating the deduplicated file all happen in your browser — the file never leaves your machine. There is no account, no quota, and nothing retained after you close the tab. Watch the network inspector if you want proof.

What do I do with the deduplicated file?

Import it back into your browser (after removing the old bookmarks, or into a fresh folder), or import it into Marqly, which reads standard bookmarks HTML directly — titles and tags come along with the file. On the Pro plan, Marqly also AI-tags imported links automatically, so the cleaned pile actually becomes findable. Marqly has a free plan you can start on.

Why were two bookmarks for the same page not grouped?

Matching happens on the normalized URL, and normalization is deliberately conservative: a different protocol (http vs https), a different subdomain (www vs m), or a query parameter that is not a known tracker is treated as a different page. The section “Which URLs count as duplicates” lists exactly what gets unified and what stays apart — check the misses there.

Which of the duplicate copies does the download keep?

The first occurrence of each unique page, in the order your export listed them, with its title, its saved date, and its URL exactly as you saved it — tracking parameters and all. The normalized URL is only the matching key; it is never written into the output file.

← All free tools