How Thumbmark Works
Enterprise-grade browser fingerprinting built on a powerful two-layer architecture
Open Source Client Library
ThumbmarkJS is our fully open source client library that runs in the browser. It collects and analyzes browser signals to generate a unique fingerprint for each visitor.
Zero dependencies — works everywhere
Fully transparent and auditable
Runs entirely client-side
Generates stable fingerprints across sessions
// Install via npm
npm install @thumbmarkjs/thumbmarkjs
// Optionally install the React
npm install @thumbmarkjs/react
// or Vue integration package
npm install @thumbmarkjs/vueBackend API Enhancement
Our backend API receives fingerprints from the client and enhances them with additional intelligence. This two-layer approach dramatically improves both uniqueness and stability.
Enriches fingerprints with server-side intelligence
Tracks fingerprint evolution over time
Identifies bot and datacenter traffic
Maintains visitor identity across fingerprint changes
Built for Enterprise Scale
Thumbmark is designed from the ground up to handle enterprise traffic volumes and security requirements.
Global infrastructure
GDPR and privacy-first design
99.9% uptime SLA
Custom deployment options available
Open Core, Proprietary Enhancement
We believe in transparency where it matters. Our client library is fully open source so you can audit exactly what data is collected and how. The backend intelligence layer is proprietary, containing our accumulated learning and network effects.
Client library: MIT licensed, fully open source
Backend API: Proprietary algorithms and data
No vendor lock-in — client works standalone
Backend enhancement is optional but recommended
// Client library is MIT licensed
// Works standalone without the API
import { Thumbmark } from '@thumbmarkjs/thumbmarkjs';
const tm = new Thumbmark();
const result = await tm.get();
// Basic fingerprint (open source)
console.log(result.thumbmark);
// Enhanced with API key (proprietary backend)
const tmPro = new Thumbmark({ api_key: 'your-key' });
const enhanced = await tmPro.get();
console.log(enhanced.visitorId);Ready to see the difference?
Try our live demo or talk to our team about enterprise deployment
View Live Demo