DEV Community

Weather Clock Dash
Weather Clock Dash

Posted on

Firefox Sync Deep Dive: E2E Encryption, Synced Tabs, Recovery Key, Extension Storage API

Firefox Sync is Mozilla's free browser synchronization service. It's end-to-end encrypted — Mozilla cannot read your synced data. But it's more than just "sync bookmarks across devices." Here's a technical look at what it does, how the encryption works, and the less-known features.

What Firefox Sync Syncs

Sync covers:

  • Bookmarks — full folder structure and tags
  • History — up to 60 days of browsing history
  • Passwords — saved logins (encrypted)
  • Open Tabs — see open tabs from other devices without sending them
  • Extensions — install list syncs (not extension data)
  • Preferences — some about:config settings (not all)
  • Address Bar settings — search engine choices

What it doesn't sync:

  • about:config overrides (most of them)
  • Extension data (extension-specific preferences)
  • Cookies (intentionally — security)
  • Firefox Containers configuration

The Encryption Model

Firefox Sync uses end-to-end encryption:

  1. Your Firefox Account (FxA) password is used to derive an encryption key via PBKDF2
  2. Your data is encrypted locally before being uploaded
  3. Mozilla's servers store only ciphertext — they cannot decrypt your data
  4. The key never leaves your device

This is different from Chrome Sync, which sends data to Google's servers where Google can technically access it (though it's also encrypted in transit and at rest).

The trade-off: if you forget your FxA password and don't have a recovery key, your synced data is permanently lost — Mozilla can't recover it.

Setting Up Firefox Sync

Settings → Sync → Sign In (or create account).

Firefox Account (FxA) is required. FxA is free and works with any email address.

Recovery Key: after signing in, Settings → Sync → Firefox Account → More options → Recovery Key. Generate and save this key. If you lose your password, the recovery key lets you decrypt your data. Store it securely (1Password, Bitwarden, or printed paper).

Synced Tabs: The Best Feature

Other devices' open tabs appear in:

  • Address bar: type part of a URL and it suggests matching tabs from other devices
  • "Firefox View" (the tab icon with a Fox in Firefox 106+) → Tabs from Other Devices
  • History sidebar → Synced Tabs section

This is the fastest way to move work between devices without emailing yourself links. "I was reading this on my laptop, pull it up on phone" becomes instant.

Mobile use case: on Android/iOS Firefox, synced tabs show your desktop browser's open tabs. Continue researching on mobile during commute.

About: URLs for Sync Debugging

about:sync-log — shows detailed sync logs. If sync isn't working, this log shows error messages, sync attempts, and conflicts.

about:sync — shows sync status (connected, last sync time, engine states).

about:accounts — manage the Firefox Account sign-in.

Selective Sync

You can enable/disable specific data types. Settings → Sync → Choose what to sync:

  • Deselect History if you don't want browsing history syncing (e.g., work computer browsing to stay separate)
  • Deselect Open Tabs if you want tab privacy per device
  • Keep Bookmarks and Passwords enabled — these are most valuable

Device Management

Settings → Sync → Manage Account → Device Manager (or visit accounts.firefox.com).

Remotely disconnect devices (useful if you no longer use an old device or need to remove a stolen device). This revokes the sync key on that device.

Firefox Sync API for Extensions

Extensions can read/write data via the Sync storage API:

// Store data in sync (syncs across devices)
await browser.storage.sync.set({
  userPreferences: { theme: 'dark', fontSize: 16 }
});

// Read synced data
const { userPreferences } = await browser.storage.sync.get('userPreferences');

// Quota: storage.sync has a per-item limit of 8KB
// and a total limit of ~100KB
Enter fullscreen mode Exit fullscreen mode

This is how extension settings sync between devices. Exceeding the quota silently fails — always check for quota errors in production extensions.

Firefox Relay (Related Service)

Firefox Relay is a separate Mozilla service that creates email aliases (not part of Sync). If you sign up for services using a Firefox Relay address, your real email stays private. Breach notifications show Relay addresses, not your real one.

Free tier: 5 email aliases.
Premium: unlimited aliases, custom domain.

Available as a Firefox extension from AMO.

Troubleshooting Sync

Sync is slow/not working:

  1. Check about:sync-log for errors
  2. Settings → Sync → Sync Now (force manual sync)
  3. Disconnect and reconnect (Settings → Sync → Sign Out → Sign back in)

Duplicate bookmarks after resync:
Occurs when syncing after a long offline period. Firefox tries to merge local and remote states. Clean up duplicates via Bookmarks Library → sort by Name, manually delete duplicates.

Password conflicts:
If the same password was changed on two devices before sync, Firefox keeps both — you see duplicates. Delete the older one.

Containers not syncing:
Containers use extension storage, not Firefox Sync. The Container Tabs extension's data syncs via browser.storage.sync, but Firefox's built-in container system doesn't sync across devices (as of Firefox 130).

Privacy Comparison: Firefox Sync vs. Google Sync

Feature Firefox Sync Google Chrome Sync
Encryption E2E (Mozilla cannot read) Encrypted, but Google can access with passphrase disabled
Account required Firefox Account (Mozilla) Google Account
Password recovery Recovery key required Google account recovery
Password manager Built-in, syncs Google Password Manager
Open source Yes (sync protocol published) Partially

Top comments (0)