Type object
Schema URL https://catalog.lintel.tools/schemas/schemastore/chrome-extension/latest.json
Source https://www.schemastore.org/chrome-manifest.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Properties

manifest_version number required

One integer specifying the version of the manifest file format your package requires.

Values: 2 3
name string required

The name of the extension

maxLength=45
version string required
pattern=^(?:\d{1,5}\.){0,3}\d{1,5}$
default_locale string

Specifies the subdirectory of _locales that contains the default strings for this extension.

Default: "en"
description string

A plain text description of the extension

maxLength=132
icons object

One or more icons that represent the extension, app, or theme. Recommended format: PNG; also BMP, GIF, ICO, JPEG.

4 nested properties
16 uri
48 uri
128 uri
256 uri
chrome_url_overrides object

Override pages are a way to substitute an HTML file from your extension for a page that Google Chrome normally provides.

3 nested properties
bookmarks uri
history uri
newtab uri
commands object

Use the commands API to add keyboard shortcuts that trigger actions in your extension, for example, an action to open the browser action or send a command to the extension.

content_scripts object[]

Content scripts are JavaScript files that run in the context of web pages.

minItems=1uniqueItems=true
devtools_page uri
externally_connectable object

Declares which extensions, apps, and web pages can connect to your extension via runtime.connect and runtime.sendMessage.

3 nested properties
ids string[]
matches string[]
accepts_tls_channel_id boolean

Indicates that the extension would like to make use of the TLS channel ID of the web page connecting to it. The web page must also opt to send the TLS channel ID to the extension via setting includeTlsChannelId to true in runtime.connect's connectInfo or runtime.sendMessage's options.

Default: false
file_browser_handlers object[]

You can use this API to enable users to upload files to your website.

minItems=1
homepage_url string
incognito string

Specify how this extension will behave if allowed to run in incognito mode.

Default: "spanning"
Values: "spanning" "split" "not_allowed"
input_components object[]

Allows your extension to handle keystrokes, set the composition, and manage the candidate window.

key string

This value can be used to control the unique ID of an extension, app, or theme when it is loaded during development.

minimum_chrome_version string
pattern=^(?:\d{1,5}\.){0,3}\d{1,5}$
nacl_modules object[]

One or more mappings from MIME types to the Native Client module that handles each type.

minItems=1uniqueItems=true
oauth2 object

Use the Chrome Identity API to authenticate users: the getAuthToken for users logged into their Google Account and the launchWebAuthFlow for users logged into a non-Google account.

2 nested properties
client_id string required

You need to register your app in the Google APIs Console to get the client ID.

scopes string[] required
minItems=1
offline_enabled boolean

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

omnibox object

The omnibox API allows you to register a keyword with Google Chrome's address bar, which is also known as the omnibox.

1 nested properties
keyword string required

The keyword that will trigger your extension.

optional_permissions string | string[]
uniqueItems=true
options_page uri
options_ui object

To allow users to customize the behavior of your extension, you may wish to provide an options page. If you do, an Options link will be shown on the extensions management page at chrome://extensions which opens a dialogue containing your options page.

3 nested properties
page string required

The path to your options page, relative to your extension's root.

chrome_style boolean

If true, a Chrome user agent stylesheet will be applied to your options page. The default value is false, but we recommend you enable it for a consistent UI with Chrome.

Default: true
open_in_tab boolean

If true, your extension's options page will be opened in a new tab rather than embedded in chrome://extensions. The default is false, and we recommend that you don't change it. This is only useful to delay the inevitable deprecation of the old options UI! It will be removed soon, so try not to use it. It will break.

Default: false
permissions string | string[]
uniqueItems=true
requirements object

Technologies required by the app or extension. Hosting sites such as the Chrome Web Store may use this list to dissuade users from installing apps or extensions that will not work on their computer.

2 nested properties
plugins object

Indicates if an app or extension requires NPAPI to run. This requirement is enabled by default when the manifest includes the 'plugins' field.

1 nested properties
npapi boolean required
Default: true
3D object

The '3D' requirement denotes GPU hardware acceleration.

1 nested properties
features string[] required

List of the 3D-related features your app requires.

minItems=1uniqueItems=true
sandbox object

Defines an collection of app or extension pages that are to be served in a sandboxed unique origin, and optionally a Content Security Policy to use with them.

2 nested properties
pages page[] required
minItems=1uniqueItems=true
content_security_policy string

This introduces some fairly strict policies that will make extensions more secure by default, and provides you with the ability to create and enforce rules governing the types of content that can be loaded and executed by your extensions and applications.

Default: "script-src 'self'; object-src 'self'"
format=content-security-policy
short_name string

The short name is typically used where there is insufficient space to display the full name.

maxLength=12
update_url string
tts_engine object

Register itself as a speech engine.

1 nested properties
voices object[] required

Voices the extension can synthesize.

minItems=1uniqueItems=true
version_name string

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

chrome_settings_overrides
content_pack
current_locale
import
platforms
signature
spellcheck
storage
system_indicator

Definitions

action_v2 object
default_title string

Tooltip for the main toolbar icon.

default_popup string
default_icon string | object
action_v3 object
default_title string

Tooltip for the main toolbar icon.

default_popup string
default_icon object
3 nested properties
16 uri
24 uri
32 uri
command object
content_security_policy string

This introduces some fairly strict policies that will make extensions more secure by default, and provides you with the ability to create and enforce rules governing the types of content that can be loaded and executed by your extensions and applications.

glob_pattern string
icon string
match_pattern string
mime_type string
page string
permissions string | string[]
scripts uri[]
uri string
version_string string
web_resource object
resources glob_pattern[] required

An array of resources to be exposed. Resources are specified as strings and may contain * for wildcard matches. For example, "/images/" exposes everything in the extension's /images directory recursively while ".png" exposes all PNG files.

matches match_pattern[]

A list of URL match patterns specifying which pages can access the resources. Only the origin is used to match URLs; subdomains patterns (*.google.com) and paths are ignored.

extension_ids string[]

A list of extension IDs, specifying which extensions can access the resources.

use_dynamic_url boolean

If true, only allow resources to be accessible through dynamic ID. The dynamic ID is generated per session. It's regenerated on browser restart or extension reload.