Safari Fingerprinting on iPhone and Mac

What Safari exposes to fingerprinting on iPhone and Mac, what Advanced Fingerprinting Protection in iOS 26 changes, and which signals it leaves untouched.

Safari Fingerprinting on iPhone and Mac

Safari's fingerprint depends on which Apple device runs it. On an iPhone, every browser app uses WebKit, so Chrome, Firefox and Safari share one engine and one set of protections. On a Mac, that rule does not apply: Chrome and Firefox bring their own Blink and Gecko engines, and Safari's protections cover only Safari. The font list differs too, since a Mac can install fonts system-wide through Font Book while an iPhone keeps a fixed factory set.

Two protections stack on Apple's engine. WebKit has returned an empty WebGL renderer string since Safari 12, and Advanced Fingerprinting Protection, on by default since iOS 26, modifies canvas, WebGL, audio and font signals. Neither touches hardware or locale values such as CPU core count, screen size, time zone or language, so those rows in the inspector still report real values. The sections below cover the iPhone, the Mac and the iOS 26 change in turn, with what each protection hides and what it leaves visible.

What Safari's protections leave visible

  • real core count
  • unmodified
  • unmodified
  • empty since Safari 12

Run the inspector in Safari and in a second browser on the same device to see which rows the protections change.

Opens the Browser Fingerprint Inspector with this page's reference values shown at the top of the tool.

Open in the tool →

Browser Fingerprinting on iPhone (Safari)

This iPhone runs on WebKit, the engine every browser app on iOS is required to use, so the fingerprinting surface the inspector above measures here is really Safari's surface no matter which app icon you tapped to get here. Two separate defenses stack on top of that shared engine: the WebGL renderer string has returned an empty value since Safari 12, years before any dedicated anti-fingerprinting feature existed, and Apple's Advanced Fingerprinting Protection (AFP), on by default since iOS 26, separately modifies canvas rendering, WebGL output, audio processing, and font access.1 Neither protection touches hardware or locale signals, so a handful of rows in the scan above still report values as real as they would on a browser with no defenses at all.

Run this check yourself in the Browser Fingerprint Inspector.

Open in the tool →

Specifications

Rendering engineWebKit (required for every browser app on iOS)
WebGL renderer stringEmpty; UNMASKED_RENDERER_WEBGL blocked since Safari 12
Advanced Fingerprinting ProtectionOn by default since iOS 26; modifies canvas, WebGL, audio, and font signals
Left unmodified by AFPhardwareConcurrency, screen dimensions, devicePixelRatio, timezone, language
Layout viewportFixed width; devicePixelRatio unaffected by pinch-to-zoom

Two different protections are stacked on this iPhone, and they cover different signals

WebKit has returned an empty string from the WebGL renderer query since Safari 12,2 a restriction that predates Advanced Fingerprinting Protection by years and has nothing to do with the iOS 26 rollout. AFP itself is newer and narrower in a different way: it modifies canvas rendering output, WebGL rendering, OfflineAudioContext processing, and font access, reducing the uniqueness of each without hiding that a scan ran at all. Reading the rows on this page as one undifferentiated "protected" block misses that two unrelated mechanisms, one old and one new, are doing the actual work.

The WebGL renderer row is empty here for a reason that predates AFP

Calling getExtension('WEBGL_debug_renderer_info') and reading UNMASKED_RENDERER_WEBGL on this iPhone returns an empty string rather than a GPU model name, a restriction Safari has applied since version 12.2 That stands in contrast to Android Chrome, where the same query on a Galaxy phone returns a full string like "Adreno (TM) 750" identifying the exact chipset. The row will read blank here whether or not AFP is active, because the WebGL renderer restriction and AFP are two separate protections that happen to affect the same API surface for different reasons.

Because the renderer string has been unavailable for so long, most fingerprinting scripts targeting iOS Safari never relied on it in the first place; the practical effect of the block is closer to background noise than a recent policy shift. It is worth knowing regardless, since a reader comparing this scan against a friend's Android phone will see a populated WebGL row on the Android side and a blank one here for a reason that has nothing to do with either device's actual privacy settings.

What AFP changes here versus what stays real

