Accurate browser and device fingerprinting for fraud prevention, run for you as a hosted service. A visitor id that survives cookie clearing, incognito, VPN and new accounts, with planned pricing from 0 USD a month.
No reasons: no list hit, no automation marker, no velocity rule reached.
Match type
token
Anonymity set
1
Incognito
no
Bot
not detected
POST /v1/checkevt_eh7uhsjjznxi3kfsimd5ipba3y
Visitor
v_ghbval7cranzf6t7abaa2kv4ek
Linked by the rule-based linker to a blocklisted visitor
Confidence
0.78
probable_blocklisted_visitor Probably a blocklisted visitor: reached through a linked match, so it challenges instead of denying
Match type
linked
Challenge
proof of work
Human review
required
Bot
not detected
POST /v1/checkevt_6cftklpvnhv4mg3ix7pelmqyzf
Visitor
v_j4xjciik5nr7n4dfgktcvw2ink
Exact match in a private window, anonymity set of 1
Confidence
0.95
visitor_blocklisted On your blocklist, matched by an exact hash at confidence 0.9 or more
Match type
exact
Incognito
yes
Human review
required
Bot
not detected
Example check response
knownprint, by the numbers
49 USD
A month for 3,000,000 identifications on Growth, planned
100,000
Free hosted identifications a month, planned
3
Verdicts. A probabilistic match never denies
1st party
Served from your own host
How it works
01
First party by construction
The agent script and the ingest endpoint are served from your own host on neutral paths, and the visitor cookie is set HttpOnly by that response. Filter lists have nothing third party to block, and Safari's list-based protections and ITP cookie caps leave collection intact.
02
Identity resolved on the server
The browser sends digests, a perceptual hash and raw scalars. The server recomputes every hash, masks known browser randomisation, and resolves a per-site visitor id: storage token, then exact match with an honest anonymity set, then a nine-rule linker, and later a learned pairwise matcher. Each answer reports its confidence, capped until measurements support more.
03
Transport signals when the topology allows
A Go edge terminates TLS and computes JA4, an HTTP/2 stable key and TCP, header order and latency signals. Behind your own proxy or CDN those signals are null unless a forwarding template passes them on, every event declares its availability, and bot, tampering, VPN and proxy confidence is capped at 0.7. The visitor id never depends on them. Nothing is guessed.
04
Verdicts with reasons
One call returns allow, challenge or deny with stable reason codes. Deny is reserved for automation markers and for blocklist entries on a visitor matched by token or exact hash at confidence 0.9 or more. A probabilistic match to a blocklisted visitor challenges instead: a proof of work solved in a background worker on signup, post and vote, or an email code through your own hook on login.
WebDriver flags, headless markers and DevTools Protocol side effects.
Anti-detect browser
Spoofed profiles whose signals disagree with each other.
Tampering
Overridden APIs and inconsistent engines, rule by rule.
Virtual machine
Software renderers and virtual GPUs, scored but never a verdict alone.
Multi-account
Accounts that share a device, with the related ids one call away.
VPN
Timezone against the IP's location, VPN and relay lists, and the TCP stack against the claimed OS.
Proxy
Residential and datacenter relays, and round trip times that disagree.
Tor
The public exit list, re-read every hour.
Datacenter
Cloud ranges and hosting ASNs.
JA4 TLS
The TLS client hello: one value per Chrome release, because JA4 sorts the extensions Chrome shuffles.
HTTP/2 and TCP
Settings frames, header order, the original SYN.
Allow
A known visitor, or a new one with nothing against it. Your request proceeds.
Challenge
A probabilistic match to a blocklisted visitor, an address or network on your blocklist, or a velocity rule you enabled. Signup, post and vote get a proof of work solved in the background; login gets an email code through your hook.
Deny
Only for automation markers and blocklist hits on a visitor matched by token or exact hash. Nobody is denied on a probabilistic match.
Planned pricing
Pay for what you resolve.
Free
0 USD
100,000 identifications a month
Hobby
9 USD / mo
500,000 identifications a month
Growth
49 USD / mo
3,000,000 identifications a month
Scale
199 USD / mo
20,000,000 identifications a month
What a month would cost
Planned prices, estimates only
Estimated monthly cost in USD at four volumes
Identifications a month
knownprint, planned
Commercial API at list price
100,000
0.00 Free
419.00
1,000,000
49.00 Growth
4,019.00
3,000,000
49.00 Growth
12,019.00
20,000,000
199.00 Scale
80,019.00
1,000,000
10,00050,000,000
knownprint, planned
49.00USD / mo
Growth plan, estimate
Commercial API at list price
4,019.00USD / mo
99 USD for 20,000, then 4 USD per 1,000
Commercial figures use the published list price; negotiated enterprise prices are lower and not published. knownprint totals round to whole cents.
Paid plans add 0.20 USD per 1,000 above their allowance; Free stops at its allowance. Every plan gets every feature, the same rate limits and the EU and US regions; plans differ only in volume, retention, list entries, webhooks, environments and team members.
For scale: at list price, a widely used commercial fingerprinting API costs about 4,019 USD a month for one million identifications (99 USD for 20,000, then 4 USD per 1,000), before any negotiated discount. Growth is planned at 49 USD and includes three million.
Why it exists
“I run scriptblox, a Roblox script community, and could not keep banned users out. A banned member came back in minutes with a new account, a cleared browser or a VPN, and IP bans punished whole schools. The accurate commercial answer cost thousands a month at a volume one small server can carry. So I built the thing I needed.”
The knownprint founder. Built for scriptblox first, and now for any site with the same problem.
Questions
Does it work in incognito and after clearing cookies?
On desktop browsers, usually yes. The visitor id lives on the server, so when the cookie is gone the server recomputes every hash from what the agent sends, masks known browser randomisation and looks for an exact match, reporting how many devices share it; a rule-based linker, and later a learned matcher, follow browsers that have changed. iPhones of one model look nearly identical, so there knownprint reports a larger anonymity set instead of claiming a match it cannot make. A probabilistic match to a banned visitor gets a challenge, never a deny.
What about ad blockers and Safari?
Nothing loads from a third party. The agent and its endpoints are served from your own host under /kp/ paths, and the cookie is set HttpOnly by that same host, so Safari's list-based protections and its 7 day cookie cap do not apply to it. knownprint does not rotate paths or disguise itself to slip past filter lists; if a visitor blocks it on purpose, the form arrives without a request id and your backend can answer with a challenge.
What does it collect, and is it lawful to use?
By default the agent runs only when someone signs up, logs in, posts or votes, and sends rendering digests (never pixels), browser and device attributes, integrity markers, the IP address and, as a bot signal, a few counts and timings of pointer, key and scroll events; it never reads page content, typed text, key values or email addresses. Visitor ids are random per site and device data is stored as keyed digests, so ids cannot be joined across sites, and nothing is used for advertising or cross-site tracking. Raw values are kept 30 days and events 90 days by default, with IP addresses truncated after 30 days. A security-only profile and a consent flag let each site match its own legal basis; the site remains the controller, with knownprint as its processor, and the notice and assessment templates are drafts awaiting counsel review.
Where does it run?
On knownprint's hosted service, with EU and US regions planned; there is no self-hosted version. You add a short proxy rule, so your web server or CDN forwards the /kp/ paths to knownprint and the agent and its endpoints are still served from your own domain. Nothing is shared between sites unless a site opts in to the cross-site index.
How do you state accuracy?
Every accuracy number names the gate behind it: G0 for synthetic data in CI, G1 for a lab corpus of real devices, G2 for labelled pairs from production. The targets are pairwise precision of at least 0.995 and recall of at least 0.90 after 7 days on desktop; before launch only G0 results exist, and the real-device gate switches on once the corpus holds 400 positive and 3,000 hard negative pairs. Confidence is meant as the probability that a match is right and stays capped until data supports more: at most 0.95 for an exact match, lower when devices share the hash, and 0.8 for a linked match until 400 real positives exist for that browser family. When your setup hides transport signals they are reported as unavailable, never guessed, and bot, tampering, VPN and proxy confidence is held at 0.7 or below.
Can a probabilistic match ban someone?
No. Deny is reserved for a deterministic automation marker and for a blocklist entry on a visitor matched by its token or an exact hash at confidence 0.9 or more, and the policy table refuses any other deny rule. A linked or learned match to a blocklisted visitor returns challenge with the reason probable_blocklisted_visitor, and every deny or challenge other than one for automation is marked for human review. Review and appeal stay with your moderators, and shadow mode records verdicts without acting on them while you check them.
How is it different from open source fingerprinting libraries?
Open source fingerprinting libraries compute a hash in the browser and stop there: the id changes when the browser does, and no server checks the result. knownprint's server recomputes every hash from raw values under a single-use challenge token, follows visitors whose browsers changed, and adds bot, tampering and network signals with an allow, challenge or deny answer for your backend.
When does it launch?
There is no date yet. knownprint is built in stages: first protecting the community it was made for, then the remaining signals, the dashboard and SDKs for more languages, then the hosted plans above, which are the launch, then a learned matcher. The waitlist gets one email at launch and nothing else.
Know who came back.Be first to know when it ships.
One email when knownprint launches. Stored until then, removable any time. Privacy.
You are on the list.
One email to when knownprint launches. Nothing else.