Publish a Chrome Extension

Chrome Web Store submission walkthrough

How to Publish a Chrome Extension

Prepare your Manifest V3 ZIP, create the required listing assets, complete Google’s privacy and permission disclosures, and submit your extension for Chrome Web Store review.

!
Generating an extension and publishing it are separate processes. Extension Creator gives you editable files and technical validation. Google controls developer registration, policy review, approval, rejection, removal, and future Web Store requirements.
Before the dashboard

Prepare these items first

Do not begin the submission with an untested ZIP and assume the dashboard will fix it. Have the extension, listing copy, images, support information, and privacy answers ready.

Tested extension ZIP

The ZIP must contain manifest.json at its root and should be the exact version you tested with Load unpacked.

Developer account

Use a Google account you monitor. Google requires Chrome Web Store developer registration and a one-time registration fee.

Clear single purpose

Be able to explain the extension’s one narrow, understandable purpose in a sentence.

Store listing copy

Prepare an accurate name, short description, detailed description, category, language, homepage, and support URL.

Listing images

Prepare the required store icon, promotional tile, and at least one real screenshot at Google’s exact dimensions.

Privacy information

Know what data the extension collects, why each permission is needed, and whether a privacy-policy URL is required.

Step 1

Test the final production version

Install the extracted project with Chrome’s Load unpacked feature and test the same files you plan to upload.

Test every featureUse every field, button, menu, setting, export, and page action.
Test valid and invalid inputConfirm the extension handles missing information and errors clearly.
Check target websitesVerify page features on every supported website or URL pattern.
Review Chrome errorsInspect the popup and service worker when applicable.
Remove unused permissionsOnly request access that is necessary for the extension’s purpose.
Retest the packaged versionMake sure the newest folder and ZIP did not introduce a regression.

Follow the complete Load unpacked testing guide.

Step 2

Review the manifest and ZIP structure

Some manifest information cannot be edited inside the Web Store dashboard. Correct it in the project, increase the version when required, rebuild the ZIP, and upload again.

extension-upload.zip
├── manifest.json ← must be at the ZIP root
├── popup.html
├── popup.css
├── popup.js
├── options.html
└── icons/
└── icon128.png
Review these manifest fields: extension name, version, description, icons, permissions, host permissions, action or popup settings, background service worker, and any content scripts. Google’s documentation limits the manifest description to 132 characters, and every uploaded update needs a higher version number than the previous one.
Step 3

Create your Chrome Web Store developer account

Open the Chrome Web Store Developer Dashboard, sign in, accept the agreement and policies, and pay the one-time registration fee displayed by Google.

Choose the account carefully

  • Use an email you check regularly.
  • Use an account the business will control long term.
  • Protect it with recovery information and two-step verification.
  • Keep the payment and publisher records.

Do not treat it as disposable

  • Google says the developer-account email cannot simply be changed later.
  • Important rejection, takedown, and policy messages go to this account.
  • Transferring items later creates extra work.

The registration fee is separate from anything paid to Extension Creator. Confirm the current amount and payment options in Google’s dashboard before registering.

Steps 4–8

Complete the Developer Dashboard submission

Upload the ZIP

Open the Chrome Web Store Developer Dashboard, select Add new item, choose the ZIP, and upload it. Google currently supports extension packages up to 2 GB, although a normal extension should be much smaller.

Complete the Store Listing tab

Write a concise opening sentence that explains the extension immediately. Add the detailed description, category, language, screenshots, store icon, promotional tile, and any appropriate homepage or support links. Describe only features that actually exist and avoid keyword spam.

NameDescriptionCategoryLanguageImagesSupport URL

Complete the Privacy tab

State the extension’s single purpose. Justify every requested permission, declare whether it uses remote code, disclose any user-data collection, complete the limited-use certifications, and supply a privacy-policy URL when required. Your answers must match the extension’s actual behavior.

Choose distribution

Select the countries and audience that should have access. Public items can appear in search, Unlisted items are available through their direct link, and restricted options may be available for organizations or trusted testers. Unlisted does not mean unreviewed.

Add test instructions when needed

If reviewers cannot understand or reach a feature without special steps, an account, test data, or a particular website, provide clear instructions and valid test credentials in the designated area. Do not put private credentials in the public description.

Resolve every dashboard warning

Read the actual message instead of clicking through it. A warning may point to missing assets, incomplete disclosures, excessive permissions, inconsistent listing claims, or a package problem.

Submit for review

Choose whether the approved item should publish automatically or use deferred publishing. With deferred publishing, Google currently gives you up to 30 days after approval to publish before the staged submission returns to draft.

Monitor the review

Review time varies with the extension and requested access. Watch the dashboard and developer email. If Google rejects the item, read the cited policy, correct the code or listing, increase the version when uploading a new package, and resubmit.

Exact image requirements

Prepare the Chrome Web Store graphics

Extension icons inside the project and promotional graphics for the store serve different purposes. Do not stretch one tiny icon into every listing image.

Asset Size Status What it should show
Store extension icon 128 × 128 px Required PNG icon that stays readable on light and dark backgrounds. Google recommends visual padding around square artwork.
Screenshot 1280 × 800 or 640 × 400 px At least 1 The real extension experience and its main feature. Google allows up to five.
Small promotional tile 440 × 280 px Required A clean brand-focused visual that remains clear when reduced.
Marquee promotional tile 1400 × 560 px Optional A wider promotional image that may support additional store promotion.
Promotional video YouTube URL Optional A truthful demonstration of the extension’s actual features.
Privacy and permissions

Give reviewers specific answers

“The extension needs this permission to work” is not a useful justification. Explain the exact user-facing feature, when access occurs, and why narrower access would not support it.

Weak explanation

“We need storage and website access for functionality.”

Specific explanation

“Storage saves the user’s selected formatting preferences locally so they remain available when the popup is reopened. The extension does not transmit those settings.”

Manifest V3 restriction: extensions cannot download and execute remotely hosted code. Calling an API for data is different from downloading executable JavaScript, but the extension must still comply with Google’s policies and disclose relevant data practices.
Final review

Chrome extension publishing checklist

Production ZIP testedThe exact release works through Load unpacked without visible errors.
Manifest reviewedName, description, version, icons, permissions, and paths are correct.
Single purpose is clearThe code, permissions, title, and listing all describe the same focused tool.
Required images are exactThe icon, screenshot, and small promotional tile use accepted dimensions and formats.
Privacy disclosures matchData collection, use, storage, sharing, and permissions are accurately described.
Support is reachableThe homepage, support page, and privacy-policy URL work publicly.
Reviewer access is possibleSpecial instructions and test credentials are supplied privately when needed.
Publisher email is monitoredYou can respond to approval, rejection, warning, and takedown messages.

After submission

Rejections, approval, and updates

If it is rejected

Use the policy and reason in Google’s notice. Fix the specific issue, verify the rest of the package again, and resubmit. Do not make random changes.

If it is approved

Confirm the public listing, installation, screenshots, support link, privacy page, and core behavior. Monitor user feedback and errors.

When you release an update

Increase the manifest version, test the updated project, upload the new ZIP to the existing item, update disclosures or listing copy if behavior changed, and submi