Take a stroll down memory lane and celebrate #100CoolWebMoments since Chrome’s first release.
Discover Dismiss
Documentation Extensions Best practices
Extensions
Welcome What’s new in Chrome extensions Getting started
Introducing Manifest V3
Welcome to Manifest V3 Extensions platform vision Overview of Manifest V3 Migrating to Manifest V3 Manifest V3 migration checklist Manifest V2 support timeline
Overview
What are extensions? What are themes? Frequently asked questions Extensions quality guidelines FAQ
API Reference Samples
Develop extensions and themes
Extension development overview Manifest file format Architecture overview Declare permissions Design the user interface Debugging extensions Samples
In depth: core concepts
Message passing Content scripts Manage events with service workers Match patterns Using promises Cross-origin isolation
In depth: security
Cross-origin XMLHttpRequest Using eval in Chrome extensions
In depth: more topics
Overriding Chrome settings Extending DevTools OAuth2: Authenticate users with Google Overriding Chrome pages Rich notifications API
Modernize your extensions
Migrating from background pages to service workers
Best practices
Protect user privacy Declare permissions and warn users Stay secure Accessibility (a11y) Localization message formats Give users options
Distributing your extensions
Extension hosting Alternative extension installation methods Installing extensions on Linux Tutorial: Google analytics
Manifest V2
About Manifest V2 Getting started
Overview
What are extensions? What are themes? Frequently asked questions
Develop extensions and themes
Extension development overview Manifest file format Architecture overview Declare permissions Design the user interface Debugging [...]