Formatter Validator Minifier Escape / Unescape JSON ↔ String JSON ↔ YAML JSON → CSV NDJSON / JSON Lines JSON → Types JSON ↔ XML JSON Diff JSON Patch Canonicalize (RFC 8785) Schema Validator Schema Generator JSONPath Tester JWT Decoder JSON Errors Schemas More Tools
JSONTools / Schema registry / WebExtensions
Schema registry

WebExtensions

WebExtension manifest files

manifest.json

Check your file against this schema

Opens the validator with this schema already loaded. Paste your manifest.json and it validates in your browser — nothing is uploaded.

Validate a manifest.json → View raw schema

Fields

Generated directly from the schema, following local $refs, to two levels of nesting.

Field Type Description
authorstringThe extension's author, intended for display in the browser's user interface. If the developer key is supplied and it contains the "name`" property, it will override the author key. There's no way to specify multiple authors
backgroundobjectUse the background key to include one or more background scripts, a background page, or a Service worker in your extension. Background scripts are the place to put code that needs to maintain a long-term state or perform long-term
background.pagestringIf you need specific content in the background page, you can define a page using the page property. This is a String representing a path relative to the manifest.json file to an HTML document included in your extension bundle. If you use
background.scriptsarray<string>An Array of Strings, each of which is a path to a JavaScript source. The path is relative to the manifest.json file itself. These are the scripts that are executed in the extension's background page. The scripts share the same window
background.service_workerstringSpecify a JavaScript file as the extension service worker. A service worker is a background script that acts as the extension's main event handler.
background.persistentbooleanIf omitted, this property defaults to true in Manifest V2 and false in Manifest V3. Setting to true in Manifest V3 results in an error. `true` indicates the background page is to be kept in memory from when the extension is loaded or the
background.typestringDetermines whether the scripts specified in "scripts" are loaded as ES modules. `classic` indicates the background scripts or service workers are not included as an ES Module. If omitted, this property defaults to classic.
one of: "classic", "module"
browser_specific_settingsobjectThe browser_specific_settings key contains keys that are specific to a particular host application.
browser_specific_settings.geckoobject
browser_specific_settings.gecko.strict_min_versionstringMinimum version of Gecko to support. If the Browser version on which the extension is being installed or run is below this version, the extension is not installed or not run. If not provided, all versions earlier than strict_max_version
default: "42a1"
browser_specific_settings.gecko.strict_max_versionstringMaximum version of Gecko to support. If the Browser version on which the extension is being installed or run is above this version, the extension is not installed or not run. Defaults to "*", which disables checking for a maximum version
default: "*"
browser_specific_settings.gecko_androidobject
browser_specific_settings.gecko_android.strict_min_versionstringMinimum version of Gecko to support. If the Browser version on which the extension is being installed or run is below this version, the extension is not installed or not run. If not provided, all versions earlier than strict_max_version
default: "42a1"
browser_specific_settings.gecko_android.strict_max_versionstringMaximum version of Gecko to support. If the Browser version on which the extension is being installed or run is above this version, the extension is not installed or not run. Defaults to "*", which disables checking for a maximum version
default: "*"
browser_specific_settings.safariobject
browser_specific_settings.safari.strict_min_versionstringMinimum version of Gecko to support. If the Browser version on which the extension is being installed or run is below this version, the extension is not installed or not run. If not provided, all versions earlier than strict_max_version
default: "42a1"
browser_specific_settings.safari.strict_max_versionstringMaximum version of Gecko to support. If the Browser version on which the extension is being installed or run is above this version, the extension is not installed or not run. Defaults to "*", which disables checking for a maximum version
default: "*"
chrome_settings_overridesobjectUse the chrome_settings_overrides key to override the browser's home page and add a new search engine. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides
chrome_settings_overrides.homepagestringDefines the page to be used as the browser's homepage. The replacement is given as a URL. The URL may: - point to a file bundled with the extension, in which case it is given as a URL relative to the manifest.json file - be a remote URL
chrome_settings_overrides.search_providerobjectDefines a search provider to add to the browser. In the URLs you supply, use "{searchTerms}" to interpolate the search term into the URL, like: https://www.discogs.com/search/?q={searchTerms}. You can also provide POST parameters to be
chrome_settings_overrides.search_provider.namerequiredstringThe search engine's name, displayed to the user.
chrome_settings_overrides.search_provider.search_urlrequiredstringURL used by the search engine. This must be an HTTPS URL.
chrome_settings_overrides.search_provider.is_defaultbooleanTrue if the search engine should be the default choice. On Firefox, this is opt-in and the user will only be asked the first time the extension is installed. They will not be asked again if a search engine is added later.
chrome_settings_overrides.search_provider.alternate_urlsarray<string>An array of alternative URLs that can be used instead of search_url.
chrome_settings_overrides.search_provider.encodingstringEncoding of the search term, specified as a standard character encoding name, such as "UTF-8".
chrome_settings_overrides.search_provider.favicon_urlstringURL pointing to an icon for the search engine. This must be an absolute HTTP or HTTPS URL.
chrome_settings_overrides.search_provider.image_urlstringURL used for image search.
chrome_settings_overrides.search_provider.image_url_post_paramsstringPOST parameters to send to image_url.
chrome_settings_overrides.search_provider.instant_urlstringURL used for instant search.
chrome_settings_overrides.search_provider.instant_url_post_paramsstringPOST parameters to send to instant_url.
chrome_settings_overrides.search_provider.keywordstringAddress bar keyword for the search engine.
chrome_settings_overrides.search_provider.prepopulated_idstringThe ID of a built-in search engine to use.
chrome_settings_overrides.search_provider.search_url_post_paramsstringPOST parameters to send to search_url.
chrome_settings_overrides.search_provider.suggest_urlstringURL used for search suggestions. This must be an HTTPS URL.
chrome_settings_overrides.search_provider.suggest_url_post_paramsstringPOST parameters to send to suggest_url.
chrome_url_overridesobjectUse the chrome_url_overrides key to provide a custom replacement for the documents loaded into various special pages usually provided by the browser itself. The replacements are given as a URL to an HTML file. The file must be bundled with
chrome_url_overrides.bookmarksstringProvide a replacement for the page that shows the bookmarks.
chrome_url_overrides.historystringProvide a replacement for the page that shows the browsing history.
chrome_url_overrides.newtabstringProvide a replacement for the document that's shown in the "new tab" page
commandsobjectUse the commands key to define one or more keyboard shortcuts for your extension. Each keyboard shortcut is defined with a name, a combination of keys, and a description. Once you've defined commands in your extension's manifest.json, you
commands._execute_browser_actionobject
commands._execute_browser_action.descriptionstringA description of the shortcut; i.e. what it does
commands._execute_browser_action.suggested_keyobjectThe value of each property is the keyboard shortcut for the command on that platform, as a string containing keys separated by "+". The value for "default" is used on all platforms that are not explicitly listed.
commands._execute_page_actionobject
commands._execute_page_action.descriptionstringA description of the shortcut; i.e. what it does
commands._execute_page_action.suggested_keyobjectThe value of each property is the keyboard shortcut for the command on that platform, as a string containing keys separated by "+". The value for "default" is used on all platforms that are not explicitly listed.
commands._execute_sidebar_actionobject
commands._execute_sidebar_action.descriptionstringA description of the shortcut; i.e. what it does
commands._execute_sidebar_action.suggested_keyobjectThe value of each property is the keyboard shortcut for the command on that platform, as a string containing keys separated by "+". The value for "default" is used on all platforms that are not explicitly listed.
content_scriptsarray<object>Instructs the browser to load content scripts into web pages whose URL matches a given pattern.<br><br>https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts
content_security_policystringExtensions have a content security policy (CSP) applied to them by default. The default policy restricts the sources from which extensions can load code (such as <script> resources) and disallows potentially unsafe practices such as the
default: "default-src 'self'"
declarative_net_requestobjectSpecify static rulesets for use with declarativeNetRequest.<br><br>https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/declarative_net_request
declarative_net_request.rule_resourcesrequiredarray<object>An array of rulesets
default_localestringThis key must be present if the extension contains the _locales directory, and must be absent otherwise. It identifies a subdirectory of _locales, and this subdirectory will be used to find the default strings for your
default: "en"
descriptionstringA short description of the extension, intended for display in the browser's user interface. In Firefox and Chrome this value can be up to 132 characters. The limit in other browsers may differ.<br>This is a localizable
developerobjectThe name of the extension's developer and their homepage URL, intended for display in the browser's user interface.<br>This object only allows for a single developer name and URL to be
developer.namestringOverrides the `author` key
developer.urlstringOverrides the `homepage_url` key
devtools_pagestringUse this key to enable your extension to extend the browser's built-in devtools.<br>This key is defined as a URL to an HTML file. The HTML file must be bundled with the extension, and the URL is relative to the extension's root.<br>The use
dictionariesobjectThe dictionaries key specifies the locale_code for which your extension supplies a dictionary (like `en-US`).<br>If you use the dictionaries key, you must also set an ID for your extension using the browser_specific_settings manifest.json
externally_connectableobjectExternally connectable controls which other extensions and web pages can communicate with an extension using runtime.connect() and runtime.sendMessage() message passing. If externally_connectable is not specified, all extensions can
externally_connectable.idsarray<string>Enables communication between this extension and other installed extensions specified by extension identifiers. Use the pattern "*" to communicate with all extensions.
externally_connectable.matchesarray<string>A list of regular expressions that enables communication between an extension and the web pages that match the expression.<br><br>Note: If `externally_connectable` is not specified, communication among extensions is allowed as if
homepage_urlstringURL for the extension's home page.<br>If a developer key containing the "url" property and "homepage_url" are defined, Firefox uses "developer.url" while Opera uses "homepage_url". Chrome and Safari do not support the "developer"
iconsanyThe icons key specifies icons for your extension. Those icons will be used to represent the extension in components such as the Add-ons Manager.<br>It consists of key-value pairs of image size in px and image path relative to the root
incognitostringUse the incognito key to control how the extension works with private browsing windows.<br><br>Note: By default, extensions do not run in private browsing windows. Whether an extension can access private browsing windows is under user
default: "spanning"
one of: "spanning", "split", "not_allowed"
manifest_versionrequiredintegerThis key specifies the version of manifest.json used by this extension.<br><br>https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version
one of: 2, 3
namerequiredstringName of the extension. This is used to identify the extension in the browser's user interface and on sites like addons.mozilla.org.<br>It's good practice to keep the name short enough to display in the UI. Also, the length of the name of a
offline_enabledbooleanWhether the app or extension is expected to work offline. When Chrome detects that it is offline, apps with this field set to true will be highlighted on the New Tab page. As of Chrome 35, apps (ChromeOS only from 2018) are assumed to be
default: true
omniboxobjectUse the omnibox key to define an omnibox keyword for your extension. When the user types this keyword into the browser's address bar, followed by a space, then any subsequent characters will be sent to the extension using the omnibox API
omnibox.keywordrequiredstringThe keyword that will trigger your extension.
optional_permissionsarrayUse the optional_permissions key to list permissions which you want to ask for at runtime, after your add-on has been installed. The key can contain two kinds of permissions: host permissions and API permissions. Not all permissions are
options_pagestringUse the options_page key to define an options page for your extension. The options page contains settings for the extension. The user can access it from the browser's add-ons manager, and you can open it from within your extension using
options_uiobjectUse the options_ui key to define an options page for your extension. The options page contains settings for the extension. The user can access it from the browser's add-ons manager, and you can open it from within your extension using
options_ui.pagerequiredstringThe path to an HTML file containing the specification of your options page. The path is relative to the location of manifest.json itself.
options_ui.browser_styledeprecatedanyDo not set browser_style to true: its not support in Manifest V3 from Firefox 118. See Manifest V3 migration for browser_style. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles#manifest_v3
options_ui.open_in_tabbooleanIf true, the options page will open in a normal browser tab, rather than being integrated into the browser's add-ons manager.
default: false
page_actionobject
page_action.default_iconstring | object
page_action.default_popupstringThe path to an HTML file containing the specification of the popup. The HTML file may include CSS and JavaScript files using <link> and <script> elements, just like a normal web page. However, <script> must have src attribute to load a
page_action.default_titlestringTooltip for the button, displayed when the user moves their mouse over it. If the button is added to the browser's menu panel, this is also shown under the app icon. This is a localizable property.
page_action.browser_styledeprecatedanyDo not set browser_style to true: its not support in Manifest V3 from Firefox 118. See Manifest V3 migration for browser_style. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles#manifest_v3
permissionsarrayUse the permissions key to request special powers for your extension. This key is an array of strings, and each string is a request for a permission. If you request permissions using this key, then the browser may inform the user at
protocol_handlersarray<object>Use this key to register one or more web-based protocol handlers. A protocol handler is an application that knows how to handle particular types of links: for example, a mail client is a protocol handler for "mailto:" links. When the user
short_namestringShort name for the extension. If given, this will be used in contexts where the name field is too long. It's recommended that the short name should not exceed 12 characters. If the short name field is not included in manifest.json, then
sidebar_actionobjectA sidebar is a pane that is displayed at the left-hand side of the browser window, next to the web page. The browser provides a UI that enables the user to see the currently available sidebars and to select a sidebar to display
sidebar_action.default_iconstring | object
sidebar_action.default_panelrequiredstringThe path to an HTML file that specifies the sidebar's contents. Unlike a normal web page, JavaScript running in the panel can access all the WebExtension APIs (subject, of course, to the extension having the appropriate permissions). This
sidebar_action.default_titlestringTitle for the sidebar. This is used in the browser UI for listing and opening sidebars, and is displayed at the top of the sidebar when it is open. This property is optional: if it is omitted, the sidebar's title is the extension's name
sidebar_action.open_at_installbooleanDetermines whether the sidebar should open on install. The default behavior is to open the sidebar when installation is completed.
default: true
sidebar_action.browser_styledeprecatedanyDo not set browser_style to true: its not support in Manifest V3 from Firefox 118. See Manifest V3 migration for browser_style. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles#manifest_v3
storageobjectUse the storage key to specify the name of the schema file that defines the structure of data in managed storage. Managed data declares the enterprise policies supported by the app. Policies are analogous to options but are configured by a
storage.managed_schemarequiredstringThe full path of the file within the extension that defines the schema of the manage storage.
themeobjectUse the theme key to define a static theme to apply to Firefox. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme
theme.imagesobjectRepresents the images to display in various parts of the browser.
theme.images.theme_framestringThe URL of a foreground image to be added to the header area and anchored to the upper right corner of the header area.
theme.images.additional_backgroundsarray<string>An array of URLs for additional background images to be added to the header area and displayed behind the "theme_frame": image. These images layer the first image in the array on top, the last image in the array at the bottom.
theme.colorsobjectRepresents the colors of various parts of the browser. These properties define the colors used for different parts of the browser. How these properties affect the Firefox UI can be seen at
theme.colors.bookmark_textoneOf
theme.colors.button_background_activeoneOf
theme.colors.button_background_hoveroneOf
theme.colors.iconsoneOf
theme.colors.icons_attentiononeOf
theme.colors.frameoneOf
theme.colors.frame_inactiveoneOf
theme.colors.ntp_backgroundoneOf
theme.colors.ntp_card_backgroundoneOf
theme.colors.ntp_textoneOf
theme.colors.popuponeOf
theme.colors.popup_borderoneOf
theme.colors.popup_highlightoneOf
theme.colors.popup_highlight_textoneOf
theme.colors.popup_textoneOf
theme.colors.sidebaroneOf
theme.colors.sidebar_borderoneOf
theme.colors.sidebar_highlightoneOf
theme.colors.sidebar_highlight_textoneOf
theme.colors.sidebar_textoneOf
theme.colors.tab_background_separatoroneOf
theme.colors.tab_background_textoneOf
theme.colors.tab_lineoneOf
theme.colors.tab_loadingoneOf
theme.colors.tab_selectedoneOf
theme.colors.tab_textoneOf
theme.colors.toolbaroneOf
theme.colors.toolbar_bottom_separatoroneOf
theme.colors.toolbar_fieldoneOf
theme.colors.toolbar_field_borderoneOf
theme.colors.toolbar_field_border_focusoneOf
theme.colors.toolbar_field_focusoneOf
theme.colors.toolbar_field_highlightoneOf
theme.colors.toolbar_field_highlight_textoneOf
theme.colors.toolbar_field_separatoroneOf
theme.colors.toolbar_field_textoneOf
theme.colors.toolbar_field_text_focusoneOf
theme.colors.toolbar_textoneOf
theme.colors.toolbar_top_separatoroneOf
theme.colors.toolbar_vertical_separatoroneOf
theme.propertiesobjectAffects how the "additional_backgrounds" images are displayed and color schemes are applied.
theme.properties.additional_backgrounds_alignmentarray<string>An array of enumeration values defining the alignment of the corresponding "additional_backgrounds": array item.
theme.properties.additional_backgrounds_tilingarray<string>Defines how the corresponding "additional_backgrounds": array item repeats.
theme.properties.color_schemearray<string>Determines which color scheme is applied to the chrome (for example, context menus) and content (for example, built-in pages and the preferred color scheme for web pages).
theme.properties.content_color_schemearray<string>Determines which color scheme is applied to the content (for example, built-in pages and preferred color scheme for web pages). Overrides color_scheme.
user_scriptsobjectInstructs the browser to load a script packaged in the extension, known as the API script, this script is used to export a set of custom API methods for use in user scripts. Note: The user_script key is required for the userScripts API to
user_scripts.api_scriptstringThe API script: - runs in the content processes. - has access to the window and document globals related to the webpage it is attached to. - has access to the same subset of WebExtension APIs usually available in a content script. The
versionrequiredstringThe version string for the extension. The version string consists of 1 to 4 numbers separated by dots, for example, 1.2.3.4. Non-zero numbers must not include a leading zero. Extension stores and browsers may enforce or warn if the version
version_namestringIn addition to the version field, which is used for update purposes, version_name can be set to a descriptive version string and will be used for display purposes if present. If no version_name is present, the version field will be used

