Skip to content

Browser Landscape


Maximum cookie and storage lifetimes by browser and mechanism under normal (non-private) browsing:

MechanismSafari 26+Firefox (Standard)Firefox (Strict)BraveChromeEdge (Balanced)
JS document.cookie7 days (24h with link decoration)400 days400 days7 days400 days400 days
HTTP Set-Cookie (same-IP first-party)400 days400 days400 days180 days400 days400 days
HTTP Set-Cookie (CNAME, IP mismatch)7 days400 days400 daysblocked400 days400 days
Third-party cookiesblockedpartitioned (TCP)blockedblockedallowedvaries by tracker classification
localStorage7 days without interactionpersistentpersistentpersistentpersistentpersistent
sessionStoragesessionsessionsessionsessionsessionsession
IndexedDB7 days without interactionpersistentpersistentpersistentpersistentpersistent
Service Workers7 days without interactionpersistentpersistentpersistentpersistentpersistent

Notes on the 400-day cap: this comes from the draft RFC 6265bis specification. Chromium enforces it since Chrome 104 (August 2022). Cookies requesting a longer Max-Age or Expires are silently capped. Safari and Firefox honor the 400-day ceiling in practice.

“Persistent” means the data survives until explicit deletion by the user, programmatic clearing, or browser-enforced maximum lifetime. It does not mean indefinite — all browsers reserve the right to evict storage under pressure.

For persistence strategy recommendations, see 02-identity-management.md.


🍎 Safari ITP (Intelligent Tracking Prevention)

Section titled “🍎 Safari ITP (Intelligent Tracking Prevention)”

Safari’s ITP is not discretely versioned since ITP 2.3. Apple ships continuous improvements as part of WebKit releases. The system operates entirely on-device with no centralized blocklist.

ITP classifies domains as trackers using an on-device machine learning model. The classifier evaluates per-domain (eTLD+1) statistics:

  • Number of unique top-level domains where the domain appears as a subresource
  • Number of unique top-level domains where the domain appears in an iframe
  • Number of unique domains the domain redirects to (bounce tracking detection)
  • Tracker collusion: if domain A redirects to classified domain B, domain A inherits the classification. This propagates recursively through the redirect graph.

No blocklist is used. No data leaves the device. A domain is classified based solely on its behavioral patterns as observed by the individual user’s browser.

How the cookie is setMaximum lifetimeConditions
document.cookie (JavaScript)7 daysAll JavaScript-set first-party cookies
document.cookie with link decoration from classified tracker24 hoursReferrer is a classified tracking domain AND URL contains known click identifiers (gclid, fbclid, msclkid, etc.)
Set-Cookie HTTP header, server IP matches site IP400 daysGenuine first-party: the server setting the cookie resolves to the same IP address as the website
Set-Cookie HTTP header, server IP does not match site IP7 daysIncludes CNAME-to-third-party setups. Safari 16.4+ (March 2023) checks IP address matching via A/AAAA DNS records

ITP deletes all script-writable storage after 7 days of Safari use without the user visiting the site. Affected:

  • localStorage
  • IndexedDB
  • Service Worker registrations and cache
  • Media keys

The 7-day clock resets each time the user visits the site (a full page navigation, not a subresource load). In third-party contexts, localStorage and IndexedDB are partitioned by the top-level domain.

Active since Safari 14 / macOS Big Sur (November 2020). If a first-party subdomain resolves via CNAME to a third-party domain with a different IP address, Safari treats cookies from that subdomain as third-party and caps them at 7 days. Since Safari 16.4 (March 2023), the check extends to A/AAAA DNS records — any DNS configuration where the server IP does not match the website IP triggers the 7-day cap.

  • Advanced Fingerprinting Protection (AFP): on by default for all users. Restricts known fingerprinting scripts from accessing Canvas (2D), WebGL, and Web Audio APIs. Affects high-entropy screen measurements.
  • Advanced Tracking and Fingerprinting Protection (ATFP): optional toggle, on by default in Private Browsing only. Adds link decoration stripping and stricter tracking domain blocking.
  • Link Tracking Protection (LTP): strips tracking parameters (gclid, fbclid, etc.) in Private Browsing, Mail, and Messages. NOT active in standard browsing as of Safari 26.

🦊 Firefox Enhanced Tracking Protection (ETP)

Section titled “🦊 Firefox Enhanced Tracking Protection (ETP)”

Firefox ships three ETP modes. The default is Standard.

What is blockedDetails
Social media trackersBlocked (Facebook, Twitter, LinkedIn tracking scripts)
Cross-site tracking cookiesPartitioned via Total Cookie Protection (TCP) — each top-level site gets its own cookie jar
CryptominersBlocked
Known fingerprintersBlocked
Tracking contentBlocked in Private Browsing only

Everything in Standard, plus:

