Creates a bookmark or folder as a child of the BookmarkTreeNode with the specified parentId. To create a folder, omit or leave empty the CreateDetails.url parameter.

Warning: If your extension tries to create a new bookmark in the bookmark tree's root node, it raises an error: "The bookmark root cannot be modified" and the bookmark won't be created.

This is an asynchronous function that returns a Promise.


let createBookmark = browser.bookmarks.create(
  bookmark                  // CreateDetails object


Return value

A Promise that will be fulfilled with a BookmarkTreeNode that describes the new bookmark node.

Note: If you create multiple bookmarks, because this API is asynchronous, the create calls may get processed in any order. Consequently, the value of each bookmark's index returned in BookmarkTreeNode may change or be unknown until all the create calls are completed. If the index associated with a bookmark matters to your extension, then – when creating multiple bookmarks – the extension should wait for each bookmarks.create call to complete before creating the next bookmark. Waiting ensures that the index associated with each bookmark is not affected by a create call executing concurrently while the original call is in progress.


This example creates a bookmark for this page, placing it in the default folder ("Other Bookmarks" in Firefox and Chrome).

function onCreated(node) {

let createBookmark = browser.bookmarks.create({
  title: "bookmarks.create() on MDN",
  url: "",


Example extensions

Browser compatibility

BCD tables only load in the browser

Note: This API is based on Chromium's chrome.bookmarks API. This documentation is derived from bookmarks.json in the Chromium code.