# Chrome bookmarks location on Mac: the Bookmarks file

> **TL;DR** On a Mac, Google Chrome stores the bookmarks of your first profile in ~/Library/Application Support/Google/Chrome/Default/Bookmarks. It is a JSON file with no extension. Further profiles live in folders named Profile 1, Profile 2 and so on, and chrome://version shows the exact Profile Path of the profile you are using.

Chrome on a Mac keeps your bookmarks in a file named `Bookmarks` at `~/Library/Application Support/Google/Chrome/Default/Bookmarks`. `Default` is the folder of your first profile; every other profile has its own folder and its own `Bookmarks` file.

The rest of this page covers which file to pick when you have several profiles, what the file contains, how to back it up or move it, and how Shareling reads it. The file-format details come from the parser Shareling uses to import it, and from Chromium's own source.

## Where is Chrome's bookmarks file on a Mac?

Chrome's bookmarks file is `~/Library/Application Support/Google/Chrome/Default/Bookmarks` for the first profile. Chrome calls the `~/Library/Application Support/Google/Chrome` folder its user data directory. It holds one subfolder per profile, and each profile folder holds that profile's history, bookmarks and cookies.

The file has no extension. It is called `Bookmarks`, not `Bookmarks.json`, even though it is JSON inside. A comment in Chromium's source notes that the constant's name no longer matches the file name "for historical reasons".

Other builds of Chrome use a different top folder in the same place:

| Build | User data directory |
| --- | --- |
| Google Chrome | `~/Library/Application Support/Google/Chrome` |
| Chrome Beta | `~/Library/Application Support/Google/Chrome Beta` |
| Chrome Dev | `~/Library/Application Support/Google/Chrome Dev` |
| Chrome Canary | `~/Library/Application Support/Google/Chrome Canary` |
| Chromium | `~/Library/Application Support/Chromium` |

The default path is not guaranteed. Chrome can be started with the `--user-data-dir` flag, which puts the whole user data directory somewhere else. If the path above holds nothing, the next section shows how to ask Chrome where it is keeping your profile.

## Which file if I have several Chrome profiles?

Each Chrome profile has its own `Bookmarks` file, and the quickest way to find the right one is to open `chrome://version` in that profile and read the **Profile Path** field. That field is the full path to the profile folder; the bookmarks file sits directly inside it.

The folder names follow a fixed pattern in Chromium's source. The first profile's folder is `Default`. Every profile created after it gets the prefix `Profile ` followed by a number, taken from a running count of profiles created, so you see `Profile 1`, `Profile 2` and so on.

The folder name carries a number, not the name you gave the profile, so it does not tell you which profile is which. `chrome://version` is the reliable check; guessing from the folder name is not.

## What is inside the Chrome bookmarks file?

The Chrome bookmarks file is a JSON document whose top level holds a `checksum` and a `roots` object, and `roots` holds three trees: `bookmark_bar`, `other` and `synced`. The first is the bookmarks bar and the second is the "Other bookmarks" folder; Shareling reads all three, in that order.

Every node in those trees is either a folder or a bookmark. Shareling's parser, `ChromeBookmarks.swift`, reads each node like this:

- A node with `"type": "folder"` has a `name` and a `children` list, which holds more nodes. Folders nest as deep as you made them in Chrome.
- A node with `"type": "url"` is a bookmark. Its `name` is the title you see in Chrome and its `url` is the address.
- A bookmark can carry `date_added`. Chrome writes it as a decimal string counting microseconds since 1 January 1601, not since 1970. The parser subtracts 11,644,473,600 seconds to convert it, and treats zero as "no date recorded".

A trimmed file looks like this:

```json
{
  "checksum": "…",
  "roots": {
    "bookmark_bar": {
      "type": "folder",
      "children": [
        {
          "type": "folder",
          "name": "Design",
          "children": [
            {
              "type": "url",
              "name": "Type scale reference",
              "url": "https://example.com/type",
              "date_added": "13370000000000000"
            }
          ]
        }
      ]
    },
    "other": { "type": "folder", "children": [] },
    "synced": { "type": "folder", "children": [] }
  }
}
```

The path to a bookmark is the list of folder names between its root and itself. In the example, the bookmark sits at `Design`, under the `bookmark_bar` root. Shareling keeps that path outermost first and does not count the root's own name as a folder, because every bookmark has one and it says nothing about the link.

Two caveats before you treat this file as the whole collection. Chromium also defines files named `AccountBookmarks`, `EncryptedBookmarks2` and `EncryptedAccountBookmarks2`, so a signed-in profile may keep some bookmarks outside `Bookmarks`. And Chrome's storage code can encrypt the JSON before writing it to disk when an encryptor is present, in which case what is on disk is not plain JSON.

