Google Chrome · Schema

Chrome Extension Manifest (Manifest V3)

Schema for the manifest.json file required by Chrome browser extensions using Manifest V3. The manifest defines extension metadata, permissions, background service workers, content scripts, UI elements, and API access. Manifest V3 is the current standard for Chrome extensions, replacing Manifest V2 with improved security, performance, and privacy. See https://developer.chrome.com/docs/extensions/reference/manifest for the complete reference.

BrowserChrome ExtensionsDeveloper ToolsWeb Platform

Properties

Name Type Description
manifest_version integer Manifest file format version. Must be 3 for Manifest V3 extensions. Manifest V2 is deprecated and will be removed from Chrome.
name string Name of the extension displayed in the Chrome Web Store, browser toolbar, and chrome://extensions. Maximum 45 characters.
version string Extension version string. One to four dot-separated integers (e.g., 1.0.0.0). Each integer must be between 0 and 65535. Used for auto-update version comparison.
description string Plain text description of the extension. Maximum 132 characters. Displayed in the Chrome Web Store and chrome://extensions.
default_locale string Default locale for internationalization (e.g., en). Required if the extension uses the _locales directory. Specifies the subdirectory of _locales that contains the default strings.
icons object Extension icons at various sizes. Used in the Chrome Web Store, toolbar, extension management page, and other contexts. Recommended sizes are 16, 32, 48, and 128 pixels. PNG format recommended; SVG is
action object Configures the extension's toolbar icon behavior and appearance. Replaces browser_action and page_action from Manifest V2. Controls the icon, tooltip, badge, and popup displayed when the user clicks t
background object Specifies the extension's background service worker. In Manifest V3, background pages are replaced by service workers that run on-demand and are terminated when idle, improving performance and resourc
content_scripts array Scripts and CSS that are injected into web pages matching specified URL patterns. Content scripts run in an isolated world with access to the page DOM but a separate JavaScript namespace. They can com
permissions array API permissions the extension requires. These are granted at install time and displayed to the user as permission warnings. Common permissions: activeTab, alarms, bookmarks, contextMenus, cookies, deb
optional_permissions array API permissions that can be requested at runtime using chrome.permissions.request(). Users can grant or deny these after installation, providing a more gradual permission model.
host_permissions array URL match patterns granting the extension access to specific hosts. Separated from permissions in MV3 for better granularity. Users can choose to grant these on specific sites rather than all at once.
optional_host_permissions array Host permission patterns that can be requested at runtime using chrome.permissions.request().
content_security_policy object Content Security Policy overrides for extension pages. MV3 restricts CSP more strictly than MV2 and does not allow remotely hosted code.
web_accessible_resources array Resources within the extension that can be accessed by web pages or other extensions. In MV3, access is restricted by specifying which origins or extensions can access each resource set.
options_page string Path to the extension's options page HTML file. Opens in a new tab. Use options_ui instead for an embedded options experience.
options_ui object Configuration for the extension's embedded options page, displayed within chrome://extensions.
side_panel object Configuration for the extension's side panel, displayed in Chrome's sidebar alongside the current page. Requires the sidePanel permission.
devtools_page string Path to an HTML page that adds functionality to Chrome DevTools. The page can use chrome.devtools.* APIs to create panels, interact with the inspected window, and access network information.
chrome_url_overrides object Overrides for Chrome's built-in pages. Only one page can be overridden per extension.
omnibox object Registers a keyword for the Chrome address bar (omnibox). When the user types the keyword and presses Tab, the extension receives omnibox input and can provide suggestions.
commands object Keyboard shortcuts for extension actions. Each command has a unique name and an optional default keyboard shortcut. The _execute_action command triggers the extension's action (toolbar icon click).
declarative_net_request object Configuration for the Declarative Net Request API, which enables blocking or modifying network requests using declarative rules without intercepting request content. Replaces the blocking webRequest A
externally_connectable object Specifies which web pages and other extensions can connect to this extension using chrome.runtime.connect() and chrome.runtime.sendMessage().
storage object Configuration for the chrome.storage.managed API, which allows enterprise administrators to set extension configuration via policy.
oauth2 object Configuration for the chrome.identity API OAuth2 flow. Enables the extension to obtain OAuth tokens for Google APIs or other services.
key string Public key for the extension, used to ensure a consistent extension ID during development. This is the base64-encoded value from the .pem file generated when the extension is first packed.
minimum_chrome_version string Minimum Chrome browser version required to install the extension. If the user's Chrome version is older, the extension will not be installable. Format: major.minor.build.patch (e.g., 120.0.0.0).
incognito string How the extension behaves in incognito mode. spanning (default): a single instance handles both normal and incognito. split: separate instances for normal and incognito. not_allowed: extension is disa
short_name string Short name for the extension, used where space is limited. Maximum 12 characters. Falls back to name if not specified.
version_name string Human-readable version string for display purposes (e.g., '1.0 beta'). Not used for update comparison.
author object The extension author information.
homepage_url string URL to the extension's homepage or documentation site.
update_url string URL to the extension's update manifest XML file. Used for self-hosted extensions that update outside the Chrome Web Store.
export object Declares shared modules that other extensions can import.
import array Shared modules to import from other extensions.
sandbox object Defines pages that run in a sandboxed environment with a relaxed CSP. Sandboxed pages cannot use Chrome extension APIs but can use eval() and other normally restricted features.
offline_enabled boolean Whether the extension works offline. If true, the extension appears in the list of offline-enabled apps.
cross_origin_embedder_policy object Cross-Origin Embedder Policy for extension pages.
cross_origin_opener_policy object Cross-Origin Opener Policy for extension pages.
tts_engine object Configuration for text-to-speech engine extensions. Registers the extension as a TTS engine that can synthesize speech.
View JSON Schema on GitHub