Skip to content

How to Load an Unpacked Chrome Extension: Step-by-Step Guide

How to Load an Unpacked Chrome Extension

You can load an unpacked Chrome extension in under two minutes once Developer Mode is turned on. This is the same method professional extension developers use every day to test code before it ever touches the Chrome Web Store.

Most guides stop at the five basic steps and leave out one detail that now breaks people’s setups. Chrome changed how Developer Mode behaves in version 134, and if you skip that part, your extension can silently stop working after a restart.

Here’s what this guide actually covers: the step-by-step process to load an unpacked extension, how to reload it after code changes, what changed in the most common manifest errors, and whether leaving Developer Mode on is actually safe.

What Is an Unpacked Chrome Extension?

What Is an Unpacked Chrome Extension?

An unpacked extension is a raw, uncompressed folder of code, a manifest.json file, scripts, and assets, loaded straight into Chrome without going through the Chrome Web Store. Developers use this method to test builds locally before publishing, since it lets you see changes reflected almost instantly instead of waiting on a review process meant for public releases.

It matters more than it used to. Starting with Chrome version 139, extensions still running on Manifest V2 no longer work at all; Chrome loads them in a disabled state. Anyone testing an extension locally needs to confirm it runs on Manifest V3 first, since an unpacked folder built on the older format won’t run no matter how correctly you follow the loading steps below.

This distinction trips people up more than expected. A folder that worked perfectly a year ago can fail silently today simply because Chrome moved on from the manifest version it was written against, not because anything in the loading process changed.

How to Load an Unpacked Chrome Extension in Chrome: Step by Step

  1. Type chrome://extensions into the address bar and press Enter. Or click the puzzle-piece icon in the toolbar and select Manage Extensions from the menu instead.
    Type chrome://extensions into the address bar and press Enter. Or click the puzzle-piece icon in the toolbar and select Manage Extensions from the menu instead.
  2. Look for the toggle in the top-right corner of the page and switch on Developer Mode. This unlocks Load unpacked, Pack extension, and Update.
    Look for the toggle in the top-right corner of the page and switch on Developer Mode. This unlocks Load unpacked, Pack extension, and Update.
  3. Click Load unpacked. A file browser window will open on your screen.
    Click Load unpacked. A file browser window will open on your screen.
  4. Use the file browser to navigate to your extension’s folder.
    Use the file browser to navigate to your extension's folder.
  5. Select the folder that directly contains your manifest.json file, not a parent folder and not a .zip file.
    Select the folder that directly contains your manifest.json file, not a parent folder and not a .zip file.
  6. Click Select Folder to confirm your choice. Chrome will validate the manifest file automatically and flag anything Incorrect.
    Click Select Folder to confirm your choice. Chrome will validate the manifest file automatically and flag anything Incorrect.
  7. Your extension’s name, icon, and version number will now appear on the Extensions page, confirming it loaded successfully.
    Your extension's name, icon, and version number will now appear on the Extensions page, confirming it loaded successfully.
  8. Pin it to the toolbar from the puzzle-piece menu so you can access it quickly while testing changes.
    Pin it to the toolbar from the puzzle-piece menu so you can access it quickly while testing changes.

How to Reload or Update Your Unpacked Extension

  1. Go to chrome://extensions.
    Go to chrome://extensions.
  2. Find your extension’s card in the list.
    Find your extension's card in the list.
  3. Click the reload icon (a circular arrow) on that card.
    Click the reload icon (a circular arrow) on that card.
  4. If you edited a content script, also refresh the tab where it runs. Popups and options pages update automatically without a manifest reload.
    If you edited a content script, also refresh the tab where it runs. Popups and options pages update automatically without a manifest reload.

What Changed in Chrome 134: Developer Mode Must Stay On

  • Before Chrome 134, you could load an unpacked extension once, and it kept running even after switching Developer Mode off.
  • From Chrome 134 onward, unpacked extensions only stay enabled while the Developer Mode toggle is on. Turn it off, and Chrome disables them immediately, with no warning dialog. Google confirmed this in its Chrome Enterprise release notes.
  • This applies to extensions loaded from the chrome://extensions page. It does not apply to extensions launched with the --load-extension command-line flag, which developers commonly use in automated testing.
  • Enterprise admins can control this behavior directly through the ExtensionDeveloperModeSettings policy on managed Chrome browsers.

