Skip to Content
Fingerprint ProtectionFont Fingerprinting

Font Fingerprinting

Installed fonts and font rendering differ across platforms. BotBrowser protects against font-based tracking with consistent metrics and cross-platform rendering.


Prerequisites


Quick Start

chromium-browser \ --bot-profile="/path/to/profile.enc"

Start with this launch to establish a clean baseline before adding extra overrides.

Overview

Font availability and rendering behavior differ across operating systems, locales, and installations. Font metrics, glyph shapes, and sub-pixel positioning all vary across platforms. BotBrowser provides consistent font behavior through built-in font bundles and cross-platform rendering at the browser engine level.


Configuration

Font Mode

Control font behavior with the --bot-config-fonts flag:

# Use profile's embedded fonts (default) --bot-config-fonts=profile # Use profile fonts with system font fallback --bot-config-fonts=expand # Use real system fonts (no protection) --bot-config-fonts=real

ClientRects and Text Metrics Noise

BotBrowser applies deterministic noise to font measurement APIs:

# Enable ClientRects noise (default) --bot-config-noise-client-rects=true # Enable text rects noise (disabled by default) --bot-config-noise-text-rects=true

Noise Seed

Use --bot-noise-seed for reproducible font metrics:

--bot-noise-seed=42

Cross-Platform Font Rendering

BotBrowser addresses cross-platform font consistency through built-in font libraries and rendering engine integration:

Built-in font bundles:

  • Each profile includes the complete set of standard fonts for its target platform.
  • Font availability and enumeration results match what the target OS would report.

Rendering engine:

  • Built-in rendering produces consistent glyph rasterization regardless of the host operating system.
  • Built-in text shaping ensures identical text layout, ligature handling, and complex script rendering across platforms.

Result: A Windows profile running on a Linux server produces identical font metrics, glyph rendering, and font enumeration results as it would on actual Windows hardware. DOM text renders exclusively from the embedded font bundles, so layouts never fall through to host fonts.


Effect Verification

To verify protection is active:

  1. Launch BotBrowser with a profile and visit a fingerprint testing site such as BrowserLeaks  or CreepJS .
  2. Confirm that the reported font list and text metrics match the profile configuration, not the host machine.
  3. To verify reproducibility, launch two sessions with the same --bot-noise-seed and confirm that the font measurement output is identical.

Troubleshooting / FAQ

ProblemSolution
Font list shows host system fontsEnsure --bot-config-fonts=profile is set. The real mode disables font protection.
CJK text renders with missing glyphsVerify the profile includes appropriate CJK fonts. Windows and macOS profiles include CJK support by default.
Font metrics differ between headless and headful modeBoth modes should produce identical metrics with a profile loaded. Check that the same profile and flags are used.
ClientRects values vary between sessionsUse --bot-noise-seed for reproducible measurements. Without a fixed seed, noise varies per session.

Next Steps


Related documentation: Advanced Features: Cross-Platform Font Engine | Advanced Features: Multi-Layer Fingerprint Noise


Legal Disclaimer & Terms of Use Responsible Use Guidelines . BotBrowser is for authorized fingerprint protection and privacy research only.