What we found in this schema

Specification sections for the keywords in this schema

Keyword Document Section
$idJSON Schema Core, draft 2020-12§8.2.1 — The "$id" Keyword
$refJSON Schema Core, draft 2020-12§8.2.3.1 — Direct References with "$ref"
$schemaJSON Schema Core, draft 2020-12§8.1.1 — "$schema"
additionalPropertiesJSON Schema Core, draft 2020-12§10.3.2.3 — "additionalProperties"
anyOfJSON Schema Core, draft 2020-12§10.2.1.2 — "anyOf"
constJSON Schema Validation, draft 2020-12§6.1.3 — "const"
defaultJSON Schema Validation, draft 2020-12§9.2 — "default"
descriptionJSON Schema Validation, draft 2020-12§9.1 — "title" and "description"
enumJSON Schema Validation, draft 2020-12§6.1.2 — "enum"
formatJSON Schema Validation, draft 2020-12§7 — Vocabularies for Semantic Content With "format"
ifJSON Schema Core, draft 2020-12§10.2.2.1 — "if"
itemsJSON Schema Core, draft 2020-12§10.3.1.2 — "items"
minItemsJSON Schema Validation, draft 2020-12§6.4.2 — "minItems"
patternJSON Schema Validation, draft 2020-12§6.3.3 — "pattern"
patternPropertiesJSON Schema Core, draft 2020-12§10.3.2.2 — "patternProperties"
propertiesJSON Schema Core, draft 2020-12§10.3.2.1 — "properties"
requiredJSON Schema Validation, draft 2020-12§6.5.3 — "required"
thenJSON Schema Core, draft 2020-12§10.2.2.2 — "then"
typeJSON Schema Validation, draft 2020-12§6.1.1 — "type"
uniqueItemsJSON Schema Validation, draft 2020-12§6.4.3 — "uniqueItems"
format: "uri"RFC 3986 (STD 66)§3 — Syntax Components
format: "uri-reference"RFC 3986 (STD 66)§4.1 — URI Reference

Documents

Attribution

This schema comes from SchemaStore, distributed under the Apache License 2.0. Copyright 2015–present Mads Kristensen and contributors. View the original file. The field table and audit on this page are generated by JSONTools.tools; the schema itself is unmodified.

← All schemas