> [!WARNING]
> **Warning:** The Chrome Web Store no longer accepts Manifest V2 extensions. Follow the [Manifest V3 Migration guide](https://developer.chrome.com/docs/extensions/migrating) to convert your extension to Manifest V3.

Extensions are small software programs that customize the browsing experience. They enable users to
tailor Chrome functionality and behavior to individual needs or preferences. They are built on web
technologies such as HTML, JavaScript, and CSS.

An extension must fulfill a [single purpose](https://developer.chrome.com/docs/extensions/mv2/single_purpose) that is narrowly defined and easy to understand. A
single extension can include multiple components and a range of functionality, as long as everything
contributes towards a common purpose.

![A screenshot of an extension's icon in the browser bar](https://developer.chrome.com/static/docs/extensions/mv2/overview/image/a-screenshot-an-extensio-1826c069f230f.png)

User interfaces should be minimal and have intent. They can range from a simple icon, such as the [Google
Mail Checker extension](https://developer.chrome.com/docs/extensions/mv2/samples#google-mail-checker) shown above, to [overriding](https://developer.chrome.com/docs/extensions/mv2/override) an entire page.

Extension files are zipped into a single `.crx` package that the user downloads and installs. This
means extensions do not depend on content from the web, unlike ordinary web apps.

Extensions are distributed through the [Chrome Developer Dashboard](https://chrome.google.com/webstore/developer/dashboard) and published to the [Chrome
Web Store](https://chrome.google.com/webstore). For more information, see the [store developer documentation](https://developer.chrome.com/docs/webstore).

## Hello extensions

Take a small step into extensions with this quick Hello Extensions example. Start by creating a new
directory to store the extension's files, or download them from the [sample page](https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/mv2/tutorials/hello_extensions).

Next, add a file called `manifest.json` and include the following code:

    {
      "name": "Hello Extensions",
      "description" : "Base Level Extension",
      "version": "1.0",
      "manifest_version": 2
    }

Every extension requires a manifest, though most extensions will not do much with just the manifest.
For this quick start, the extension has a popup file and icon declared under the
[`browser_action`](https://developer.chrome.com/docs/extensions/reference/browserAction) field:

    {
      "name": "Hello Extensions",
      "description" : "Base Level Extension",
      "version": "1.0",
      "manifest_version": 2,
      "browser_action": {
        "default_popup": "hello.html",
        "default_icon": "hello_extensions.png"
      }
    }

Download [`hello_extensions.png` here](https://storage.googleapis.com/web-dev-uploads/image/WlD8wC6g8khYWPJUsQceQkhXSlv1/gmKIT88Ha1z8VBMJFOOH.png) and then create a file titled `hello.html`:

    <html>
      <body>
        <h1>Hello Extensions</h1>
      </body>
    </html>

The extension now displays `hello.html` when the icon is clicked. The next step is to include a
command in the `manifest.json` that enables a keyboard shortcut. This step is fun, but not
necessary:

    {
      "name": "Hello Extensions",
      "description" : "Base Level Extension",
      "version": "1.0",
      "manifest_version": 2,
      "browser_action": {
        "default_popup": "hello.html",
        "default_icon": "hello_extensions.png"
      },
      "commands": {
        "_execute_browser_action": {
          "suggested_key": {
            "default": "Ctrl+Shift+F",
            "mac": "MacCtrl+Shift+F"
          },
          "description": "Opens hello.html"
        }
      }
    }

The last step is to install the extension on your local machine.

1. Navigate to `chrome://extensions` in your browser. You can also access this page by clicking on the Chrome menu on the top right side of the Omnibox, hovering over **More Tools** and selecting **Extensions**.
2. Check the box next to **Developer Mode**.
3. Click **Load Unpacked Extension** and select the directory for your "Hello Extensions" extension.

Congratulations! You can now use your popup-based extension by clicking the `hello_extensions.png` icon
or by pressing `Ctrl+Shift+F` on your keyboard.

## What next?

1. Follow the [Getting Started tutorial](https://developer.chrome.com/docs/extensions/mv2/getstarted)
2. Read the [Overview](https://developer.chrome.com/docs/extensions/mv2/overview)
3. Keep up to date by reading the [Chromium blog](https://blog.chromium.org/)
4. Subscribe to the [chromium-extensions group](https://groups.google.com/a/chromium.org/group/chromium-extensions)