Font Language Checker

Upload a font and see which scripts it can actually set, which languages that covers, and exactly which characters are missing from the ones it only half supports. Nothing is uploaded to a server.

Drop a font here, or click to choose one

.ttf · .otf · .woff · .woff2  ·  up to 20 MB

The font is read on your own device. Nothing is sent to this site, and nothing is stored.

How to use this tool

  1. Drop a font file onto the box above. TTF, OTF, WOFF and WOFF2 all work.
  2. Read the three totals – supported, partial, missing. Click any of them to filter the list below to just that group.
  3. Look at the partial rows first. Those are the ones that will catch you out: the font mostly works for that language and then drops a character in the middle of a word.
  4. Check the missing characters listed under each partial row and decide whether they appear in your actual copy.
  5. Export the report if you need to send it to a foundry or record it against a project.

What "supported" means here, and what it does not

A script is marked supported when the font contains a glyph for every character in the reference set for it. That is a real and useful test – it is the difference between text rendering and text appearing as a row of boxes.

It is not the whole story. Coverage means the glyphs exist. Arabic, Devanagari, Bengali, Tamil and Thai also need shaping rules to be typeset correctly: contextual forms that change a letter's shape depending on its neighbours, conjuncts that fuse consonants, marks that must sit in the right place above or below. A font can carry every character in the list and still set the language badly.

So read the result in one direction with confidence and the other with care. If a script shows as missing, the font definitely cannot set that language. If it shows as supported, the font is worth testing – with real copy, in front of someone who reads it.

Why the check uses a reference set rather than the whole block

Each script is measured against a fixed list of the characters it genuinely needs, not against its entire Unicode block. Most blocks contain unassigned code points and historical characters nobody sets any more, so measuring against the block makes every font on earth look about 60% covered and the percentage stops meaning anything.

Reading a partial result

A percentage on its own is not actionable – 94% coverage tells you nothing about whether the gap matters. That is why every partial row lists the characters that are actually absent. Seeing that the four missing characters are Ă ă Ș ș tells a Romanian typesetter everything they need to know in a second, where "94%" would have told them to go and find out.

For the full picture of a file – metrics, licensing, OpenType features, variable axes – use the font analyzer. To test one specific character or a whole passage, the character checker is more direct. And to see how the font actually looks setting your text, try the font previewer.

Frequently asked questions

Drop the font file onto this page. It reads the font's character map and reports every script it can set, every script it cannot, and for the ones in between, exactly which characters are missing. Nothing is uploaded - the file is read in your own browser.

Not on its own. Coverage means the glyphs are present, which is a real test - it is the difference between text rendering and text appearing as boxes. But Arabic, Devanagari, Bengali, Tamil and Thai also need shaping rules: contextual forms, conjuncts, mark positioning. A font can carry every character and still set the language badly.

Completely in one direction. If a script shows as missing, the font definitely cannot set that language. If it shows as supported, the font is worth testing - with real copy, in front of someone who reads it.

Because most blocks contain unassigned code points and historical characters nobody sets any more. Measuring against the whole block makes every font look about 60% covered and the percentage stops meaning anything. The reference sets are the characters each script genuinely needs.

The font has most of the script but not all of it, which is the case most likely to catch you out - the text mostly works and then drops a character in the middle of a word. Every partial row lists the characters that are actually absent, because 94% tells you nothing about whether the gap matters.

TTF, OTF, WOFF and WOFF2. WOFF2 files are unpacked in your browser first, since the parser cannot read the compressed form directly.

Yes - copy it as JSON or download it. Useful when you need to send a foundry a precise list of what is missing, or record which build of a font you tested.