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. |