CHROME EXTENSIONS General knowledge on Chrome extensions. Browsers use the generally same extension structure. --- An extension has a manifest, describing itself in english, its code, and required permissions. The manifest explains what html file to load when clicking the "action" icon button, or clicking options. The html file then loads js. An extension has a special "chrome" object to hook into the extension life cycle. For example: chrome.runtime.onInstalled.addListener and // Which requires the "storage" permission. chrome.storage.sync.set The chrome object is available in an action's javascript too. Essentially any context which is running under the extension. Some other interesting methods: // Get tabs chrome.tabs.query // Execute a script within the context of a page, can use a tab returned from // above. chrome.scripting.executeScript Again to use all of these, you'd need the following permissions in the manifest: "permissions": ["storage", "activeTab", "scripting"] --- The options and action pages are different.