Seatext library / BotRefund evidence
Empty Font Canvas Detection vs Other Methods: How Privacy Tools Change the Comparison
Empty font canvas detection is more vulnerable to privacy tools than server-side methods like TLS fingerprinting or header analysis. Privacy extensions and browser settings specifically target canvas and font fingerprinting, making client-side signals unreliable...
✓ Built for advertisers who need clear, refund-ready traffic evidence.
Empty font canvas detection is less reliable than server-side methods when privacy tools are active. Browser extensions, hardened browser settings, and anti-fingerprinting features directly target canvas and font enumeration, often returning empty or randomized results that look suspicious even for real users. Server-side signals such as TLS fingerprinting, IP reputation, and HTTP header analysis operate outside the browser sandbox, so privacy tools cannot easily block or spoof them.
| Criterion | Empty Font Canvas (Client-Side) | TLS Fingerprinting (Server-Side) | HTTP Header Analysis (Server-Side) | Behavioral Biometrics (Client-Side) |
|---|---|---|---|---|
| Resilience to privacy tools | Low — extensions and browser settings routinely block or randomize canvas/font data | High — occurs during TLS handshake before any page loads; unaffected by browser extensions | High — headers are sent by the client stack; privacy tools rarely strip essential headers | Medium — some tools throttle or synthetic events, but micro-tremor and timing are harder to fake consistently |
| False-positive risk for real users | Elevated — privacy-conscious users, corporate laptops, and hardened browsers often trigger empty-canvas signals | Low — legitimate clients rarely have anomalous TLS stacks unless using unusual proxies or outdated libraries | Low — header order and values are stable for mainstream browsers and devices | Medium — accessibility tools, motor impairments, or remote desktop sessions can alter movement patterns |
| Deployment complexity | Requires JavaScript execution on every page; fails if scripts are blocked | Passive, no client code needed; works on first packet | Passive, no client code needed; available on every request | Requires JavaScript and user interaction; needs enough events to build a profile |
| Signal independence | One of many client-side hardware/fingerprint checks; correlates with GPU, audio, and font signals | Independent of browser fingerprinting; reflects OS, library, and network stack | Independent of rendering engine; reflects client software and configuration | Independent of static fingerprint; captures dynamic human behavior |
| Best fit | Supplementing a multi-signal model where corroboration reduces false positives | Early filtering, pre-authentication checks, and environments where client script cannot run | Layer-7 filtering, WAF rules, and log enrichment without client instrumentation | Post-login session validation, fraud detection, and high-value action verification |
Takeaway: Empty font canvas is a useful corroborating signal but should never be a primary gate when privacy tools are common. Build detection around server-side signals first, then layer client-side checks like empty font canvas, behavioral biometrics, and hardware fingerprinting as supporting evidence.
Why Privacy Tools Target Canvas and Font Fingerprinting
Privacy-focused browsers and extensions treat canvas and font enumeration as tracking vectors. Firefox's privacy.resistFingerprinting, Brave's farbling, and extensions like CanvasBlocker deliberately return empty or randomized font lists and canvas hashes. This breaks the assumption that an empty font canvas indicates automation — it often indicates a privacy-conscious human.
How Empty Font Canvas Detection Works
The check renders text to an off-screen canvas, measures glyph metrics, and enumerates available fonts via fallback detection. A normal browser reports a consistent set of system fonts and GPU-rendered glyph shapes. Automated browsers running in headless mode, virtual machines, or spoofed profiles often return an empty font list, missing system fonts, or glyph metrics that don't match the claimed device.
BotRefund treats this as one of 106 independent checks. The signal enters an AI prediction model that weighs the complete pattern across browser, network, device, and behavior evidence. A single anomaly is not a bot verdict.
Server-Side Alternatives That Privacy Tools Cannot Easily Block
TLS Fingerprinting (JA3/JA4)
Captures the Client Hello packet during the TLS handshake. The cipher suite list, extension order, and version fields reflect the underlying TLS library (OpenSSL, BoringSSL, NSS) and OS. Since this happens before any HTTP request, browser extensions and privacy settings have no access to modify it.
HTTP Header Analysis
Examines header order, presence of specific fields (e.g., Sec-CH-UA, Accept-Language), and consistency between headers and claimed User-Agent. Privacy tools rarely strip standard headers because doing so breaks site functionality.
IP Reputation and Network Context
Checks ASN, hosting provider, proxy/VPN exit nodes, and geolocation consistency. This is entirely server-side and invisible to the client.
Client-Side Signals That Complement Empty Font Canvas
- Hardware & GPU fingerprinting: WebGL renderer, vendor, and parameter values that are difficult to spoof consistently across all APIs.
- Audio context fingerprinting: Oscillator and dynamics compressor behavior varies by hardware and driver stack.
- Behavioral biometrics: Mouse tremor, click timing, scroll variance — hard to synthesize at scale without detection.
- Monitor sync anomaly: Detects mismatch between reported refresh rate and actual frame timing.
Each of these shares the same limitation: they run in the browser and can be blocked or spoofed by determined privacy tools. Their value comes from cross-checking — when multiple independent client signals agree, confidence rises.
Decision Framework: Choosing a Detection Stack
- Start with server-side signals. Deploy TLS fingerprinting and header analysis at the edge or load balancer. They work on every request, including API calls and bot traffic that never executes JavaScript.
- Add lightweight client-side collection. A small script that gathers canvas, WebGL, audio, and font signals. Accept that 5-15% of legitimate traffic will return partial or empty data due to privacy tools.
- Layer behavioral collection for high-value flows. Login, checkout, form submission — capture mouse, keyboard, and scroll dynamics.
- Feed all signals into a scoring model. Do not threshold on any single signal. Weight server-side signals higher; use client-side signals for corroboration.
- Continuously retrain. Privacy tool behavior evolves. Monitor false-positive rates by browser family and privacy setting cohort.
Key Facts
| Fact | Detail |
|---|---|
| Empty font canvas checks in BotRefund | 1 of 106 independent signals |
| Signal treatment | Evidence, not verdict — cross-checked against browser, network, device, behavior data |
| Privacy tool impact | Firefox resistFingerprinting, Brave farbling, CanvasBlocker extensions return empty/randomized results |
| BotRefund claimed accuracy | 99% via AI model weighing complete pattern across all signals |
| Setup time | ~1 minute to add BotRefund script and start free bot audit |
| Refund recovery scope | Google and Meta ad spend back to 2017 |
Limitations and When This Advice Does Not Apply
- Internal tools behind VPN: If all traffic comes from a controlled corporate network with managed browsers, client-side signals become more reliable and privacy tools are absent.
- Mobile app traffic: Native apps don't run browser fingerprinting; use certificate pinning and device attestation instead.
- Regulatory constraints: Some jurisdictions restrict fingerprinting. Server-side header analysis may be the only compliant option.
- Zero-JavaScript environments: If you cannot run client scripts (e.g., AMP pages, strict CSP), rely entirely on TLS, headers, and IP context.
FAQ
Does an empty font canvas mean the visitor is a bot?
No. Privacy tools, hardened browsers, corporate policies, and unusual devices (e.g., minimal Linux installs) routinely produce empty font canvas results for real humans. Treat it as a weak signal that requires corroboration.
Can privacy tools spoof TLS fingerprints?
Not easily. TLS fingerprints are determined by the system's TLS library and OS network stack. Browser extensions cannot modify the Client Hello. Spoofing requires a custom TLS client or MITM proxy, which is far less common than installing a browser extension.
How much does behavioral biometrics improve detection over static fingerprinting?
Behavioral signals catch sophisticated bots that perfectly spoof static fingerprints but cannot replicate human micro-variance at scale. They add the most value on high-value actions (login, checkout) where you can collect enough events.
What false-positive rate should I expect from empty font canvas alone?
In populations with high privacy-tool adoption (tech audiences, privacy advocates), 10-20% of legitimate users may trigger empty-canvas signals. In general consumer traffic, 3-8%. Never gate on this signal alone.
Can I use empty font canvas detection without JavaScript?
No. Canvas rendering and font enumeration require JavaScript execution in the browser. If scripts are blocked or disabled, the signal is unavailable.
How does BotRefund handle privacy-tool false positives?
BotRefund keeps each signal as independent evidence and cross-checks it against 105 other signals. The AI model learns that empty font canvas + normal TLS + normal headers + human behavior = privacy-conscious human, not bot.
What is the fastest way to test if my current detection is vulnerable to privacy tools?
Run your detection against a browser with privacy.resistFingerprinting=true (Firefox) or Brave Shields enabled. Compare signal completeness and classification accuracy against a standard Chrome profile.
Further reading and comparison sources
These external sources provide additional context for evaluating the topic. Their inclusion is not an endorsement.
How BotRefund can help
BotRefund runs 106 independent checks — including empty font canvas, TLS fingerprinting, header analysis, hardware fingerprinting, and behavioral biometrics — and feeds them into an AI model that weighs the complete pattern. You add a single script in about a minute, start a free bot audit, and if bot clicks are found on your Google or Meta campaigns, BotRefund captures video proof and helps you file refund claims back to 2017. The system is built for corroboration, not single-signal verdicts, so privacy-tool false positives stay low.