Skip to content

Comparison

Where the session actually lives

Cookies and logins are what a platform reads first, and every tool here treats them differently. This page puts eight usual approaches on one axis: where the session is kept, what survives the window closing, and how many separate sets one machine holds.

What the word separation covers

Storage is not one thing. Cookies, local storage, databases, service workers and the cache share one jar, and a page can write to any of them.

So a tool either gives an account a jar of its own or it does not. Emptying a jar afterwards is a different job from keeping two jars apart.

  • One jar for everything

    Every tab of the browser reads and writes the same set.

  • A jar for the window

    A set that exists while a window is open and goes with it.

  • A jar per account

    A set that stays on disk between launches and belongs to one login.

  • A jar on other hardware

    A set kept apart because the machine under it is a different machine.

Eight ways on one axis

Rows are the approaches and columns are the questions this axis asks. An empty cell means the question does not apply rather than that the answer is bad.

The last row is ours. Every cell in it comes from the launch path in the app, not from a brochure.

Where the session is keptLeft after the window closesSeparate sets on one machineTravels to another machine
Ordinary browser, as it isOne set for the whole browserYesOneBy copying the folder yourself
Incognito windowA set held for the windowOne at a time
Browser profiles or containersA set per profileYesAs many as you createBy copying the folder yourself
Spoofing extensionIn the browser underneathYesOne
VPNIn the browser, untouchedYesOne
Virtual machine per accountInside the guest systemYesOne per machine you runMove the disk image
Separate device per accountOn that deviceYesOne per deviceCarry the device
Browser with the engine patchedA data directory per profileYesOne per profileEncrypted file or a synced folder

What a directory of its own buys

Every profile is started in a data directory named after it, so its cookies and storage never meet another profile's. That directory is the whole of the separation.

The engine creates that directory closed to other people on macOS and Linux, and closes it again on every launch. On Windows permissions live in access lists the app cannot set, so we claim no such lock there.

  • Cookies and logins

    Written into that directory by the browser and read back only from it.

  • Storage and databases

    Local storage, databases and service workers sit beside them.

  • The cache

    Kept there too, and left behind when the session travels.

  • Browser preferences

    The profile keeps its own settings file in that directory too.

What the directory does not cover

Profiles are processes on your own system and they share it with each other and with you. Anything running under your user account can read those directories.

The browser keeps its own key rather than borrowing one from the system, because a profile has to open on the machine you move it to. On macOS and Linux the directory permissions do the real work.

When a session moves house

A session travels either as one encrypted file or through a folder you already sync. Both carry the settings with the browser data, so the account stays signed in on the second machine.

The caches are left out on purpose, and so are the service worker and a few site stores beside them. What keeps the account signed in travels: cookies, saved logins and local storage.

  • Sealed with a password

    A wrong password gives a plain refusal instead of damaged data.

  • The profile identity travels

    The same profile describes the same machine on the second computer.

  • An open profile is skipped

    Copying live databases would deliver a session that does not open.

  • Both sides changed means a question

    Two machines worked since the last sync, so neither copy is overwritten quietly.

What deleting really erases

Deleting a profile moves it to the recycle bin, and its browser data waits there with it. Emptying the bin removes the data directory itself rather than only the row in the list.

What this comparison does not claim

  • It does not claim that separate storage keeps accounts apart on its own. Storage is one channel of three, and the device readings and the exit address are the others.
  • It does not claim that a profile is isolated from you. Profiles run under your own user account, and anything else running there can read their directories.
  • It does not describe any particular product other than ours. The rows are categories of approach, and the cells say what each can do by its nature.
  • It does not claim that deletion is instant. A deleted profile waits in the recycle bin with its data, and only emptying the bin removes the directory.
  • It does not claim that a transfer file carries everything. The caches and the service worker stores are left behind on purpose, and a profile open at that moment is skipped rather than copied.
  • It does not claim that every failure reaches the screen. If the copy in the sync folder refuses to go, nothing in the window says so.

How to check

Each line names the file that decides the behaviour and the stand that fails the build when it stops being true.

Each profile is launched into a data directory of its own, closed to other people on macOS and Linux
apps/desktop/src/lib/forkEngine.js · apps/desktop/test/secrets-on-disk.js
Emptying the recycle bin removes that directory, and a failed erase on this computer is shown
apps/desktop/src/main/main.js · apps/desktop/test/purge-honesty.js
A transfer file carries the session, leaves the caches behind, and refuses a wrong password
apps/desktop/src/lib/bundle.js · apps/desktop/test/profile-bundle.js
A session travels through an ordinary synced folder, and a conflict is handed to the person
apps/desktop/src/lib/sessionSync.js · apps/desktop/test/session-sync-folder.js

Questions

Can one profile read another profile's cookies?
Not through the browser. Each profile is launched into its own data directory and never receives the path of another, so no page in one profile can reach the jar of another.
Does a proxy change anything about storage?
No. An address decides where traffic comes out and has no opinion about what is written to disk, so the two questions are separate pages here.
Is the transfer file readable without its password?
No. It is sealed with a key stretched from the password, and a wrong password ends in a refusal rather than in data that looks almost right.
Does the sync folder hold the password too?
No. The password stays on the machine, beside the app's own data.
Why not put every account in a virtual machine instead?
Because the wall is thicker and the bill is larger. A guest system costs memory, disk and a boot before the first click.

What your own browser hands over

The fingerprint check reads 12 values in your browser and sends nothing anywhere.