Tool

Audit device fingerprinting signals on iOS and iPadOS

Loupe is an iOS/iPadOS app that shows, in raw form, exactly what device fingerprinting signals your iPhone quietly exposes to any app.

Works with iosipadosxcode

90
Spark score
out of 100
Updated last month
Version 1.0.0

Add to Favorites

Why it matters

Reveal what device fingerprinting data iOS apps can silently collect about your iPhone or iPad by reading and displaying real values from public APIs, organized by access tier (passive, permission-required, and advanced side-channels).

Outcomes

What it gets done

01

Extract passive signals like locale, time zone, screen dimensions, and battery status without prompts

02

Display permission-gated readings from contacts, photos, location, and calendars

03

Probe advanced side-channels including URL-scheme detection and Keychain persistence

04

Export raw fingerprinting values for analysis while keeping all data on-device

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/mysk-research-loupe | bash

Overview

Loupe

Loupe is an iOS/iPadOS app that reads real values from public iOS APIs and displays them raw, grouped into Passive, Needs Permission, and Advanced side-channel tiers, so users can see exactly what device fingerprinting data any third-party app can quietly collect. Use it to understand, hands-on, what your iPhone exposes to apps without special permissions versus what requires a prompt or a side-channel technique; it is an inspection tool, not a fingerprinting blocker - Mysk's Psylo browser is the separate protective product.

What it does

Loupe is an iOS and iPadOS app that gives a hands-on tour of the device fingerprinting surface exposed by public iOS APIs - the same ones any third-party app can call. It reads real values from those APIs and shows them to you raw, without aggregation or hashing, so you can see exactly what your iPhone quietly exposes and why each individual reading helps an app recognize you again across sessions. The premise, stated directly by the source: trackers don't need your name, email, or location to recognize you online - no single reading is necessarily unique on its own, but together they form a fingerprint that follows you across apps and websites.

Loupe groups every signal into three tiers by cost of access: Passive (visible to any app with no prompt at all - locale, time zone, screen, battery, and more), Needs Permission (readings that trigger an iOS system prompt - contacts, photos, location, calendars), and Advanced (clever side-channel uses of public APIs, such as URL-scheme probing via canOpenURL and Keychain persistence across app reinstalls). It also builds for macOS, though the source notes the Mac version is mostly complete but not yet fully polished. The app itself was written almost entirely by AI coding tools, as the source discloses directly.

When to use - and when NOT to

Use Loupe to understand, concretely and on your own device, what data points a third-party iOS app can gather about you without any special permissions (the Passive tier), what triggers an explicit permission prompt, and what less-obvious side channels (URL-scheme probing, Keychain persistence) exist beyond the obvious permission-gated APIs. It's a fit for privacy-curious users, security researchers, and developers who want a concrete, hands-on demonstration of iOS device fingerprinting rather than an abstract explanation.

It is an educational and inspection tool, not a protective one - it shows you what's exposed, it doesn't block or reduce it. For actual anti-fingerprinting protection while browsing, the source points to Mysk's separate product, Psylo, a privacy-first browser with proxy-backed browsing and isolated tabs.

Inputs and outputs

Input is simply running the app on an iOS/iPadOS device or simulator - no configuration needed to see the readings. To build from source, open code/Loupe.xcodeproj in Xcode 26+, copy code/Config/Signing.local.xcconfig.example to code/Config/Signing.local.xcconfig and fill in your own DEVELOPMENT_TEAM and bundle identifiers (gitignored, never published), then build and run. The project uses Xcode's buildable folders, so new Swift files are picked up automatically without editing the project file.

Output is an in-app display of each signal's raw value, grouped by tier. Nothing Loupe reads leaves the device unless the user explicitly exports it - values are never uploaded, synced, hashed, or shared.

Integrations

Loupe reads directly from public iOS and iPadOS system APIs (locale, time zone, screen, battery, contacts, photos, location, calendars, URL-scheme handling, Keychain) with no external service integration or network calls beyond an explicit user-initiated export. It's a standalone Swift/Xcode project with no dependency on a backend.

Who it's for

Privacy-conscious iPhone and iPad users, security researchers, and app developers who want to see, in concrete and raw terms, exactly what a third-party app can learn about their device through public APIs - and, by extension, anyone deciding whether they need stronger anti-fingerprinting protection like a dedicated privacy browser. It is licensed under MIT for the source code (the name, logo, and design assets are not covered).

Source README

Loupe

Loupe

Loupe is an iOS and iPadOS app that gives you a hands-on tour of the device fingerprinting surface. It reads real values from public iOS APIs, the same ones any third-party app can call, and shows them to you raw. The point is simple: see what your iPhone quietly exposes, and why each reading helps an app recognize you again.

Trackers don't need your name, email, or location to recognize you online. Each reading isn't necessarily unique on its own, but together they form a fingerprint that follows you across apps and websites.

Download Loupe on the App Store

Loupe screenshot showing the passive signal category Loupe screenshot showing the needs permission signal category Loupe screenshot showing some highlights from what apps can see

How signals are organized

Loupe groups every reading into three tiers, reflecting the cost of access:

  • Passive - visible to any app with no prompt at all (locale, time zone, screen, battery, and more).
  • Needs Permission - readings that trigger an iOS prompt (contacts, photos, location, calendars).
  • Advanced - clever side-channel uses of public APIs, such as URL-scheme probing via canOpenURL and Keychain persistence across reinstalls.

A note on how this was built

Loupe was written almost entirely by AI coding tools.

Building

You'll need Xcode 26 or newer.

  1. Open code/Loupe.xcodeproj.
  2. Copy code/Config/Signing.local.xcconfig.example to code/Config/Signing.local.xcconfig and fill in your own DEVELOPMENT_TEAM and bundle identifiers. This file is gitignored and never published.
  3. Build and run on a device or simulator.

The project uses Xcode's buildable folders (folder references), so new Swift files are picked up automatically with no need to edit the project file.

macOS

Loupe also builds for macOS. The Mac version is mostly complete, but a few things still need work before it's polished.

About

Loupe is made by Mysk.

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.