## How do I back up Chrome bookmarks or move them to another app?

To move Chrome bookmarks to another browser, export them as an HTML file from Chrome's Bookmark Manager; to keep a raw backup, copy the `Bookmarks` file somewhere safe. Google documents the first way. Google's help centre has no page on the file layout, so the second is a copy of the file and nothing more.

To export from Chrome:

1. Open Chrome and go to **More > Bookmarks and lists > Bookmark Manager**.
2. In the Bookmark Manager, choose **More > Export Bookmarks**.
3. Save the file. Chrome exports your bookmarks as one HTML file.

To bring an HTML file into Chrome, go to **More > Bookmarks and lists > Import bookmarks and settings > Choose file**. Where the bookmarks land depends on the profile: if it has no bookmarks yet, they go to the bookmarks bar; if it already has some, they are added to the "Other bookmarks" folder.

For a raw copy of the JSON file, from Terminal:

```bash
cp ~/Library/Application\ Support/Google/Chrome/Default/Bookmarks ~/Desktop/Chrome-Bookmarks-backup
```

Change `Default` to your profile folder from `chrome://version` if you use another one.

Back up before a clean-up, not after. Google's help is blunt about deletion: "After you delete a bookmark, you can't get it back."

## How do I import Chrome bookmarks into Shareling?

To import Chrome bookmarks into Shareling, open the Shareling library window on your Mac, choose **File > Import Chrome Bookmarks…**, and pick the `Bookmarks` file from your Chrome profile folder. On the Recents screen the **Import topics from Chrome** chip opens the same file picker. The importer is part of the Mac app.

Pick the JSON `Bookmarks` file, not an HTML export. Shareling's parser reads Chrome's JSON format, and a file that is not JSON fails with an alert that says so. The picker accepts files with no extension on purpose: Chrome's file has none, so a picker limited to `.json` would grey it out.

![Shareling's From Chrome screen on the Mac, with imported Chrome folders shown as chips above the links](/content/chrome-bookmarks-location-mac/from-chrome-library.webp)

What the importer does with the file, from `ChromeImporter.swift`:

- **Folders become folders in Shareling.** Every folder on a bookmark's path is added to the link, so a bookmark in `Design > Type` sits under both `Design` and `Type`. In Shareling a folder works like a tag, so one link can sit under several. The root names, such as "Bookmarks bar", are not added.
- **Your folders stay yours.** Imported folders are private labels. They never travel with a link when you send it to someone.
- **Dates are kept.** A bookmark with a `date_added` enters your library with that date; one without gets the time of the import.
- **Some bookmarks are skipped, and counted.** Anything that is not an http or https link is skipped. So is a second bookmark for the same page within one file. A folder name longer than 64 characters is dropped from that link and the link still imports.
- **Importing twice adds nothing.** Each page gets the same record every time, so re-running an import only fills in what an interrupted one missed.

When it finishes, an alert reports how many links were added, how many were already in your library, and how many were skipped. The imported links appear under **From Chrome** in the library, with your Chrome folders as chips above them.

The importer reads the one file you pick. If some bookmarks you see in Chrome are kept in one of the account or encrypted files described above, they are not in `Bookmarks`, and Shareling will not see them.

What the importer does with your folders is on the [Chrome bookmarks import](/features/chrome-bookmarks-import) page, and [tags vs folders](/guides/tags-vs-folders-for-bookmarks) covers a link that belongs in more than one of them.

## Frequently asked questions

### Where are Chrome bookmarks stored on a Mac?

In a file named Bookmarks inside your Chrome profile folder. For the first profile that is ~/Library/Application Support/Google/Chrome/Default/Bookmarks.

### What format is the Chrome bookmarks file?

JSON. The top level has a checksum and a roots object, and the roots are bookmark_bar, other and synced. Each root holds a tree of folder and url nodes.

### Does the Bookmarks file hold every bookmark I see in Chrome?

Not always. Chromium also defines files named AccountBookmarks, EncryptedBookmarks2 and EncryptedAccountBookmarks2, so a signed-in profile can keep some bookmarks outside the Bookmarks file.

### How do I export Chrome bookmarks to use in another browser?

Open the Bookmark Manager from More > Bookmarks and lists, then choose More > Export Bookmarks. Chrome saves them as one HTML file, the same kind of file Chrome itself imports from other browsers.

### Can Shareling import the HTML file Chrome exports?

No. Shareling's importer reads the JSON Bookmarks file from your profile folder. A file that is not JSON fails to import and the alert says why.
