99.5% ACCURACY · PERSISTENT · TAMPER-PROOF

One device.
One identity. Forever.

Prynt generates a stable, tamper-proof device identifier by combining 100+ browser, hardware, and network signals — persistent across sessions, incognito mode, VPN switches, and cookie clearing.

Try It Live → Read the Docs

Traditional identifiers are broken.

Cookies get cleared. IPs change. Basic fingerprinting is easy to spoof. You need something fundamentally better.

🍪
Legacy

Cookies & Local Storage

Cleared by users, blocked by browsers, wiped in incognito. Safari ITP limits cookies to 7 days. A visitor who clears cookies becomes a stranger.

Persistence
Days
Incognito
Accuracy
~40%
🌐
Legacy

IP Address

Shared by NAT, rotated by ISPs, masked by VPNs. Millions of users can share one IP. One user can show dozens of IPs in a single day.

Persistence
Hours
Incognito
Partial
Accuracy
~55%
🔑
Prynt

Device Fingerprinting

Hardware-rooted, server-verified, ML-enhanced. Survives everything — incognito, VPN, cookie clearing, browser upgrades. One device, one ID, forever.

Persistence
Months
Incognito
Accuracy
99.5%

Six signal layers. One fingerprint.

Prynt collects signals across six independent layers. Each layer produces a partial fingerprint. Combined, they generate a high-entropy identifier that's nearly impossible to spoof.

🖥️
Browser & Environment
Baseline configuration signals
MED ENTROPY
User AgentPlatformLanguageTimezoneScreen ResolutionColor DepthCookie SupportDNT SettingTouch PointsDevice MemoryHardware ConcurrencyMax Connections
🎨
Canvas Fingerprint
GPU-rendered 2D graphics signature
HIGH ENTROPY
Canvas 2D RenderingText RenderingEmoji RenderingGradient ComputationAnti-aliasing PatternsSub-pixel Rendering
💎
WebGL Fingerprint
GPU hardware identification via 3D rendering
V. HIGH ENTROPY
GPU VendorGPU RendererWebGL VersionShader PrecisionExtension SupportMax Texture SizeUnmasked RendererRender Hash
🔊
Audio Fingerprint
AudioContext processing characteristics
HIGH ENTROPY
Oscillator OutputCompressor ResponseSample RateChannel CountFrequency ResponseLatency Characteristics
🔤
Font Fingerprint
Installed font enumeration via rendering
HIGH ENTROPY
System FontsFont CountRender MetricsKerning PatternsGlyph WidthsFallback Behavior
🧠
Server-Side Processing
ML models + historical correlation
V. HIGH ENTROPY
TLS FingerprintHTTP/2 SettingsHeader OrderTCP/IP StackFuzzy MatchingHistorical CorrelationConfidence ScoringCluster Analysis
Generated Fingerprint
Live
Visitor ID
pv_8kX2mNqR3jT7p
Confidence: 99.5%
First Seen
Sep 14, 2025
Last Seen
Just now
Total Sessions
347
Incognito Sessions
28
Browser
Chrome 121
Platform
macOS 14.3
GPU
Apple M3 Pro
Fonts Detected
287

Survives everything users throw at it.

Prynt's fingerprint persists where cookies, IP, and basic fingerprinting fail. Here's what it survives — and how.

🕶️

Incognito / Private Browsing

Hardware signals (Canvas, WebGL, Audio, fonts) are identical between normal and incognito sessions. Our fuzzy-matching links the incognito visitor back to their original ID instantly.

// Normal session "visitorId": "pv_8kX2mNqR3jT7p" // Same device, incognito "visitorId": "pv_8kX2mNqR3jT7p" ✓ Match "incognito": true
🍪

Cookie & Storage Clearing

Prynt doesn't depend on cookies, localStorage, or IndexedDB. The fingerprint is generated from hardware and rendering characteristics that can't be "cleared" by the user.

// Before clearing cookies "visitorId": "pv_8kX2mNqR3jT7p" // After clearing ALL browser data "visitorId": "pv_8kX2mNqR3jT7p" ✓ Match
🔒

VPN & Proxy Switching

Device fingerprints are based on hardware and rendering — not network attributes. Changing VPN servers, proxies, or even ISPs does not affect the generated visitor ID.

// Direct connection (US) "visitorId": "pv_8kX2mNqR3jT7p" // Same device via NordVPN (Netherlands) "visitorId": "pv_8kX2mNqR3jT7p" ✓ Match "vpn": true
⬆️

Browser & OS Upgrades

When a browser or OS updates, some signals change incrementally. Prynt's fuzzy-matching algorithm accounts for gradual drift and correlates the updated fingerprint to the existing visitor ID.

// Chrome 120 on macOS 14.2 "visitorId": "pv_8kX2mNqR3jT7p" // Updated to Chrome 121 + macOS 14.3 "visitorId": "pv_8kX2mNqR3jT7p" ✓ Match "confidence": 0.987

99.5%. Measured, not claimed.

We continuously measure identification accuracy across billions of real-world requests. Here's how Prynt compares to alternative identification methods.