Practical effect: If you build and test extensions regularly, plan on leaving Developer Mode on permanently rather than toggling it per session.

Common Errors When Loading an Unpacked Extension (and Fixes)

ProblemSolution
“Manifest file is missing or unreadable”Confirm you selected the folder that directly contains manifest.json, not a parent folder or a zipped file.
“This extension may have been corrupted”Re-extract the ZIP file fresh. Delete any hidden system files (like .DS_Store) that sometimes end up in the folder.
Extension icon doesn’t appear in the toolbarClick the puzzle-piece icon and pin the extension manually. Chrome doesn’t auto-pin new extensions.
“Manifest_version key is missing or invalid”Open manifest.json in a code editor and confirm manifest_version, name, and version are all present and the JSON is valid.
Code changes aren’t reflecting in the browserClick the reload icon on the extension’s card. For content scripts, also refresh the host page.
Extension disabled after restarting ChromeCheck that Developer Mode is still on. Since Chrome 134, this resets unpacked extensions automatically if it’s off.

Load Unpacked Button Missing or Greyed Out? It Is Usually a Policy

Sometimes the Developer Mode toggle will not switch on. Or it switches on and the Load unpacked button never appears. On a work laptop, a school Chromebook or a managed profile, this is almost never a Chrome bug. An administrator has turned it off.

Check the policy first: type chrome://policy into the address bar and press Enter. Search that page for ExtensionDeveloperModeSettings.

What you see on chrome://policyWhat it means
ExtensionDeveloperModeSettings set to 1Developer Mode is blocked. You cannot load unpacked extensions on this profile.
DeveloperToolsAvailability set to 2Developer tools are blocked. Since Chrome 128 this only applies when the policy above is unset.
ExtensionInstallBlocklist contains *All extensions are blocked unless an allowlist names them.
No matching policy listedThe block is local. Try a fresh Chrome profile before anything else.

What you can do about it: if a policy is set, no setting inside Chrome will override it. That is the point of a policy. You have three honest options.

  1. Ask your IT team to allow developer mode for your account, or to allowlist the specific extension ID.
  2. Use a personal Chrome profile that your organization does not manage.
  3. Test in a browser your organization does not control, such as Chromium or Firefox Developer Edition.

One thing worth ruling out first: a corporate antivirus or a parental control app can install the same policy without anyone telling you. If chrome://policy lists a source you do not recognize, that is where to look.

How to Pack a Chrome Extension into a .crx File

Loading unpacked is for development. When you want to hand the extension to someone else without publishing it, you pack it into a single .crx file. Chrome has this built in.

  1. Open chrome://extensions and turn on Developer Mode.
  2. Click Pack extension at the top of the page.
  3. For Extension root directory, choose the folder that holds manifest.json.
  4. Leave Private key file empty the first time. Chrome creates one for you.
  5. Click Pack Extension.

Chrome writes two files next to your folder: a .crx file and a .pem private key. Keep the .pem file safe: you need the same key every time you pack an update. Without it, Chrome treats the result as a different extension with a new ID.

Why the .crx may still refuse to install: Chrome blocks .crx files dragged in from outside the Web Store on most desktop builds. A packed extension is useful for internal distribution through an enterprise policy, or for archiving a signed build. It is not a way around the store. To publish properly, use the Chrome Web Store developer console.

If packing fails with a manifest error: it is the same cause as the loading error above. You pointed Chrome at a parent folder or a ZIP file. Select the folder that contains manifest.json directly.

Is It Safe to Load Unpacked Extensions?

It’s safe for you as a developer testing your own code. The risk shows up when you load extensions from someone else without checking the source first.

Unpacked extensions skip Chrome Web Store review entirely, so nothing scans them for malicious code before they run. Only load one if you trust where it came from, and open manifest.json to confirm what permissions it’s asking for.

