Registers one or more content scripts.

Note: This method is available in Manifest V3 or higher in Chrome and Firefox 101. In Firefox 102+, this method is also available in Manifest V2.

To use this API you must have the "scripting" permission and permission for the page's URL, either explicitly as a host permission or using the activeTab permission.

This is an asynchronous function that returns a Promise.


await browser.scripting.registerContentScripts(
  scripts         // array



array of scripting.RegisteredContentScript. A list of scripts to register.

Return value

A Promise that fulfills with an array of scripting.RegisteredContentScript. If there are errors during script parsing and file validation, or if the IDs specified do not exist, no scripts are registered and the promise is rejected.


This example registers a content script that injects the file "script.js":

const aScript = {
  id: "a-script",
  js: ["script.js"],
  matches: ["*"],

try {
  await browser.scripting.registerContentScripts([aScript]);
} catch (err) {
  console.error(`failed to register content scripts: ${err}`);

Browser compatibility

BCD tables only load in the browser

Note: This API is based on Chromium's chrome.scripting API.