What is blockedDetails
Tracking contentBlocked in all windows (not just Private Browsing)
All cross-site cookiesFully blocked (not just partitioned)
Bounce trackingStorage purged for classified bounce trackers (Bounce Tracking Protection, Firefox 133+, November 2024)

Firefox uses the Disconnect.me tracker list:

  • Level 1 (Standard mode): Advertising, Analytics, Social categories. Excludes “Content” category to minimize site breakage.
  • Level 2 (Strict mode): Includes the “Content” category.

An entity list exempts same-company domains. If analytics.example.com is on the blocklist but owned by example.com, it is not blocked on example.com.

Default for all Firefox users since June 2022. Every website gets its own cookie jar. A third-party cookie set on site A cannot be read when that same third party appears on site B. Third-party cookies still function within a single site’s context, but they are partitioned by top-level site. Exceptions exist for cross-site login flows (heuristic detection of SSO patterns).

TCP does not restrict first-party cookie lifetimes. First-party cookies persist up to the browser-enforced maximum.

Enabled in Strict mode. Detects “extended navigations” — chains of short-lived redirects where the intermediate site accesses cookies or storage. Classified bounce tracker sites have cookies, site data, and cache purged periodically. Sites the user has directly interacted with in the last 45 days are exempt.

Firefox applies no time-based restrictions to first-party cookies, localStorage, IndexedDB, or Service Workers in either Standard or Strict mode. First-party storage is persistent until cleared by the user or by code.


Brave Shields are on by default for all users. The default level is Standard.

MechanismLifetime
JS document.cookie7 days maximum
HTTP Set-Cookie (first-party)180 days (6 months) maximum
Third-party cookiesBlocked by default
Third-party storage in framesEphemeral: partitioned by top-level origin, cleared when last tab with that origin closes

Brave enforces these limits regardless of tracker classification. All JavaScript-set cookies are capped at 7 days. All HTTP-set first-party cookies are capped at 180 days. These are hard browser-level limits, not configurable by the user.

Third-party storage in iframes is partitioned by top-level origin. When the last tab for that top-level origin closes, the partitioned storage is destroyed. On browser quit, all partitioned storage is cleared regardless of the “continue where you left off” setting.

Brave uses session-level randomization (“farbling”) on fingerprinting APIs:

  • Canvas: randomized pixel data
  • WebGL: randomized renderer strings
  • AudioContext: noise injection
  • User-Agent: randomized
  • Screen dimensions, language, installed plugins: farbled

Each session produces a unique fingerprint per site. Cross-site fingerprint correlation is unreliable.

Brave sunset its “Strict” fingerprinting mode in favor of the farbling approach, which provides strong protection with less site breakage.

Brave maintains its own ad and tracker blocking lists in addition to EasyList/EasyPrivacy. A Rust-based adblock engine (rewritten January 2026) processes these lists. Brave also introduced Cookiecrumbler, an LLM-powered system that auto-dismisses cookie consent banners.


Third-party cookies remain fully functional in Chrome as of 2026. Google reversed its deprecation plan:

  • Original deprecation target: 2022, then 2023, then 2024
  • July 2024: Google announced it would not deprecate third-party cookies
  • April 2025: Google confirmed no cookie opt-in prompt would be rolled out

Third-party cookies are enabled by default in Chrome.

Retired October 2025:

ComponentStatus
Topics APIRetired
Protected Audience (PAAPI/FLEDGE)Retired
Attribution Reporting APIRetired
CHIPS (cookie partitioning)Retained
FedCM (Federated Credential Management)Retained
Private State TokensRetained

Chrome applies minimal first-party storage restrictions:

  • Cookies: 400-day maximum (enforced since Chrome 104, August 2022)
  • localStorage: no time-based limit
  • IndexedDB: no time-based limit
  • Service Workers: no time-based limit
  • No machine-learning tracker classification for first-party resources

Chrome is the most permissive major browser for tracking and storage. No built-in ad blocker. No fingerprinting protection. No first-party storage restrictions beyond the 400-day cookie cap.


Edge uses a three-tier tracking prevention system with the Disconnect.me tracker list:

LevelWhat it blocksDefault
BasicKnown harmful trackers (cryptominers, fingerprinters)No
BalancedTrackers from unvisited sites + known harmful trackersYes
StrictAll trackers from all Disconnect.me categories including content trackersNo

Edge inherits Chromium’s cookie handling:

  • 400-day cookie cap (same as Chrome)
  • No first-party storage restrictions beyond tracker classification
  • Third-party cookies: allowed by default, but storage access blocked for domains classified as trackers in Balanced mode

For classified tracker domains, Edge blocks storage access entirely in Balanced and Strict modes. For all other domains, behavior matches Chrome.


All browsers: all storage is ephemeral. No persistence mechanism survives a private session close.

BrowserCookieslocalStoragesessionStorageThird-party cookies
Safari (Private)cleared on window closecleared on window closecleared on tab closeblocked
Firefox (Private)cleared on window closecleared on window closecleared on tab closeblocked (TCP partitioned)
Chrome (Incognito)cleared on window closecleared on window closecleared on tab closeblocked by default
Edge (InPrivate)cleared on window closein-memory only, not shared between tabscleared on tab closeblocked
Brave (Private)cleared on window closecleared on window closecleared on tab closeblocked

Edge InPrivate has a specific behavior: localStorage uses an in-memory store that behaves like sessionStorage and is not shared between tabs within the same InPrivate window.

Normal browsing storage is not accessible from private mode. The profiles are fully isolated. A user who opens a private window has no access to cookies or localStorage from their regular browsing session, and vice versa.

Session-only identity is the maximum capability in private/incognito mode. No cross-session persistence exists.


🛡️ Ad Blockers and Privacy Extensions

Section titled “🛡️ Ad Blockers and Privacy Extensions”

Browser restrictions are only part of the constraint landscape. Client-installed extensions add a second layer.

ExtensionMechanismImpact
uBlock OriginFilter list matching (EasyList, EasyPrivacy, custom lists)Blocks script loads, network requests, and DOM elements matching known tracking patterns
AdBlock PlusFilter list matching (EasyList, Acceptable Ads list)Blocks ad and tracker scripts; allows “acceptable ads” by default
Privacy BadgerHeuristic learning (no blocklist)Learns which domains track across sites and progressively blocks them
GhosteryCombined blocklist + anti-trackingBlocks trackers, provides tracker transparency reports

The two most relevant filter lists:

  • EasyList: blocks advertising-related resources (ad scripts, ad server domains, ad-related XHR requests)
  • EasyPrivacy: blocks analytics and tracking resources (analytics endpoints, tracking pixels, fingerprinting scripts)

These lists match URL patterns. Any request URL matching a filter rule is blocked before it reaches the network. Common blocked domains include google-analytics.com, googletagmanager.com, connect.facebook.net, analytics.tiktok.com, snap.licdn.com.

Why Native Integration Avoids Extension Blocking

Section titled “Why Native Integration Avoids Extension Blocking”

External analytics scripts are on filter lists. Your own domain’s application code is not.

  • https://www.googletagmanager.com/gtag/js?id=GT-XXXXX — on EasyList, blocked
  • https://analytics.google.com/g/collect — on EasyPrivacy, blocked
  • https://connect.facebook.net/en_US/fbevents.js — on EasyList, blocked
  • https://yourdomain.com/api/collect — not on any list, loads normally

A first-party endpoint on your own domain, receiving data from your own application code, is indistinguishable from any other API call your application makes. It is not on any filter list. It will not be blocked by any ad blocker operating on standard filter lists.

Aggressive blockers and privacy extensions may target cookies by name. Cookie names containing patterns like _ga, _gid, _fbp, _fbc, _gcl, track, analytics, or pixel may be deleted or blocked by extensions. Use neutral, application-specific cookie names for UIAF identity and attribution storage.

Extension impact varies by browser:

  • Chrome: Manifest V3 (January 2025) limits declarativeNetRequest to 330,000 static rules and 30,000 dynamic rules. uBlock Origin Lite (MV3-compatible) has reduced filtering capability compared to uBlock Origin (MV2).
  • Firefox: continues to support Manifest V2. uBlock Origin retains full filtering capability.
  • Safari: uses its own extension API (Web Extensions). Limited ad blocker functionality compared to Firefox.
  • Brave: has built-in ad blocking; extensions add additional layers.


BrowserVersionDateRelevant change
Safari 16.416.4March 2023IP address matching for CNAME cookies
Safari 2626September 2025Advanced Fingerprinting Protection on by default
Chrome 104104August 2022400-day cookie cap enforced
Chrome (Privacy Sandbox)October 2025Topics, PAAPI, Attribution Reporting retired
Firefox 8686February 2021Total Cookie Protection introduced
Firefox (TCP default)June 2022TCP enabled for all users by default
Firefox 133133November 2024Bounce Tracking Protection in Strict mode
Brave (adblock rewrite)January 2026Rust-based adblock engine rewrite
Edge (Balanced default)LaunchBalanced tracking prevention on by default
Chrome MV3January 2025Manifest V3 enforced, MV2 extensions disabled

BrowserGlobal DesktopGlobal MobileNotable Segments
Chrome~65%~63%Dominant across all segments
Safari~15% global~27% mobile~31% US. All iOS users (Safari is the only full browser engine on iOS outside EU DMA markets)
Edge~5%<1%Enterprise-heavy
Firefox~3%<1%Privacy-conscious users, developers
Brave~1%<1%Over-indexes in privacy-conscious, tech-savvy demographics

Safari’s constraints disproportionately impact analytics: all iPhone and iPad users outside the EU use Safari’s WebKit engine exclusively, regardless of which browser app they install.