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
- Drop a font file onto the box above. TTF, OTF, WOFF and WOFF2 all work.
- Read the three totals – supported, partial, missing. Click any of them to filter the list below to just that group.
- 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.
- Check the missing characters listed under each partial row and decide whether they appear in your actual copy.
- 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.