Browser Fingerprinting on iPhone (Safari)

Why the WebGL renderer row reads empty on this iPhone, what Advanced Fingerprinting Protection changes versus leaves untouched, and why every iOS browser inherits the same WebKit protections.

ZERO UPLOAD · ALL LOCAL
  1. The scan runs automatically when you open this page — no input needed.
  2. Each section shows a group of signals your browser exposes. Rows marked TRACKABLE are the highest-entropy signals used to identify you.
  3. The entropy score at the top estimates how uniquely identifiable your browser is across the web.
  4. Use the Copy buttons next to any row to copy that value to your clipboard.
  5. The Installed Fonts section lists which fonts from a 30-font probe were detected on your system.

Using this tool with the Apple iPhone (Safari)

  • The blank WebGL renderer row is not AFP Safari has returned an empty UNMASKED_RENDERER_WEBGL string since version 12, long before Advanced Fingerprinting Protection existed. Don't read the blank row above as evidence AFP is (or isn't) doing something; it's a separate, older restriction.
  • AFP changes canvas, WebGL, and audio, not hardware or locale Expect the canvas hash, WebGL rendering readout, and audio fingerprint rows to differ from a pre-iOS-26 capture. hardwareConcurrency, screen dimensions, devicePixelRatio, timezone, and language still report this iPhone's real values.
  • Switching browser apps will not change the engine Chrome, Firefox, and every other browser on this iPhone are required by Apple's App Store rules to run on WebKit, so they inherit the identical protections and the identical blank WebGL renderer row Safari shows.
Scanning browser APIs…
~0 bits

Analysing fingerprint…

27+ bits VERY HIGH
19 – 26 bits HIGH
9 – 18 bits MODERATE
0 – 8 bits LOW

IDENTITY

USER AGENTTRACKABLE
APP VERSION
PLATFORM
VENDOR
WEBDRIVER

HARDWARE

CPU THREADS
DEVICE MEMORY
SCREEN RESOLUTIONTRACKABLE
AVAILABLE SCREEN
COLOUR DEPTH
PIXEL DEPTH
PIXEL RATIO
ORIENTATION
TOUCH POINTS
BATTERY LEVEL
BATTERY CHARGING

GRAPHICS

CANVAS HASHTRACKABLE
WEBGL VENDOR
WEBGL RENDERERTRACKABLE
WEBGL EXT COUNT
WEBGL EXTENSIONS
MAX TEXTURE SIZE
WEBGL 2
WEBGPU

AUDIO

AUDIO FINGERPRINTTRACKABLE
SAMPLE RATE
BASE LATENCY

NETWORK & PRIVACY

ONLINE
DO NOT TRACK
COOKIES ENABLED
CONNECTION TYPE
DOWNLINK
RTT
SAVE DATA

BROWSER ENVIRONMENT

LANGUAGE
LANGUAGESTRACKABLE
TIMEZONETRACKABLE
TIMEZONE OFFSET
PLUGIN COUNT
PLUGINS
LOCAL STORAGE
SESSION STORAGE
INDEXEDDB
WEBSQL
CODEC H.264
CODEC VP8
CODEC VP9
CODEC AV1
CODEC HEVC
SPEECH VOICES
VOICE NAMES

SYSTEM PREFERENCES

COLOUR SCHEME
REDUCED MOTION
CONTRAST
POINTER
HOVER
FORCED COLOURS

INSTALLED FONTS

INSTALLED FONTSTRACKABLE
Show detected fonts (30 probed)

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.

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