A Firefox extension that lets you organize your browsing into isolated workspaces — each workspace runs in its own dedicated window with a dedicated Firefox Container, keeping cookies, sessions, and identities completely separate.
- One workspace = one window = one container — full isolation between projects, clients, or identities
- Persistent tabs — tabs are saved automatically and restored when you reopen a workspace
- Tab groups preserved — tab groups (including names and colors) are saved and restored with the workspace
- Hibernation — close a workspace window and reopen it later with all tabs intact
- Conflict-free sync across devices — each device maintains its own workspace snapshots via Firefox Sync; devices never overwrite each other's data
- Cross-device pull — see workspaces from your other devices and selectively import tabs via the Backup & Restore page
- Workspace badge — the toolbar icon shows a 3-letter abbreviation of the active workspace so you always know where you are
- New tabs stay in container — any tab opened inside a workspace window is automatically assigned to the correct container
- Default (no container) workspace — a built-in workspace that opens a regular Firefox window without any container, ideal for general browsing or accessing Firefox settings
- Per-workspace storage indicator — shows how much of the 8 KB sync limit each workspace uses
Firefox has containers and tab groups, but no concept of a "workspace" that ties them together with a dedicated window. This extension bridges that gap — ideal for anyone working across multiple clients, projects, or online identities simultaneously.
- Open Firefox and go to
about:debugging - Click This Firefox in the left sidebar
- Click Load Temporary Add-on...
- Select
manifest.jsonfrom the extension folder
Note: Temporary add-ons are removed on Firefox restart and do not support Firefox Sync.
Install directly from addons.mozilla.org — Firefox will handle updates automatically.
- Click the extension icon in the toolbar
- Click + in the top right corner
- Enter a name, choose a color and icon
- Click Create
Workspace names must be unique — they are also used to identify containers across devices.
Click the workspace card or the ▶ button — a new dedicated Firefox window opens with all saved tabs.
Click the 🌙 button on an active workspace card — all tabs are saved and the window closes.
Click the 🗑 button — the window closes, the Firefox container is removed (including all its cookies and session data), and the workspace is deleted from sync.
Click the ✎ button — the workspace and its container are renamed simultaneously.
Always visible at the top of the list. Opens a regular Firefox window without any container — tabs are not assigned to any container. Cannot be renamed or deleted.
Click the Backup & Restore button in the popup footer to open the dedicated page.
Set a human-readable name for the current device (e.g. "Work Laptop"). The name is visible to your other devices.
Downloads all your workspaces as a JSON backup file.
Select a previously exported JSON file to review its contents and selectively restore workspaces and tabs.
If you use Firefox Sync across multiple devices, each device's workspaces appear here automatically. Click Pull… next to a device to open the review panel and selectively import workspaces and tabs from that device into your current one.
The list updates live as changes arrive from your other devices — no restart required.
Each device stores its own workspace snapshots independently under a unique device ID. Devices never overwrite each other's data, even when using the same Firefox Sync account.
What syncs: workspace name, color, saved tab URLs, tab groups, device name
What doesn't sync: which window is currently open on any given device; container icon (always set to the default on each device)
Note on color: when pulling a workspace from another device that doesn't yet exist locally, the remote workspace's color is applied to the newly created local workspace. If the workspace already exists locally, its color and icon are left unchanged.
On a new device: when you open a workspace for the first time, the extension looks for an existing Firefox Container with the same name. If none is found, a new container is created automatically.
Sync requires a signed extension and a Firefox account with Sync enabled.
| Permission | Reason |
|---|---|
tabs |
Read and manage tabs within workspace windows |
storage |
Save workspace data locally and sync it across devices |
contextualIdentities |
Create and manage Firefox Containers for each workspace |
cookies |
Required by Firefox when working with containers |
tabGroups |
Save and restore tab groups within workspaces |
Windowed Container Workspaces stores and processes the following data:
Stored locally on your device (storage.local):
- A randomly generated device ID
- Your device name (auto-generated or manually set by you)
- Mapping of open workspace windows
Stored locally and optionally synced via Firefox Sync (storage.sync):
- Workspace names, colors, and icons
- Tab group names, colors, and collapsed state
- Tab URLs and page titles
- Tab pinned state
- Device ID and device name
This data is stored by Firefox as extension data.
If Firefox Sync for add-ons is enabled by the user, Firefox may synchronize this extension data between the user's own Firefox profiles/devices using Mozilla Firefox Sync.
Firefox Sync feature is delivered by Mozilla Firefox, not by the Windowed Container Workspaces extension.
The developer does not receive, access, store, process, sell, or share this data.
The extension does not use analytics, telemetry, advertising, tracking scripts, or any developer-operated backend server.
The cookies permission is used only for Firefox container-related functionality. The extension does not read, store, export, or transmit cookie values.
The Export/Import backup feature saves data only to your local filesystem. No network requests are made.
Sync requires a Firefox account with Sync enabled.
Issues and pull requests are welcome. Please open an issue before submitting large changes.
Developed in collaboration with Claude (Anthropic's AI assistant), which helped with architecture, implementation, debugging, and documentation.
MIT