Font Fingerprinting
Installed fonts and font rendering differ across platforms. BotBrowser protects against font-based tracking with consistent metrics and cross-platform rendering.
Prerequisites
- Familiarity with Browser Fingerprinting Explained.
- BotBrowser installed with a valid profile. See Installation.
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=realClientRects 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=trueNoise Seed
Use --bot-noise-seed for reproducible font metrics:
--bot-noise-seed=42Cross-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:
- Launch BotBrowser with a profile and visit a fingerprint testing site such as BrowserLeaks or CreepJS .
- Confirm that the reported font list and text metrics match the profile configuration, not the host machine.
- To verify reproducibility, launch two sessions with the same
--bot-noise-seedand confirm that the font measurement output is identical.
Troubleshooting / FAQ
| Problem | Solution |
|---|---|
| Font list shows host system fonts | Ensure --bot-config-fonts=profile is set. The real mode disables font protection. |
| CJK text renders with missing glyphs | Verify the profile includes appropriate CJK fonts. Windows and macOS profiles include CJK support by default. |
| Font metrics differ between headless and headful mode | Both modes should produce identical metrics with a profile loaded. Check that the same profile and flags are used. |
| ClientRects values vary between sessions | Use --bot-noise-seed for reproducible measurements. Without a fixed seed, noise varies per session. |
Next Steps
- CJK Font Rendering. Chinese, Japanese, and Korean font rendering consistency across platforms.
- CSS Signal Consistency. How CSS features reveal platform information through fonts and system colors.
- Canvas Fingerprinting. Font rendering affects Canvas fingerprints.
- Browser Fingerprinting Explained. The broader fingerprinting landscape.
- CLI Flags Reference. All font and noise configuration flags.
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.