Returning Visitor Identification Rate
Prynt
99.5%
Basic FP (OSS)
~60%
IP Address
~55%
Cookies
🧠

Server-Side ML Processing

Client-side-only libraries hit a ceiling around 60% accuracy. Prynt adds server-side ML models that correlate signals across sessions, enabling fuzzy matching when individual attributes change.

📊

Historical Correlation

Every fingerprint is matched against the visitor's signal history. Gradual changes (browser update, font install) are tracked and absorbed, maintaining identity continuity across months.

🔗

Multi-Layer Redundancy

Six independent signal layers means no single point of failure. Even if one layer is blocked or spoofed, the remaining layers maintain identification accuracy above 95%.

🔬

Continuous Calibration

Our models are retrained weekly against real-world data. New browser versions, OS updates, and anti-fingerprinting techniques are detected and incorporated automatically.

Web. iOS. Android. One API.

Native SDKs for every platform — same visitor ID format, same API, same signals. Identify users across devices and platforms with a unified interface.

🌐

Web

Lightweight JavaScript agent. Runs in under 4ms. Supports all modern browsers including Chrome, Firefox, Safari, and Edge.

JavaScript React Vue Angular Next.js
import { Prynt } from '@prynt/sdk'; const p = new Prynt({ apiKey: 'pk_...' }); const r = await p.identify();
🍎

iOS

Native Swift SDK. Uses hardware identifiers, sensor data, and device configuration for stable identification — persistent across app reinstalls.

Swift SwiftUI Obj-C React Native Flutter
import PryntSDK let prynt = Prynt(apiKey: "pk_...") let result = try await prynt.identify()
🤖

Android

Native Kotlin SDK. Leverages hardware specs, cellular data, battery state, and sensor configuration for deep device identification.

Kotlin Java React Native Flutter
val prynt = Prynt(apiKey = "pk_...") val result = prynt.identify()

Everything you need. One call.

Every identification request returns the visitor ID, confidence score, device metadata, and session history. Access via Server API, sealed results, or webhooks.

visitorId string
The stable, persistent device identifier. Format: pv_{alphanumeric}. Remains consistent across sessions, incognito, VPN, and cookie clearing. Lasts months.
confidence float
How confident Prynt is in the identification match, from 0 to 1. New visitors start at 0.9+. Returning visitors typically score 0.99+. Use this to gate high-risk actions.
visitorFound boolean
Whether this device has been seen before. true for returning visitors, false for first-time devices.
device object
Structured device metadata including platform, browser, hardware type, GPU, screen, core count, memory, and touch support. Available on all plans.
firstSeenAt / lastSeenAt datetime
ISO 8601 timestamps for when this device was first and last identified. Use to calculate account age, session frequency, and visitor lifecycle.
requestId string
Unique identifier for this specific identification event. Use to retrieve full signals, scores, and Smart Signal data via the Server API.
GET /v1/events/{requestId} 200 OK
{
  "requestId": "req_1707832921_a7f2c9",
  "visitorId": "pv_8kX2mNqR3jT7p",
  "visitorFound": true,
  "confidence": 0.995,
  "firstSeenAt": "2025-09-14T08:12:33Z",
  "lastSeenAt": "2026-02-13T14:22:01Z",
  "device": {
    "platform": "macOS",
    "platformVersion": "14.3",
    "browser": "Chrome",
    "browserVersion": "121.0.6167.85",
    "hardware": {
      "type": "desktop",
      "gpu": "Apple M3 Pro",
      "cores": 12,
      "memory": 16,
      "screen": {
        "width": 3024,
        "height": 1964,
        "dpr": 2,
        "colorDepth": 30
      },
      "touchSupport": false
    }
  },
  "hashes": {
    "canvas": "d4e8f1a2c6...",
    "webgl": "b9c3d7e0f5...",
    "audio": "a7f2c9e1b3...",
    "fonts": "e3a1b4c7d2..."
  },
  "meta": {
    "totalSessions": 347,
    "incognitoSessions": 28,
    "browserUpgrades": 4,
    "fontsDetected": 287
  }
}

What you can build with a persistent device ID.

Device fingerprinting is the foundation for every fraud, security, and personalization workflow in Prynt.

🔐

Account Takeover Prevention

Recognize trusted devices instantly. Flag new or suspicious devices at login and trigger step-up authentication only when risk is real.

🚫

Fake Account Detection

Link registration attempts to existing devices. Catch serial account creators using the same hardware — even across incognito sessions.

💳

Payment Fraud Prevention

Associate payment attempts with device history. Flag card testing, velocity anomalies, and new devices making high-value transactions.

🎫️

Promo & Coupon Abuse

Prevent users from redeeming promotions repeatedly by detecting the same device across new accounts, incognito sessions, and VPNs.

👋

Returning User Personalization

Recognize returning visitors without requiring login. Restore cart contents, personalize content, and streamline checkout for known devices.

📊

Accurate Analytics

Count real unique visitors instead of cookie-inflated numbers. Get accurate session counts, return rates, and conversion attribution.

See your first fingerprint in 5 minutes.

Free trial. Unlimited API calls. No credit card.

Start Free Trial → View API Docs