ALPHA

Work in progress. Breaking changes may happen without notice.

OpenClientID | Open source fingerprinting

Open-source browser and device fingerprinting for fraud prevention

OpenClientID combines browser, device, network, and server signals into a composite fingerprint for anti-fraud and customer tracking, without relying on a brittle single hash.

Your composite fingerprint

loading
fingerprint
slice

Visitor identity

Hello, Unavailable

Visits: UnavailableLast seen: UnavailableStatus: Unavailable

Derived from component

Loading browser and device signals...

Raw component value

Loading component value...

Easy to get started

Add OpenClientID in minutes and start collecting fingerprinting signals immediately.

bun add openclientid

Initialize fingerprint

const fp = await getFingerprint()

Server-side fingerprinting

OpenClientID fingerprints server and network signals in addition to browser and device signals. That includes JA4 , IP addresses, and other server-side indicators. You can self-host the full stack, or sign up and use the managed cloud platform.

Your IP

Unavailable

Your JA4

Unavailable

Client risk

Loading...

Server risk

Loading...

Combined risk

Loading...

Disclaimer: "JA4" is a trademark of FoxIO.

Key features

Composite fingerprints for partial matching

Partial matches help you identify returning users even when the full fingerprint changes.

Fully open source & fully self-hostable

Includes a fingerprinting backend written in Rust.

Extendable & customizable

Want to fingerprint more signals? Add your own components.

We fingerprint a lot

Covers everything ThumbmarkJS and FingerprintJS do (and more).

Pricing

Use OpenClientID however you want: fully free and self-hosted, or managed in the cloud.

Open source and free forever

The OpenClientID library is free to use with unlimited local fingerprints. You can self-host server fingerprinting yourself at no license cost.

Managed cloud is optional

Cloud plans are for hosted infrastructure, team workflows, and managed billing. Use them only if you prefer not to operate the stack yourself.

Free

For prototyping and early experiments.

€0/month

Included5,000 calls

OverageHard block

Most popular

Starter

For teams shipping their first integration.

€9/month

Included50,000 calls

Overage€0.50 / 1k calls

Pro

For production traffic and analytics.

€49/month

Included500,000 calls

Overage€0.30 / 1k calls

Enterprise

Custom limits, deployment, and support.

Custom

IncludedCustom

OverageVolume discount

One changed signal should not break identity

User adds a new preferred browser language.

Accept-Language updates from en-US to en-US,de-DE.

FingerprintJS-style single hash

Before

9f3b7b1c5d2e4f80a6c9d7e1

After one signal changes

c5d2e4f8aa6c9d7e14c1d8a9

Match result: no match

Small browser changes produce a new full hash, so this session looks like a different visitor.

OpenClientID composite matching

Before

loading
-fingerprint
-slice

After one signal changes

newsegment
-fingerprint
-slice

Match result: partial match

Only one component changes. The remaining components keep the visitor linked to the same identity.

What we fingerprint

Signals span browser, device, network, rendering, storage, performance, and infrastructure layers.

User agentBrowser versionPlatformLanguageTimezoneScreen resolutionColor depthCPU coresDevice memoryTouch pointsCanvas outputWebGL rendererAudio contextFont metricsInstalled fontsDo Not TrackCookie supportLocal storageSession storageIndexedDB behaviorWebRTC hintsMedia devicesBattery API hintsPerformance timingNetwork RTT hintsTLS fingerprint (JA4)IP address patternsASN / network metadataHeader orderAccept-* headersConnection hintsProxy indicatorsServer TLS detailsRequest cadenceOS fingerprint signalsBrowser feature flagsUser agentBrowser versionPlatformLanguageTimezoneScreen resolutionColor depthCPU coresDevice memoryTouch pointsCanvas outputWebGL rendererAudio contextFont metricsInstalled fontsDo Not TrackCookie supportLocal storageSession storageIndexedDB behaviorWebRTC hintsMedia devicesBattery API hintsPerformance timingNetwork RTT hintsTLS fingerprint (JA4)IP address patternsASN / network metadataHeader orderAccept-* headersConnection hintsProxy indicatorsServer TLS detailsRequest cadenceOS fingerprint signalsBrowser feature flags

Evidence-backed comparison

ThumbmarkJS vs FingerprintJS vs OpenClientID

All non-`TODO` claims are mapped to local repository evidence paths. Fingerprint factor support below compares OSS client registries.

Feature comparison

Open-source client

ThumbmarkJSSupported
FingerprintJSSupported
OpenClientIDSupported

Open-source backend

ThumbmarkJSNot included
FingerprintJSNot included
OpenClientIDSupported

Full-stack self-hosting (client + backend)

ThumbmarkJSNot included
FingerprintJSNot included
OpenClientIDSupported

Composite matching

ThumbmarkJSTODO: verify
FingerprintJSTODO: verify
OpenClientIDSupported

Server-side signals

ThumbmarkJSTODO: verify
FingerprintJSTODO: verify
OpenClientIDSupported

Extensibility

ThumbmarkJSSupported
FingerprintJSSupported
OpenClientIDSupported

Managed cloud optional

ThumbmarkJSTODO: verify
FingerprintJSSupported
OpenClientIDSupported

Identifier model

ThumbmarkJSSupported
FingerprintJSTODO: verify
OpenClientIDSupported

Total supported fingerprinting factors

ThumbmarkJS32

FingerprintJS46

OpenClientID58

Fingerprinting factors

Expand to view the full per-factor comparison.

Pricing comparison

Snapshot values preserve native currencies (`€`, `$`) and are shown without conversion.

Open-source client/library

ThumbmarkJS

Free

FingerprintJS

Free

OpenClientID

€0/month

Free API tier

ThumbmarkJS

Free

FingerprintJS

$0/month

OpenClientID

€0/month

Paid entry tier

ThumbmarkJS

15€ per month

FingerprintJS

$99/month

OpenClientID

€9/month

Higher paid tier

ThumbmarkJS

15€ per month

FingerprintJS

$99/month

OpenClientID

€49/month

Enterprise

ThumbmarkJS

Custom

FingerprintJS

Custom

OpenClientID

Custom

Included API calls

ThumbmarkJS

15,000

FingerprintJS

20,000

OpenClientID

50,000 calls

Additional API calls

ThumbmarkJS

€1.00 / 1,000

FingerprintJS

$4 / 1,000

OpenClientID

€0.50 / 1,000