On this iPhone, AFP means the canvas hash, the WebGL rendering readout, and the audio fingerprint rows will differ from a capture taken before iOS 26, and the font-detection row is limited to a common subset rather than every font Safari can technically render.1 navigator.hardwareConcurrency, screen.width and screen.height, window.devicePixelRatio, and the timezone and language rows are not part of what AFP modifies, so those continue to report this iPhone's real values every time the scan runs.

That split matters for reading the entropy score above. A drop in the CANVAS, WEBGL, and AUDIO groups after an iOS update reflects AFP doing its job; a row in IDENTITY or the hardware group staying exactly the same across scans is not a sign the protection missed something, it is a signal AFP was never designed to touch in the first place.

Why every app on this iPhone runs the identical protections

Apple's App Store Review Guidelines state that apps which browse the web on iOS must use the WebKit rendering engine and WebKit JavaScript, a requirement numbered 2.5.6 that has applied since the App Store launched.3 In practice that means Chrome, Firefox, Edge, and every other browser you can install on this iPhone wraps WebKit in its own interface rather than shipping Blink or Gecko the way those same browsers do on a laptop. Switching apps here changes the toolbar, the extensions available, and which account syncs your history, but it does not change which engine renders the page or which fingerprinting defenses apply underneath it.

The layout viewport stays fixed even when you pinch to zoom

iOS separates the layout viewport, the width Safari uses to lay a page out, from the visual viewport, which is what you actually see after zooming. Apple's own viewport documentation describes pinch-to-zoom as changing the visual viewport's scale while leaving the layout viewport's width unchanged, and window.devicePixelRatio stays fixed at the same value throughout that gesture regardless of how far in you have zoomed.45 A script reading either property back gets the same number before, during, and after a pinch-zoom gesture on this device.

That stability is exactly why devicePixelRatio and the layout viewport width sit among the real, unmodified values discussed above: they behave like fixed hardware constants tied to the physical panel rather than something a reader's own zooming or resizing habits could change moment to moment, which is also what makes them a genuinely useful, repeatable match signal for this specific iPhone model rather than noise AFP would need to touch.

Sources
  1. 1.

    WebKit, "WebKit Features in Safari 26.0," webkit.org, September 2025. https://webkit.org/blog/17333/webkit-features-in-safari-26-0/

  2. 2.

    Mozilla Developer Network, "WEBGL_debug_renderer_info," developer.mozilla.org, accessed August 2026. https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_debug_renderer_info

  3. 3.

    Apple, "App Review Guidelines," developer.apple.com, accessed August 2026. https://developer.apple.com/app-store/review/guidelines/

  4. 4.

    Apple, "Configuring the Viewport," developer.apple.com, accessed August 2026. https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html

  5. 5.

    Mozilla Developer Network, "VisualViewport," developer.mozilla.org, accessed August 2026. https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport

FAQ

Safari has blocked the UNMASKED_RENDERER_WEBGL query since version 12, years before any dedicated anti-fingerprinting feature shipped. The row reads empty here regardless of whether Advanced Fingerprinting Protection is active, which is different from Android Chrome, where the same query returns a full GPU model string.

No. AFP specifically modifies canvas rendering, WebGL rendering output, audio processing, and font access. hardwareConcurrency, screen dimensions, devicePixelRatio, timezone, and language are outside its scope and continue to report real values on every scan.

Not meaningfully. Apple's App Store rules require every browser app on iOS to use the WebKit engine, so Chrome and Firefox on this iPhone run the same engine and inherit the same protections, including the same blocked WebGL renderer string, as Safari itself.

No. iOS keeps the layout viewport width and devicePixelRatio fixed regardless of pinch-to-zoom gestures; only the visual viewport, what you actually see on screen, changes scale. A script reading either property gets the same number before and after you zoom.

There is no supported per-scan toggle; AFP is part of the WebKit engine rather than a setting you switch off for a single test. CapyToolkit's inspector reads whatever iOS Safari actually reports at the time you run it, so the result reflects your everyday browsing rather than a special test mode.

Browser Fingerprinting on MacBook (Safari)

Apple's rule requiring every iOS browser app to run on WebKit does not reach macOS.1 Chrome and Firefox installed on this MacBook run their own Blink and Gecko engines rather than wrapping Safari's WebKit the way every browser on an iPhone must, so the browser you pick here genuinely changes which engine renders the page and which anti-fingerprinting behavior, if any, applies to it. This machine also lets you install custom fonts system-wide through Font Book, something the fixed factory font set on a phone rarely sees.

Run this check yourself in the Browser Fingerprint Inspector.

Open in the tool →

Specifications

Rendering engineWebKit (Safari); Chrome and Firefox on this Mac run Blink and Gecko
iOS-only engine ruleApp Store Guideline 2.5.6 does not apply to macOS apps
Anti-fingerprintingAdvanced Tracking and Fingerprinting Protection, available in Safari > Settings > Advanced
Custom fontsInstallable system-wide via Font Book
Font visibilityOS-level font list shared across every browser on the machine

Why the browser you pick on this Mac changes more than it does on an iPhone

Apple's App Store Review Guidelines require apps that browse the web on iOS to use the WebKit rendering engine, a rule numbered 2.5.6.1 That requirement governs iOS App Store distribution specifically; it has no equivalent for macOS. Chrome and Firefox installed on this MacBook ship their native Blink and Gecko engines rather than wrapping WebKit, which means picking a browser here is a genuinely different decision than picking one on a phone, where every app icon leads back to the same underlying engine.

Safari's protections are Safari-specific on this machine

Safari on macOS offers an "Advanced Tracking and Fingerprinting Protection" toggle in Safari > Settings > Advanced, which layers noise and normalization onto canvas, WebGL, and audio readouts when enabled.2 That protection lives inside WebKit itself, so it only ever covers browsing sessions that actually run through Safari on this machine. Opening the same page in Chrome on this identical MacBook leaves you on Blink with none of it, a fundamentally different situation from an iPhone where every browser app inherits the same engine-level defenses automatically.

A fresh Chrome profile on this Mac starts from a genuinely different baseline

Because Chrome and Safari on this MacBook run different rendering engines rather than the same engine wrapped in different interfaces, a script comparing canvas hashes between the two would see output shaped by two distinct rendering pipelines, not just two different browser UIs sitting on identical internals. That is a deeper split than Samsung Internet versus Chrome on the same Galaxy phone, where CapyToolkit's own Android guide shows both browsers query identical hardware signal APIs even though their canvas hashes differ; here, switching browsers can mean switching engines outright.

Why the font list on this Mac can grow well past a phone's fixed set

Font Book lets you install fonts system-wide on this MacBook, either for your own account or for every user on the machine.3 Font enumeration, one of the techniques browser fingerprinting relies on, reads from the operating system's installed font list rather than anything scoped to a single browser, so anything added through Font Book becomes visible to a probe running in Safari, Chrome, or Firefox alike on this same machine.

An installed font library becomes a shared fingerprinting signal across every browser here

Installing a design agency's licensed typefaces or a Creative Cloud font library through Font Book adds entries a canvas-based font probe can detect in any browser you open afterward, since the detection happens at the OS level rather than inside a sandboxed per-app font set.4 A phone's fixed, rarely-customized factory font set gives a fingerprinting script much less to work with by comparison; a MacBook whose owner has installed a personal or professional font library over the years hands over a list that reflects real software choices, not just the operating system's defaults.

That distinction compounds with the browser-engine point above: a script running on this MacBook can potentially see a distinctive font list through whichever browser you're using, then combine it with an engine-specific canvas or WebGL signature that a phone, locked to one shared engine across every app, simply cannot produce in the same way.5

Sources
  1. 1.

    Apple, "App Review Guidelines," developer.apple.com, accessed August 2026. https://developer.apple.com/app-store/review/guidelines/

  2. 2.

    WebKit, "WebKit Features in Safari 26.0," webkit.org, September 2025. https://webkit.org/blog/17333/webkit-features-in-safari-26-0/

  3. 3.

    Apple, "Install and validate fonts in Font Book on Mac," support.apple.com, accessed August 2026. https://support.apple.com/guide/font-book/install-and-validate-fonts-fntbk1000/mac

  4. 4.

    W3C, "Fonts, Privacy, and Not Breaking the Web," w3.org, September 2024. https://www.w3.org/2024/09/font-i18n-privacy.html

  5. 5.

    Wikipedia, "Device fingerprint," en.wikipedia.org, accessed August 2026. https://en.wikipedia.org/wiki/Device_fingerprint

FAQ

Yes, and more significantly. Apple's WebKit-only rule applies to iOS apps, not macOS, so Chrome and Firefox on this Mac run their own Blink and Gecko engines rather than wrapping WebKit. That's a deeper split than switching apps on a phone, where every browser shares the same underlying engine.

No. Advanced Tracking and Fingerprinting Protection lives inside WebKit and only covers sessions that actually run through Safari. Opening the same site in Chrome on this identical machine leaves you on a completely different engine with none of that protection applied.

Font enumeration reads from the operating system's installed font list rather than a per-browser set. Anything you add system-wide through Font Book becomes visible to a font probe running in Safari, Chrome, or Firefox alike, since the detection happens at the OS level.

Often, yes, if you've personally installed fonts over time. A phone's fixed factory font set gives a fingerprinting script little to differentiate on; a MacBook whose owner added a personal or professional font library through Font Book hands over a list shaped by real software choices instead of just OS defaults.

It's one factor among several. Safari's built-in protection only applies while you're using Safari itself, so the benefit disappears the moment you open the same site in a different browser on this machine. CapyToolkit's inspector lets you run the same scan in each browser you have installed to compare the actual difference on your own MacBook.

Test Your Safari Fingerprint on iOS 26

Run the fingerprint inspector above on an iPhone running iOS 26 and compare the entropy score against a backup taken on an earlier version, and Apple's Advanced Fingerprinting and Tracking Protection (AFP) becomes visible directly in the numbers. AFP activates automatically for every user who upgrades to iOS 26, without requiring any settings changes.

AFP targets the highest-entropy passive signals that fingerprinting scripts rely on: canvas rendering output is modified to reduce uniqueness, WebGL output is altered, audio processing results are normalized, and font access is restricted to a common subset.1 Consequently, a browser that previously produced a distinctive canvas hash on iOS 17 produces a modified output on iOS 26 Safari, making cross-session re-identification through canvas fingerprinting significantly harder.

Building on this, AFP differs from approaches taken by Brave and Firefox: rather than randomizing values per origin, AFP normalizes them toward a common baseline, which reduces intra-user variance while preserving the appearance of consistent behavior. Checking your own score above after the upgrade shows the reduction directly, instead of taking the description on faith.

What AFP leaves unmodified

  • real core count, for example 6 on an A13 and 4 on an A10
  • unmodified, logical CSS resolution
  • unmodified

Opens the Browser Fingerprint Inspector with this section's reference values shown at the top of the tool.

Open in the tool →

What AFP in iOS 26 blocks and modifies

AFP modifies canvas and WebGL rendering output to reduce the uniqueness of the rendered result. Scripts calling HTMLCanvasElement.toDataURL() receive a modified pixel buffer that has been processed to reduce the hardware-specific variation caused by GPU drivers and font rasterizers. WebGL rendering output undergoes similar modification, reducing the fingerprinting value of canvas-based WebGL renders. Audio processing output through OfflineAudioContext is normalized; the floating-point values in the rendered audio buffer are adjusted to reduce DAC-specific variation.2

What AFP changes on iOS Safari

Font access is restricted to a predefined common subset, which prevents the font enumeration technique from producing a distinctive font list.1 Consequently, the four highest-entropy passive fingerprinting signals are each reduced in entropy simultaneously. Building on this, AFP activates automatically and requires no user action; the protection is present from the first Safari launch after upgrading to iOS 26, making it the broadest default-on deployment of anti-fingerprinting protection in any major browser.

You can measure the effect directly by running the inspector on an iOS 26 device and comparing the entropy score with the same device before the upgrade, or with an Android phone running the same sites. The canvas, WebGL, and audio rows should show lower variance on iOS 26 than on earlier versions, which confirms that AFP is changing the underlying values rather than only hiding them. Testing on both Wi-Fi and cellular also shows whether the network path changes the result.

What AFP does not protect against

