Your bookmarks stay on your device
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.
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
Before you replace anything
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
Press Try the sample file above to run this yourself.
<!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&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>
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
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.
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.
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.
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.
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
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 bookmarksSource review date: