Easily convert an entire directory, extension zip file, or manifest.json file.


![Solomon Kinard](https://web.dev/images/authors/solomonkinard.jpg) Solomon Kinard [X](https://twitter.com/solomonkinard) [GitHub](https://github.com/solomonkinard) [Homepage](https://kinard.com) ![Simeon Vincent](https://web.dev/images/authors/dotproto.jpg) Simeon Vincent [X](https://twitter.com/dotproto) [GitHub](https://github.com/dotproto)

<br />

Hi everyone. My name is Solomon and I'm a software engineer on Chrome's extensions team.

As we continue to build out the latest version of [Chrome's extensions platform](https://developer.chrome.com/docs/extensions/mv3/intro/mv3-overview/), I found
myself needing to convert Manifest V2 extensions to Manifest V3 for testing purposes. To make this
process a little easier I created a tool called [Extension Manifest Converter](https://github.com/GoogleChromeLabs/extension-manifest-converter) (EMC).

EMC is a Python 3 command line tool that automates several parts of converting an extension between
manifest formats. Users can quickly convert an extension directory, zip file, or manifest.json file
with a single command.

```bash
python3 emc.py <extension_path>
```

This tool focuses on automating the mechanical parts of converting an extension. For example, it
will replace `chrome.browserAction` with `chrome.action` in JavaScript, but it cannot handle
abstract tasks like updating background logic to fully adopt service workers. See the project's
[README](https://github.com/GoogleChromeLabs/extension-manifest-converter#readme) for more details.

We've found this tool useful on our team and wanted to open source it in the hope that you might
too. Keep in mind, though, that as a personal side project we cannot offer support or maintain it indefinitely.

If you encounter any issues with the project, please [open an issue](https://github.com/GoogleChromeLabs/extension-manifest-converter/issues) on the [project's
repo](https://github.com/GoogleChromeLabs/extension-manifest-converter).