Skip to content

Convert

CSV to Bookmarks HTML

CSV to Bookmarks HTML

Beta

Turn a spreadsheet of links into a bookmarks.html file that Chrome, Firefox, Edge and Safari import. Folder paths become real folders. Nothing is uploaded.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas

Every link is placed under this folder, so an import does not scatter links across the bookmarks bar. Clear it to place them at the top level.

CSV Input
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Bookmarks HTML Output

The importable bookmarks file will appear here..

Why Use Our CSV to Bookmarks Converter?

Cleaning a bookmark collection is easy in a spreadsheet and impossible in a browser. Sorting, de-duplicating, bulk-renaming and deciding what to drop are all one-click operations in Sheets and all manual drudgery in a bookmark manager. The problem has always been getting the result back: browsers import bookmarks.html and nothing else. Recreating forty folders and three hundred links by hand undoes the point of cleaning them. This page closes that loop. Give it a column of addresses, optionally a title and a folder path, and it writes the exact file format every browser reads, folders and all.

The Netscape bookmark file format is what every browser has imported since the 1990s and what every browser still exports today. It is a nested definition list: a folder is a heading followed by its own list, and a bookmark is an anchor with an optional ADD_DATE attribute. Browsers are strict about the preamble and forgiving about the rest, so this writer emits the full doctype, the generated-file comment, the charset declaration and the heading exactly as a browser does.

The input side matches columns by name, so a sheet exported from a bookmark manager usually needs no configuration: url, href, link and address all mean the address; title, name and label all mean the title; folder, folder_path and path all mean the folder. When no address column can be found, a column map appears so you can point each field at the right column, and that mapping is the same code the API uses.

Two details decide whether the round trip works. Titles and addresses are HTML-escaped, so an ampersand in a query string survives being read back. And the folder separator prefers slash-space when the value contains it, because a folder called AI/ML is common enough that splitting every slash would quietly invent folders. Everything runs in the browser; the sheet is never uploaded.

How it compares

Browsers import bookmarks.html and nothing else, so a cleaned spreadsheet is stuck until something writes that format. Writing it by hand means getting a 1990s doctype and a nested list exactly right. Online builders take the upload, and a link list is a record of what you read. This page writes the format browsers actually accept, rebuilds the folder tree, and keeps the sheet in the tab.

Bookmark Import Tips

  • The folder path builds real nested folders. Write Work / Clients for a folder inside a folder. When a value has no slash-space it is split on a bare slash instead, so a single folder genuinely called AI/ML survives rather than becoming two.
  • Only the address is required. A row with no title uses its address as the title, which is what a browser shows anyway for an untitled bookmark.
  • A bare domain such as example.com gains https:// so the browser treats it as a link. Anything with a scheme is kept exactly as written, including bookmarklets and file:// links.
  • Rows sharing a folder path are merged under one heading, so a hundred rows in the same folder produce one folder, not a hundred.
  • A row with no usable address is skipped and named by its row number under the output, counting the header as row 1. Fix the cell and paste again; every other row is still in the file.
  • Importing a file into a browser that already holds the same links creates duplicates. Export afterwards and run Dedupe Bookmarks to clean them up.

Frequently Asked Questions

Which columns do I need?

One: the address. Name it url, href, link or address and it is found automatically. A title column named title, name or label and a folder column named folder, folder_path or path are optional but usually worth having. An add_date column is read when it holds an ISO date or a unix timestamp. Matching ignores case, spaces and punctuation, so folder_path and Folder Path are the same name.

How do I import the file?

Chrome and Edge: open the bookmark manager with Ctrl+Shift+O or Cmd+Option+B, then the three-dot menu, then Import bookmarks. Firefox: Ctrl+Shift+O, then Import and Backup, then Import Bookmarks from HTML. Safari: File, then Import From, then Bookmarks HTML File. The links land under the root folder you set.

How do I create nested folders?

Write the path in one cell with a slash between the levels: Work / Clients / Acme builds three levels. A path with slash-space is split on that; a path with a bare slash and no spaces is split on the slash. That rule exists so a folder actually called AI/ML stays one folder, which a plain slash split would turn into two.

What is the root folder for?

It wraps every link in one folder so the import lands in one place instead of scattering links across the bookmarks bar, which is much easier to review and to undo. It defaults to Imported. Clear the field to place the links at the top level of the import instead.

What happens to a row with a bad address?

It is skipped and named under the output by its row number, counting the header as row 1, along with the value that could not be read. Every other row is still in the file. Empty rows are counted separately and are not treated as an error.

Does a bare domain work?

Yes. A value like example.com or example.com/page gains https:// so the browser treats it as a link rather than a search. Anything that already has a scheme is kept byte for byte, including javascript: bookmarklets, file:// links to local documents and intranet hostnames.

Can I set the date a bookmark was added?

Yes, with an add_date column. An ISO date such as 2020-09-13T12:26:40Z or a plain 2020-09-13 both work, and so does a raw unix timestamp. When the value cannot be read as a date the attribute is left out entirely rather than filled with a wrong one, and the browser uses the import time.

Will importing create duplicates?

Browsers do not merge on import; they add. Importing the same file twice gives two copies of every folder. That is the browser's behaviour rather than the file's, so import once, check the result, and delete the folder if you need to start again. A root folder makes that deletion one action.

Does this sync to my browser account?

No, and nothing here could. The file is created in your browser and you import it yourself. Whether the imported bookmarks then sync depends on your browser's own account settings, which this page never touches.

Is my spreadsheet uploaded?

No. The rows are read and the file is built in your browser, and no request carries them. A link list says a lot about what somebody reads and works on. The same converter is on the FindUtils API as csv_to_bookmarks_html for scripted use.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool