Your bookmarks stay on your device

Find duplicate bookmarks and clean up your bookmark file

Drop the bookmarks file your browser exports. I find duplicate bookmarks, empty folders and links you saved years ago, then give you a clean file to import and a to-do list of the links worth acting on.

Drop your bookmarks file here

Export your bookmarks as an HTML file from Chrome, Firefox or Safari, then drop it here or choose it. I read files up to 30 MB.

Your bookmarks never leave your device. I read the file inside this browser tab and send nothing to a server.

How it works

Clean your bookmarks in four steps

  1. Export your bookmarks. In Chrome on a computer, open More, then Bookmarks and lists, then Bookmark Manager, and choose Export Bookmarks from the More menu at the top, as Chrome Help shows. In Firefox, open Manage bookmarks, click Import and Backup and choose Export Bookmarks to HTML, as Mozilla Support shows. In Safari on a Mac, choose File, then Export Browsing Data to File, keep Bookmarks selected and save the .zip file Apple describes, then open it.
  2. Drop the HTML file here. I read it with the folder structure of the Netscape bookmark format that browsers export, including the date you saved each bookmark.
  3. Review the duplicates. I compare addresses after the normalization of RFC 3986: HTTPS://Example.com:443/guide and https://example.com/guide count as one page. Pick which copy to keep, and choose whether utm_ campaign tags and the part after # count.
  4. Take your results. Download a clean bookmarks file without the extra copies and empty folders, copy the duplicate report, or tick the links you will act on and copy them as a to-do list.

Before you replace anything

Import the clean file safely

Your browser adds an imported file to the bookmarks you already have. Chrome puts the imported bookmarks in your bookmarks bar when you have none, and in a folder under Other bookmarks when you already have some. Firefox adds them to the Bookmarks Menu and warns that you can end up with duplicates.

So keep your original export as a backup, delete your current bookmarks in the bookmark manager, then import bookmarks-clean.html. If you sync bookmarks across devices, the deletion syncs too: work on one device and let the clean set sync out. For a handful of duplicates, skip the import and delete each extra copy by hand with the duplicate report beside you.

Worked example

See it clean a small export

Press Try the sample file above to run this yourself.

The sample export

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
     It will be read and overwritten.
     DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
    <DT><H3 ADD_DATE="1600000000" LAST_MODIFIED="1700000000" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks bar</H3>
    <DL><p>
        <DT><A HREF="https://developer.mozilla.org/en-US/docs/Web/HTML" ADD_DATE="1609459200">HTML reference</A>
        <DT><A HREF="https://www.youtube.com/watch?v=dQw4w9WgXcQ&amp;utm_source=newsletter" ADD_DATE="1704067200">Talk to watch later</A>
        <DT><H3 ADD_DATE="1600000000">Read later</H3>
        <DL><p>
            <DT><A HREF="https://example.com/guide#setup" ADD_DATE="1420070400">Setup guide</A>
            <DT><A HREF="HTTPS://Example.com:443/guide#setup" ADD_DATE="1577836800">Setup guide (copy)</A>
            <DT><A HREF="https://example.com/guide#faq" ADD_DATE="1735689600">Setup guide FAQ</A>
            <DT><A HREF="https://www.youtube.com/watch?v=dQw4w9WgXcQ" ADD_DATE="1735689600">Talk to watch later</A>
        </DL><p>
        <DT><H3 ADD_DATE="1600000000">Old projects</H3>
        <DL><p>
        </DL><p>
    </DL><p>
    <DT><H3 ADD_DATE="1600000000">Other bookmarks</H3>
    <DL><p>
        <DT><A HREF="https://developer.mozilla.org/en-US/docs/Web/HTML" ADD_DATE="1262304000">MDN HTML</A>
        <DT><A HREF="javascript:void(0)" ADD_DATE="1262304000">Bookmarklet</A>
    </DL><p>
</DL><p>

What I find

The file holds 8 bookmarks. I find 3 addresses saved twice: the MDN HTML reference in two folders, a YouTube talk saved once with a utm_source=newsletter tag and once without, and a setup guide saved as HTTPS://Example.com:443/guide#setup and as https://example.com/guide#setup.

I keep the first copy of each address and delete 3 copies. I also drop the empty Old projects folder, so the clean file holds 5 bookmarks, including the bookmarklet, which I never touch. Turn on Ignore the part after # and the guide's FAQ link joins the setup guide group: 4 copies to delete.

Questions

Find answers before you start

How do I find duplicate bookmarks in Chrome?

Export your bookmarks from Chrome's Bookmark Manager as an HTML file and drop it on this page. I list every address you saved more than once with the folder and date of each copy. Then delete the extra copies in the Bookmark Manager, or import the clean file I build.

Does this bookmark cleaner delete anything in my browser?

No. I only read the file you drop and write a new file. Your browser changes only when you delete bookmarks yourself or import the clean file.

Why do two different addresses count as duplicates?

Some addresses differ only in ways that never change the page. RFC 3986 treats the scheme and host as case-insensitive and drops a default port, so HTTPS://Example.com:443/guide equals https://example.com/guide. Campaign tags such as utm_source, which Google Analytics uses to label traffic, count only when you switch that option off.

Is my bookmarks file private?

Yes. The cleaner runs inside this browser tab, so your file and its links never reach a server. I keep nothing after you close the tab.

Can I export only the bookmarks I want to act on?

Yes. Tick them in Pick the bookmarks you will act on, then copy them as a Markdown to-do list or download a CSV with the title, address, folder and save date of each one.

Check the method

Understand your result

I read the HTML file your browser exports, in the Netscape bookmark format that Microsoft documents, inside this tab. I compare addresses after the URL parser applies RFC 3986 normalization: lowercase scheme and host, no default port and a slash for an empty path. You choose whether utm_ campaign tags and the part after # count. I keep the first copy of each duplicate unless you pick another, and I write the clean file in the same format, so Chrome, Firefox and Safari can import it.

Read the guide to cleaning up bookmarks

Check the sources

Source review date: