How Firefox Send Tab Uses Encrypted Push Notifications

This article provides a complete overview of the technical mechanics behind the Firefox Web Browser's "Send Tab to Device" feature. It explains how Firefox uses a Mozilla Account to establish cryptographic keys between your devices, encrypts the webpage URL locally to ensure privacy, and utilizes push notification services to instantly deliver and open the tab on a target device without exposing your browsing data to third-party servers.

1. Device Registration and Key Generation

For the Send Tab feature to work, both the sending and receiving instances of Firefox must be signed into the same Mozilla Account. Upon signing in, each Firefox instance registers itself with a push notification service and generates a unique cryptographic key pair consisting of a public key and a private key.

The private key remains strictly on the device that generated it. The public key, along with a unique "push endpoint" (a specific digital address used to route messages to that device), is uploaded to the Mozilla Account server. This creates a directory of your devices and their corresponding public locks.

2. Local End-to-End Encryption

When you right-click a tab and select a target device to send it to, the sending Firefox instance looks up the target device's public key and push endpoint from your Mozilla Account directory.

Before any data leaves your computer or phone, Firefox packages the webpage's URL and title into a tiny data payload. It then encrypts this payload locally using the receiving device's public key. Because this process uses end-to-end encryption, only the specific receiving device possesses the private key required to unlock and read the data.

3. Routing via Push Notification Servers

In the past, browsers relied on periodic syncing, meaning a device had to check a server every few minutes to see if new data was waiting. To make the Send Tab feature instant, Firefox uses the WebPush protocol.

Once the URL is encrypted, the sending browser transmits the scrambled data to the Mozilla Account server, which immediately forwards it to the push endpoint associated with the receiving device. Depending on the operating system of the receiving device, this is handled by different services:

  • Desktop (Windows, macOS, Linux): Uses Mozilla's proprietary "Autopush" server.
  • Android: Uses Google's Firebase Cloud Messaging (FCM).
  • iOS: Uses the Apple Push Notification service (APNs).

These push services maintain a persistent, low-power connection with the target device. Because the payload was encrypted prior to transmission, neither Mozilla, Google, nor Apple can see the URL being sent. They only see that a packet of encrypted data needs to be delivered to a specific device immediately.

4. Decryption and Opening the Tab

The push service instantly wakes up the receiving Firefox instance (or its background service on mobile devices) and delivers the encrypted payload.

Upon receiving the push notification, the target Firefox browser uses its locally stored private key to decrypt the payload in the device's memory. Once decrypted, Firefox reads the URL and executes the final step:

  • If Firefox is actively open on a desktop: The browser immediately creates a new tab and loads the webpage.
  • If Firefox is closed or on a mobile device: The browser generates a system-level notification containing the page title. Tapping this notification launches Firefox and immediately opens the sent URL.