If you’re moving to a new machine and want your existing extensions to follow you instead, that’s a different process worth reading about separately: importing Chrome extensions from another Google account. Turn Developer Mode off when you’re not actively testing, unless you’re doing this regularly enough that Chrome 134’s requirement makes that impractical.

Conclusion

Loading an unpacked Chrome extension takes five steps: open the Extensions page, turn on Developer Mode, click Load unpacked, select the folder, and confirm it’s running. The part most guides miss is that Chrome 134 now ties unpacked extensions directly to that Developer Mode toggle staying on, so treat it as a permanent setting rather than something to switch per session.

Also worth remembering: since Chrome 139, any extension still on Manifest V2 loads disabled no matter how correctly you follow these steps, so check manifest_version in manifest.json before assuming you made a mistake.

Keep your manifest.json valid, reload after every code change, and check the Errors button first if anything breaks. If you’re also building browser tools like bookmark managers or productivity extensions, our comparison of the best Chrome bookmark managers is worth a look before you start.

Frequently Asked Questions (FAQs)

Q1. What is the difference between a packed and an unpacked Chrome extension?

A packed extension is compressed into a single .crx file, typically distributed through the Chrome Web Store. An unpacked extension stays as an open folder of files, loaded directly through Developer Mode for testing. Most developers work in unpacked form throughout the entire build process, then pack only at the very end.

Q2. Can I load an unpacked extension on a Chromebook?

Yes, but only if Developer Mode is enabled at the ChromeOS level first, not just inside Chrome’s Extensions page. On managed school or work Chromebooks, an administrator may block this entirely. If the toggle is greyed out, that’s usually the sign a device policy is stopping you.

Q3. Does Chrome delete unpacked extensions automatically?

No, but Chrome disables them if you turn off Developer Mode, uninstall them manually, or move and delete the source folder they were loaded from. The extension’s settings and stored data usually stay Unchanged even after it gets disabled this way.

Q4. Can I publish an unpacked extension directly to the Chrome Web Store?

No. You need to package it into a .zip file and submit it through the Chrome Web Store Developer Dashboard, where it goes through Google’s review process first. That review typically checks permissions, code behavior, and listing content before approval.

Q5. Why does my unpacked extension disappear after restarting Chrome?

This usually means Developer Mode got switched off, or the extension’s source folder was moved, renamed, or deleted. Chrome needs that exact folder path to keep loading it. Reloading it manually through Load unpacked fixes this in most cases.

Q6. Can I load unpacked extensions in Microsoft Edge the same way?

Yes. Edge uses the same Chromium extension system. Go to edge://extensions, turn on Developer Mode, and click Load unpacked using the same folder. The manifest.json file works identically across both browsers.

Q7. Do I need to zip my extension folder before loading it?

No. Loading an unpacked extension works directly from the open folder. Zipping is only required when you’re packaging the extension for the Chrome Web Store, not for local testing.

Q8. Is it risky to leave Developer Mode on permanently?

It’s a manageable risk if you only load extensions from trusted sources. The real risk comes from installing random unpacked extensions you find online, not from the toggle itself. Reviewing permissions before loading anything new stays the better habit either way.

Q9. How do I know if my extension uses Manifest V2 or V3?

Open manifest.json and check the manifest_version field near the top of the file. Since Chrome 139, any extension still on V2 loads in a disabled state. Migrating to V3 mainly means updating background scripts to service workers.

Q10. What happens if I rename or move my extension’s folder?

Chrome loses track of it. Unpacked extensions aren’t copied into Chrome’s storage; it just remembers the folder path from when you ran Load unpacked. Rename, move, or delete that folder, and Chrome shows the extension as missing or disabled. Fix it by removing the broken entry at chrome://extensions and running Load unpacked again from the new location. Cloud-synced folders (Dropbox, OneDrive) can trigger this too if the sync client renames files mid-cycle.

Rishi Yadav
Rishi Yadav

Rishi Yadav is a content writer at DevDiggers who covers WooCommerce store management, WordPress performance, and security. He works through each topic in a test environment before writing about it, so his guides focus on the steps and settings that matter rather than the ones that sound good on paper.

Leave a Reply

Your email address will not be published. Required fields are marked *