invisible layer / font-enumeration
experiment 36 · canvas api · no permissions
your fonts reveal
your identity.
By rendering text in 60 different fonts and measuring pixel widths, this page detects which fonts are installed on your system — without any permission, in under one second. Your font set is a fingerprint of your OS, region, and software stack.
60 font measurements. No permission asked. Your installed fonts identify your operating system, region, corporate software stack, and language. This technique has been used for cross-site tracking since 2010 and remains effective even in private browsing mode.
detected
not found
inferred os
press scan to detect installed fonts
▶ how font detection works

The technique is simple: create a hidden canvas, render the same string in two fonts simultaneously — the font being tested, with a monospace fallback. Measure the resulting text width.

If the tested font is not installed, the browser falls back to the generic monospace font and the width matches the baseline. If the tested font is installed, it uses that font's metrics — different character widths, different result.

The test string mmmmmmmmmmlli is chosen deliberately: it maximises the width difference between proportional and monospace fonts, making detection more reliable.

Font sets reveal a great deal:

  • Calibri, Segoe UI, Cambria — Microsoft Office / Windows installed
  • SF Pro, San Francisco, Osaka — macOS or iOS device
  • Ubuntu, Cantarell, Fira Sans — Linux desktop (GNOME/KDE)
  • Noto CJK, SimSun, SimHei — Chinese locale or language pack
  • Malgun Gothic, Gulim, Batang — Korean locale
  • Hiragino, Yu Gothic, Meiryo — Japanese locale
  • Arabic Typesetting — Arabic locale or Windows Arabic pack

This technique requires no permission and works in all major browsers. Brave Browser adds noise to canvas measurements which may reduce accuracy slightly.