Back to Blog
Technology & Architecture

Fingerprinting Without Invading Privacy: Our Minimal Approach to Device Identification

December 2, 20255 min read

Device fingerprinting has a bad reputation - and deservedly so. Companies like Facebook and Google collect hundreds of data points to track users across the web. We take a different approach: minimal fingerprinting that serves legitimate purposes without invasive surveillance.

Why Any Fingerprinting?

We need some form of device identification for two legitimate purposes:

Fraud Detection

Bots often have fingerprints that dont match real devices - impossible screen sizes, missing browser features, inconsistent data. Comparing fingerprints helps catch this.

Frequency Capping

Advertisers want to limit how often the same user sees their ad. Without some identifier, we cant enforce this. Cookies are dying; fingerprinting is one alternative.

What We Dont Collect

First, lets be clear about what we refuse to collect:

Canvas Fingerprinting

Drawing hidden images and hashing the result. Extremely identifying, completely unnecessary for our purposes. We dont do it.

WebGL Fingerprinting

Extracting GPU information through WebGL rendering. Another highly unique identifier we skip.

Audio Fingerprinting

Processing audio signals to identify hardware. Invasive and not useful for ad fraud detection.

Font Enumeration

Listing all installed fonts. Very identifying, not relevant to our needs.

Battery Status

Battery level and charging state. Was briefly used for tracking; we never touch it.

Hardware Enumeration

Detailed CPU, memory, and device specifications. More than we need.

Our Minimal Fingerprint

We collect only what serves legitimate purposes:

User-Agent String

Standard HTTP header that every request includes anyway:

  • Browser name and version
  • Operating system
  • Device type indication

Why: Essential for targeting and basic fraud detection. Already transmitted in every HTTP request.

Viewport Dimensions

The visible browser window size:

  • window.innerWidth
  • window.innerHeight

Why: Bots often have anomalous viewport sizes. Also useful for ad size selection.

Screen Dimensions

Physical screen resolution:

  • screen.width
  • screen.height

Why: Validates device type claims. A mobile claiming 2560x1440 is suspicious.

Device Class

Derived categorization: desktop, mobile, tablet:

  • Based on User-Agent and screen size
  • Cross-referenced for consistency

Why: Core targeting parameter. Mismatches indicate spoofing.

Platform

Operating system from navigator.platform:

  • Win32, MacIntel, Linux, iPhone, etc.

Why: Should match User-Agent OS. Discrepancies flag fraud.

Language

Browser language setting:

  • navigator.language

Why: Targeting parameter. Also useful for detecting geographic mismatches.

Timezone Offset

Difference from UTC in minutes:

  • new Date().getTimezoneOffset()

Why: Should roughly match geographic location. Major mismatches indicate VPN/proxy.

ASN (Autonomous System Number)

Network identification from IP address:

  • Identifies ISP or hosting provider
  • Distinguishes residential from datacenter traffic

Why: Datacenter ASNs are red flags. Residential ASNs suggest real users.

What This Data Cannot Do

Our minimal fingerprint is deliberately weak for cross-site tracking:

Not Unique Enough

Millions of users share the same User-Agent + screen size + timezone combination. We cannot identify individuals.

Not Persistent

User-Agent changes with browser updates. Timezone changes with travel. The fingerprint drifts over time.

Not Cross-Site

We only see data on our ad requests. We cannot correlate with other sites like Facebook/Google can.

How We Use This Data

Fraud Scoring

We check for internal consistency:

  • Does User-Agent match reported platform?
  • Does screen size make sense for device type?
  • Does timezone roughly match IP geolocation?
  • Is ASN residential or datacenter?

Inconsistencies raise fraud scores. Consistent data lowers them.

Frequency Capping

We create a non-unique bucket identifier:

  • Hash of IP + User-Agent + screen dimensions
  • Good enough to limit repeated impressions
  • Not precise enough to track individuals

Targeting Validation

We verify targeting claims:

  • Campaign targets mobile? Check device class.
  • Campaign targets Germany? Check timezone and language.
  • Campaign targets Chrome? Check User-Agent.

Privacy by Design

Our approach follows privacy-by-design principles:

Data Minimization

Collect only what serves a stated purpose. If we dont need it, we dont collect it.

Purpose Limitation

Data collected for fraud detection isnt repurposed for building user profiles or sold to data brokers.

Storage Limitation

Fingerprint data is transient. Used for real-time decisions, then discarded or aggregated into non-identifying statistics.

No Third-Party Sharing

We dont share fingerprint data with advertisers, publishers, or external parties. They see aggregate statistics, not individual fingerprints.

The Tradeoff We Accept

Our minimal approach means:

Less Precise Frequency Capping

Multiple users might share a bucket identifier. Some users might see ads slightly more than intended. We accept this imprecision to preserve privacy.

Less Fraud Signal

Sophisticated fraudsters can spoof our minimal data points. We rely on behavioral signals and external providers to fill gaps.

No Cross-Session Tracking

We cant recognize a returning user across sessions without cookies. Fine - thats not our business model anyway.

We believe advertising can work without surveillance capitalism. Our minimal fingerprinting proves it.

Share: