Open the current tab in multiple Firefox Containers at once.
Container Sets is a Firefox add-on that allows you to open the same tab simultaneously in multiple Firefox Container tabs using configurable container groups, context menus, or keyboard shortcuts.
This is especially useful if you work with multiple accounts, identities, or environments and want to open the same page in several containers without repetitive manual steps.
- Open the current tab in multiple containers at once
- Create and manage custom container groups
- Keyboard shortcuts for the first three groups
- Drag & drop to reorder groups
(group order = shortcut order) - Avoids duplicate tabs
- Fully local β no tracking, no analytics, no network requests
- Full internationalization (currently EN / DE)
- Open the add-on options
- Create one or more container groups
- Assign Firefox containers to each group
- Open a tab using:
- Right-click on a tab β Open tab in container set
- A keyboard shortcut (configurable in Firefox)
The tab is opened once per container in the selected group.
If a tab already exists in a container, the add-on switches to it instead
of opening a duplicate.
By default, keyboard shortcuts are assigned to the first three container groups.
You can change shortcuts via:
Firefox β Add-ons and Themes β Extensions β βοΈ β Manage Extension Shortcuts
Container Sets is designed with privacy as a core principle:
- β No data collection
- β No analytics
- β No telemetry
- β No remote code execution
- β No network communication
All configuration and settings are stored locally using Firefoxβs
storage.local API.
| Permission | Reason |
|---|---|
tabs |
Open and manage browser tabs |
contextMenus |
Add the tab context menu entry |
contextualIdentities |
Access Firefox Containers |
cookies |
Required by Firefox to open tabs in specific containers |
storage |
Store container groups and settings locally |
- Firefox Desktop
- Manifest Version 3 (MV3)
- Requires a Firefox version supporting container APIs
This project follows Semantic Versioning and Keep a Changelog. Releases are created via Git tags and built automatically using GitHub Actions.
- All changes for the release are listed under
## [Unreleased]inCHANGELOG.md - PowerShell 7+ (
pwsh) is installed - You have push rights to the repository
Update the version number in manifest.json:
{
"version": "1.1.0"
}Move all entries from ## [Unreleased] into a new version section:
pwsh ./scripts/prepare-release.ps1
This will:
- create a new section like ## [1.1.0] β YYYY-MM-DD
- move all unreleased changes into it
- reset ## [Unreleased] for future development
Review CHANGELOG.md after running the script.
Before creating a Git tag, you can run the full validation and build process locally to catch errors early.
pwsh ./scripts/validate-changelog.ps1 -Version 1.1.0
pwsh ./build-release.ps1This will verify that:
- CHANGELOG.md contains a valid entry for the given version
- the changelog follows the expected structure
- the version in manifest.json is usable
- the add-on builds successfully
- the generated .xpi has a valid Firefox-compatible structure
If any of these checks fail, the scripts will exit with an error. Fix the reported issue before proceeding with the release.
Running these checks locally is optional, but strongly recommended to avoid failed CI runs or broken releases.
git add manifest.json CHANGELOG.md
git commit -m "Release 1.1.0"git tag v1.1.0
git push origin v1.1.0After pushing the tag:
- GitHub Actions builds the .xpi file
- The version is validated against manifest.json
- Release notes are generated from CHANGELOG.md
- A GitHub Release is created automatically
- The built .xpi is attached as a release asset
No manual build or upload steps are required.
A Firefox-compatible .xpi file can be built locally using PowerShell
(cross-platform via pwsh):
pwsh ./build-release.ps1The build process:
- uses a strict allowlist
- ensures correct XPI folder structure
- enforces POSIX-style paths (/) inside the archive
- validates required directories (_locales, options, icons)
The resulting .xpi file is written to: ./release
Releases are built automatically using GitHub Actions:
- A Git tag in the form vX.Y.Z triggers the release workflow
- The version in manifest.json must match the tag
- The .xpi is built in CI and attached to the GitHub Release
- Release notes are generated directly from CHANGELOG.md This guarantees reproducible and verifiable release artifacts.
Requirements:
- PowerShell 7+ (pwsh)
- Git
- Firefox (for local testing)
Timo Klerx github: https://github.com/TKlerx/ContainerSets
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
Parts of this project were developed with the assistance of AI-based tools. All code was reviewed, tested, and finalized by the author.