AFP's normalization approach leaves several hardware and locale signals completely untouched, which means a determined fingerprinting script can still collect meaningful entropy from the values AFP does not modify. navigator.hardwareConcurrency reports the real CPU core count, which ties the reading to the chip generation: an A13 has six cores (two high-performance and four efficiency cores), while the older A10 has four.3 screen.width and screen.height remain reported at the logical CSS resolution, which varies across iPhone models with different display dimensions, and window.devicePixelRatio continues to report the display's actual pixel ratio without any modification.

How to test Safari protection

WebRTC behavior on iOS has restricted local IP exposure since iOS 15, when Apple introduced mDNS ICE candidates that replace real local IP addresses with randomly generated .local addresses, so WebRTC leaks are already addressed independently of AFP.4 Timezone and language signals remain unmodified. AFP also does not remove the need to test after an update, because site scripts can still combine the remaining values into a recognizable profile. Consequently, a complete fingerprint score in iOS 26 Safari will be lower than in earlier iOS versions but will not reach zero; the remaining unmodified signals still provide some entropy. Building on this, the practical effect is that canvas-based, audio-based, and font-based tracking across sessions becomes substantially harder, while lower-entropy corroborating signals like screen resolution and hardware concurrency remain available to fingerprinting scripts.

How iOS 26 AFP compares to Brave and Firefox

AFP, Brave's farbling, and Firefox's privacy.resistFingerprinting address the same fingerprinting signals through different mechanisms. AFP normalizes canvas and audio output toward a common baseline shared across many iOS 26 Safari users; the goal is to reduce the uniqueness of each device's output without randomizing it. Brave farbles canvas output per origin and per session with controlled noise; the goal is to prevent stable cross-site and cross-session linking by ensuring the hash changes each time. Firefox RFP intercepts the canvas API at the engine level and injects a session-consistent modification that degrades the hash without breaking canvas functionality.

Consequently, AFP reduces entropy by normalization toward a shared baseline, Brave reduces it through session-scoped randomization that changes the hash on every new site and session, and Firefox reduces it by engine-level intervention that modifies canvas output before the script ever receives the pixel data, each reflecting a fundamentally different philosophy about how to defeat stable fingerprint collection.5

Which approach matches your device

For a user who wants to minimize their fingerprint entropy score, Brave's approach produces the most aggressive reduction on desktop; AFP produces the most significant reduction on iOS without requiring any configuration. If you browse primarily on iPhone, upgrading to iOS 26 gives you meaningful protection with zero setup, while desktop users who want the strongest available protection should combine Brave with its Shields set to aggressive mode. The key difference is that AFP normalizes toward a shared baseline while Brave randomizes per session, so the protection mechanism that works best for you depends on whether you prioritize consistency or unpredictability in your browsing profile. Checking your entropy score on iOS 26 against an earlier backup makes the AFP reduction concrete rather than theoretical.

When to use this

Run the inspector above right after upgrading to iOS 26 to audit your Safari fingerprint, or use it to check whether AFP changes how CapyToolkit Browser Fingerprint Inspector reports signals on your specific iPhone.

Examples

Comparing canvas hash before and after iOS 26 upgrade

Before
iOS 17 Safari: canvas hash = a4d9c2e1... (hardware-specific GPU-rendered value, stable across sessions)
After
iOS 26 Safari with AFP: canvas hash = modified output (normalized, less distinctive, may still be consistent within a session but differs from the pre-AFP hardware-rendered hash)

Run CapyToolkit Browser Fingerprint Inspector on your iPhone before and after updating to iOS 26 to see the actual change in entropy score.

Locating AFP settings in iOS 26

Before
AFP is enabled by default after upgrading to iOS 26. No action is required.
After
To verify or adjust: Settings > Safari > Privacy > Advanced Fingerprinting and Tracking Protection. The toggle is on by default.
Sources
  1. 1.

    Apple, "WebKit Features in Safari 26.0," webkit.org, September 2025. https://webkit.org/blog/17333/webkit-features-in-safari-26-0/

  2. 2.

    9to5Mac, "iOS 26 counters invasive tracking," 9to5mac.com, July 2025. https://9to5mac.com/2025/07/29/with-ios-26-safari-will-counter-one-of-the-webs-most-invasive-tracking-methods/

  3. 3.

    "Apple silicon," Wikipedia, accessed October 2026. https://en.wikipedia.org/wiki/Apple_silicon

  4. 4.

    Eric Rescorla, "Apple's Not-So-Private Relay Fails with WebRTC," webrtchacks.com, 2022. https://webrtchacks.com/apples-not-so-private-relay-fails-with-webrtc/

  5. 5.

    Brave, "Fingerprint Randomization," brave.com, 2020. https://brave.com/privacy-updates/3-fingerprint-randomization/

