• Skip to main content
  • Select language
  • Skip to search
MDN Web Docs
  • Technologies
    • HTML
    • CSS
    • JavaScript
    • Graphics
    • HTTP
    • APIs / DOM
    • WebExtensions
    • MathML
  • References & Guides
    • Learn web development
    • Tutorials
    • References
    • Developer Guides
    • Accessibility
    • Game development
    • ...more docs
Add-ons
  1. MDN
  2. Mozilla
  3. Add-ons
  4. Browser extensions
  5. Alternative distribution options
  6. Sideloading add-ons

Sideloading add-ons

In This Article
  1. Preparing your add-on
  2. Using Install Add-on From File
  3. Installation using the standard extension folders
    1. Rename your XPI file
    2. Add the add-on XPI file to a standard extensions folder.
      1. Windows
      2. OSX
      3. Linux

You may want to send a user your add-on’s XPI file by some means other than a web download, such as an email distribution of a beta version for user testing. In this case, there are two practical options for installing the add-on:

  • Using Install Add-on From File in the Add-on manager.
  • Adding the file to one of the standard extension folders.

No automatic updates will be performed for add-ons installed using these methods. You will have to deliver a new XPI file to your user for each update. However, automatic compatibility checks are still performed.

Preparing your add-on

Regardless of the sideloading method used, you must prepare the add-on as follows:

  1. Ensure the add-on includes an ID, by adding the following to its manifest.json file, replacing your-add-on-name@your-domain.com with a suitable ID for your add-on:
    "applications": {
      "gecko": {
        "id": "your-add-on-name@your-domain.com"
      }
    }
    
    An email address style ID is recommended.
  2. Sign the add-on in addons.mozilla.org (AMO). Depending on how you want to make your add-on available, you can use either the unlisted (if you are distributing the add-on exclusively) or listed options. For more details, see Signing and distributing your add-on.

Using Install Add-on From File

To use Install Add-on From File in Add-on manager, send the user the signed add-on with the following instructions:

  1. Save the add-on file to a suitable location on your computer.
  2. In Firefox, open the Firefox menu Firefox browser menu button and click Add-ons.
  3. From the settings cog, open Install Add-on From File:
    Add-on Manager utilities cog
  4. Browse to and open the file from the location where it was saved.
  5. When prompted click Add:
    Message asking user to confirm the installation of the add-on
  6. The add-on will now appear in the add-on manager’s list of installed add-ons and be ready to use:
    After installation the add-on is listed in the add-on manager

Installation using the standard extension folders

This method of add-on installation involves copying the add-on into one of the standard extension folders on the user's computer. Once copied, the next time Firefox launches the add-on will be installed. By default, the user will be asked to approve the installation, and if the user approves, the add-on will be installed and automatically loaded for subsequent launches. If the user has more than one Firefox profile, the approval and installation will occur on the next launch of each profile. For details on controlling whether the user is prompted to approve the installation, see  Controlling automatic installation.

Rename your XPI file

To use this method, your XPI file must be named using the add-on or application ID, as set in Preparing your add-on. The signed add-on file you downloaded from AMO will be named something like borderify-1.0-an+fx.xpi (see Signing and distributing your add-on for more details), change this to, for example, borderify@example.com.xpi.

If you are developing an add-on for Firefox you can use an extension proxy file to install an add-on without copying the files over to the standard extensions folders.

Add the add-on XPI file to a standard extensions folder.

In what follows {ec8030f7-c20a-464f-9b0e-13a3a9e97384} is the application ID of Firefox.  

The standard installation of Firefox disables the automatic installation of add-ons from these locations (see Controlling automatic installation). As a result, the process for each of the methods described below is as follows:

  • Copy the renamed XPI file to the extensions folder for Windows, OSX, or Linux as appropriate. Note that, depending on the desktop OS and its settings, the user may need administrator permission to complete this action.
  • Close and restart Firefox.
  • Depending on the OS and version of Firefox one of the the following will happen:
    • The install will happen silently, and the user will need to open add-on manager and enable the add-on:
      An add-on is installed but disabled
      To enable the add-on, the user will need to click Enable.
    • An interstitial message will be displayed:
      An interstitial warning about the installation of the add-on
      To install the add-on, the user will need to check Allow this installation and click Continue.
  • The add-on is now installed.

For more details on the interstitial and silent installs, see Controlling automatic installation.

To uninstall the add-on, close Firefox and remove the add-on from the location where it was added.

Windows

To install the add-on for a user of the computer, copy the XPI file to:

C:\Users\<user name>\AppData\Roaming\Mozilla\Extensions{ec8030f7-c20a-464f-9b0e-13a3a9e97384}\

If this folder does not exist, create it. You can also identify the current user’s path with the %appdata% system variable.

Note: To install an add-on for all users of a Windows computer, see Installation using the Windows registry.

OSX

To install an add-on for use by all Firefox profiles and all users, copy the XPI file to the global extension folder located in Library. If this folder doesn't exist, you will need to create it.

/Library/Application Support/Mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/

To install an add-on for a specific user, copy the XPI file to the user's local Library:

~/Library/Application Support/Mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/

Linux

To install an add-on for use by all users, copy the XPI file to:

/usr/lib/Mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/

Or...

/usr/lib64/Mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/

Or...

/usr/share/Mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/

To install an add-on for a specific user, copy the XPI file to:

~/.Mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/

Document Tags and Contributors

Tags: 
  • Guide
  • Installation
  • Sideloading
  • WebExtensions
 Contributors to this page: rebloor
 Last updated by: rebloor, Jul 21, 2017, 2:19:01 PM
See also
  1. Browser extensions
  2. Getting started
    1. What are extensions?
    2. Your first extension
    3. Your second extension
    4. Anatomy of an extension
    5. Example extensions
  3. How to
    1. Intercept HTTP requests
    2. Modify a web page
    3. Add a button to the toolbar
    4. Implement a settings page
  4. User interface
    1. Introduction
    2. Toolbar button
    3. Address bar button
    4. Sidebar
    5. Context menu items
    6. Options page
    7. Bundled web pages
    8. Notifications
    9. Address bar suggestions
    10. Developer tools panels
  5. Concepts
    1. Using the JavaScript APIs
    2. Content scripts
    3. Match patterns
    4. Internationalization
    5. Content Security Policy
    6. Native messaging
  6. Porting
    1. Porting a Google Chrome extension
    2. Porting a legacy Firefox extension
    3. Embedded WebExtensions
    4. Comparison with the Add-on SDK
    5. Comparison with XUL/XPCOM extensions
    6. Chrome incompatibilities
    7. Differences between desktop and Android
  7. Firefox workflow
    1. Temporary Installation in Firefox
    2. Debugging
    3. Developing for Firefox for Android
    4. Getting started with web-ext
    5. web-ext command reference
    6. Extensions and the Add-on ID
    7. Publishing your extension
  8. JavaScript APIs
    1. Browser support for JavaScript APIs
    2. alarms
    3. bookmarks
    4. browserAction
    5. browsingData
    6. commands
    7. contextMenus
    8. contextualIdentities
    9. cookies
    10. devtools.inspectedWindow
    11. devtools.network
    12. devtools.panels
    13. downloads
    14. events
    15. extension
    16. extensionTypes
    17. history
    18. i18n
    19. identity
    20. idle
    21. management
    22. notifications
    23. omnibox
    24. pageAction
    25. permissions
    26. privacy
    27. proxy
    28. runtime
    29. sessions
    30. sidebarAction
    31. storage
    32. tabs
    33. topSites
    34. types
    35. webNavigation
    36. webRequest
    37. windows
  9. Manifest keys
    1. applications
    2. author
    3. background
    4. browser_action
    5. chrome_settings_overrides
    6. chrome_url_overrides
    7. commands
    8. content_scripts
    9. content_security_policy
    10. default_locale
    11. description
    12. developer
    13. devtools_page
    14. homepage_url
    15. icons
    16. incognito
    17. manifest_version
    18. name
    19. omnibox
    20. optional_permissions
    21. options_ui
    22. page_action
    23. permissions
    24. protocol_handlers
    25. short_name
    26. sidebar_action
    27. version
    28. web_accessible_resources
  10. Themes
  11. Publishing add-ons
  12. Guides
    1. Signing and distribution overview
    2. Submit an add-on
    3. Creating an appealing listing
    4. Review policies
    5. Developer agreement
    6. Featured add-ons
    7. Contact addons.mozilla.org
  13. Community and support
  14. Channels
    1. Add-ons blog
    2. Add-on forums
    3. Stack Overflow
    4. Development newsgroup
    5. IRC Channel
  15. Legacy add-ons
  16. Legacy technologies
    1. Add-on SDK
    2. Legacy Firefox for Android
    3. Bootstrapped extensions
    4. Overlay extensions