ThumbmarkJS

See Thumbmark in action

Hi, loading...

Your thumbmark is loading... !

If you'd run this code in your browser console:

1import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs@rc/dist/thumbmark.umd.js')
2.then(() => {
3  const tm = new ThumbmarkJS.Thumbmark(
4    // { api_key: 'YOUR_API_KEY' } // Optional, but leaving out changes the thumbmark
5  );
6  tm.get().then((res) => {
7      console.log(res)
8  })
9})

You should see something like this:

1{}

So what is this?

ThumbmarkJS is a browser fingerprinting library that calculates a unique identifier based on carefully selected browser, device and http request characteristics. This digital fingerprint, called a thumbmark, is designed to be stable across sessions and resistant to simple anti-fingerprinting techniques. Your thumbmark looks like this:loading...

Your visitorId (loading...) is an even more stable identifier stored both in the browser and the server side, glued together by the thumbmark and some logic. The visitorId is not a calculation of technical components, but a helper identifier that works as a fallback when the thumbmark changes. It is generated by the server side, and is therefore not available in the open source version.

In the open source version, the thumbmark is generated from the browser's characteristics only. When the API is used, the thumbmark becomes more unique due to the added server-side components. The even more powerful visitorId is only available when the API is used.

The main purpose of ThumbmarkJS is to provide a reliable way to identify users without relying on tracking methods that can be easily blocked or deleted. Thumbmark also provides some basic classification of the client, such as whether it is a Tor exit node, VPN, or datacenter IP.

Head over to the ThumbmarkJS GitHub repository for the actual documentation.

A persistent digital fingerprint for the browser.

Refreshing the page or opening it in a new tab or a private tab should not change the thumbmark. If it does change, please open an issue.