FAQ

AFP is Apple's default-on fingerprinting protection introduced in iOS 26 Safari. It modifies canvas rendering output, WebGL rendering, audio processing results, and font access to reduce each signal's uniqueness. It activates automatically after upgrading to iOS 26 without requiring any user configuration.

No. AFP is enabled by default after upgrading to iOS 26. It applies to all Safari browsing including private windows. The toggle in Settings > Safari > Privacy lets you verify the setting and turn it off if needed, but it is on by default for all users.

AFP does not modify navigator.hardwareConcurrency, screen.width, screen.height, window.devicePixelRatio, timezone, or browser language. These signals remain unchanged and continue to contribute entropy to the overall fingerprint. The signals AFP targets are canvas, WebGL rendering, audio processing, and font enumeration.

AFP normalizes canvas and audio values toward a common baseline, reducing uniqueness without per-session randomization. Brave farbles signals per origin and per session, so the canvas hash changes between sites and between sessions. AFP aims for consistent-but-reduced output; Brave aims for unpredictable output that changes each session.

Yes. The canvas hash, audio fingerprint, and font list sections will show modified values after AFP activates. The overall entropy score will decrease compared to iOS 17 or earlier. Signals that AFP does not protect, screen dimensions, hardware concurrency, and timezone, will remain unchanged.

FAQ

Less than you might expect. Every browser app on iOS has to use WebKit, so Chrome on an iPhone renders with the same engine as Safari and gets the same engine-level protections. Some values, like the browser name in the user agent, differ; the canvas, WebGL and font behaviour come from the shared engine.

No. It is on by default for every user who upgrades to iOS 26. On a Mac, the matching option is in Safari's Advanced settings.

Advanced Fingerprinting Protection changes canvas, WebGL, audio and font signals, but it leaves hardware and locale values alone. Screen size, CPU core count, time zone and language still combine into a pattern, so the score drops without reaching zero.

Safari applies its own protections, which Chrome on the same Mac does not have. Fonts are the exception: the font list comes from macOS, so every browser on the machine sees the same installed fonts, including any you added through Font Book.

Private browsing clears cookies and history when you close the window, which helps against tracking that relies on stored data. The fingerprint is measured from your device and browser each time, so private mode on its own does not change most of it.

No. CapyToolkit doesn't send the fingerprint anywhere; the inspector reads every signal and computes the score inside your browser.

Additional resources

Guides

How to Reduce Your Browser Fingerprint Practical steps to reduce your browser fingerprint including Firefox resistFingerprinting, Tor Browser, Brave, and canvas-blocking extensions. Lower your uniqueness score. How Browser Fingerprinting Techniques Work How canvas, font, WebGL, AudioContext and Client Hints fingerprinting work, what each one reveals about your device and how browsers block or change each signal. Is Browser Fingerprinting Legal Under GDPR Browser fingerprinting may constitute personal data processing under GDPR and ePrivacy Directive. Consent requirements, legitimate interest, and regulatory enforcement approaches. Safari Fingerprinting on iPhone and Mac What Safari exposes to fingerprinting on iPhone and Mac, what Advanced Fingerprinting Protection in iOS 26 changes, and which signals it leaves untouched. Playwright and Puppeteer Browser Fingerprinting Playwright and Puppeteer expose navigator.webdriver=true, empty plugins, and SwiftShader WebGL in headless mode. How anti-bot systems detect automation and how to test more realistically. Android Chrome Browser Fingerprint Android Chrome exposes navigator.deviceMemory, hardwareConcurrency, and full WebGL renderer strings that iOS Safari restricts. How Android fingerprints differ from iOS, and Brave for Android protection. Windows 11 Browser Fingerprint Windows 11 creates distinctive fingerprints through its exclusive font set, ANGLE WebGL rendering strings, and non-integer DPI scaling options. Which signals are most identifying and how to reduce them.