fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward
home / fonts / woff2 · ttf · otf

Convert WOFF2 Font Free

Every font file is the same tables in a different wrapper

TrueType and OpenType files are a directory of 4-letter tables: cmap maps characters to glyphs, glyf or CFF holds outlines, name holds the family and licence, OS/2 the weight and embedding rights. WOFF compresses each table with zlib, and WOFF2 transforms glyf and loca and runs everything through one Brotli stream. Open a font, load the site’s own Geist from Google Fonts, or build a real pixel font here and type with it.

folder_openOpen a fontGeist WOFF2 (Google Fonts)Pixel font, TTFSame font as WOFF
Geist (latin subset): WOFF2 from fonts.gstatic.com/s/geist/v5/gyByhwUxId8gMEwcGFU.woff2…
WOFF2 header29.4 KB · decodes to 65.8 KB
0signature77 4F 46 32“wOF2”
4flavor00 01 00 0000010000: TrueType outlines
8length00 00 72 D829,400 bytes
12numTables00 1420
16totalSfntSize00 01 01 0865,800 bytes when decoded
20totalCompressedSize00 00 72 6229,282 bytes of Brotli
24version00 01 00 001.0
28metaOffset00 00 00 00none

Unnamed font

loaded by FontFace as “FFInspect2”
Ölmühle Café: 1,234 €
Ag100 · 95.4%
Ag200 · 96.9%
Ag300 · 98.5%
Ag400 · 100.0%
Ag500 · 102.5%
Ag600 · 104.9%
Ag700 · 107.4%
Ag800 · 109.8%
Ag900 · 112.3%
Widths change across weights: the font answers font-weight itself (variable or synthetic). Synthetic bold only appears at 600+ and widens by a fixed amount.
tagwhat it holdsstoredoriginalcheck
GDEFglyph classes for layout773 B773 B-
GPOSpositioning: kerning, marks20.4 KB20.4 KB-
GSUBsubstitutions: ligatures, alternates972 B972 B-
HVARmetric variations987 B987 B-
MVARmetric variations60 B60 B-
OS/2weight, width, embedding rights, line metrics96 B96 B-
STATstyle attributes184 B184 B-
cmapcharacter → glyph map656 B656 B-
fvarvariation axes and named instances126 B126 B-
gaspgrid-fitting hints by size8 B8 B-
glyfTrueType quadratic outlines · transformed12.1 KB15.2 KBv0
locawhere each glyph starts in glyf · transformed0 B578 Bv0
gvarglyph variations21.6 KB21.6 KB-
headunits per em, dates, bounding box54 B54 B-
hheahorizontal metrics header36 B36 B-
hmtxadvance widths1.2 KB1.2 KB-
maxpglyph count and limits32 B32 B-
namefamily, style, version, licence strings1.1 KB1.1 KB-
postPostScript names, italic angle1.5 KB1.5 KB-
prephinting setup program7 B7 B-
BrotliDecompressionStream("brotli") is not available in this browser: names, cmap and axes stay compressed. Chrome and Firefox decode WOFF2 internally for rendering.
family-
style-
version-
PostScript name-
designer / vendor-
licence-
copyright-
glyphs-
units per em-
weight / width-
line metrics-
dates-
variable axesnone
OpenType featuresnone found
coverage · measured by rendering

Which characters fall back to another font

Each character is measured twice with canvas measureText, once as “this font, then monospace” and once as “this font, then serif”. Equal widths mean this font drew it; different widths mean the browser fell back.

Basic Latin12/12
AaBbQqZz09&@
Latin-112/12
ÀÉÑÖßæøçðþ¿€
Latin Extended-A2/12
ĀČĐĞŁŐŒŠŽŵįğ
Greek0/12
ΑΒΓΔΩαβγδλπω
Cyrillic0/12
АБВГДЖЯабвжя
Vietnamese & IPA4/12
ẠẢẤỆỹơưɐəŋʃʒ
Punctuation & symbols9/12
“”‘’--…•‰№™→
Arabic, Hebrew, CJK11/11
عربيעבר漢字かナ
check_circleWOFF2.Ratio 45% of the decoded font; glyf/loca transformed before Brotli.
check_circleHinted (TrueType instructions).fpgm/prep/cvt add size but sharpen small sizes on Windows.
font builder · a real TrueType file, compiled in this tab

Draw a letter, get a font

Each lit pixel becomes a square contour in glyf. The page writes head, hhea, maxp, OS/2, hmtx, cmap, loca, glyf, name and post with correct checksums, loads the result through the FontFace API, and wraps it as WOFF 1.0 with zlib. Pick a letter and click cells to change it.

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.!?-
FILE FORMER 2026!
FontFace accepted it: 42 glyphs, TTF 14.6 KB, WOFF 1.9 KB (13%). Lowercase maps to the same glyphs.
OS/296 B
cmap580 B
glyf13.0 KB
head54 B
hhea36 B
hmtx168 B
loca172 B
maxp32 B
name326 B
post32 B

Reference

wrappermagicMIMEhow tables are storedthis browser
TrueType00 01 00 00font/ttftable directory + raw tables; quadratic glyf outlinessupported
OpenType CFF“OTTO”font/otfsame directory; cubic CFF/CFF2 outlinessupported
Collection“ttcf”font/collectionseveral fonts sharing tables (e.g. CJK families)-
WOFF 1.0“wOFF”font/woffeach table zlib-compressed separately, plus optional XML metadatasupported
WOFF2“wOF2”font/woff2glyf/loca/hmtx transformed, then one Brotli stream: ~30% smaller than WOFFsupported
EOTbyte 34: 4C 50application/vnd.ms-fontobjectInternet Explorer only, retired-
fsTypeembedding permission (OS/2)
0installable: no restriction
2restricted licence: no embedding
4preview & print: embed read-only
8editable: embed in editable documents
0x100no subsetting
0x200bitmap embedding only
MIMEfont/ttf, font/otf, font/collection, font/woff, font/woff2 (RFC 8081)
Outlinesglyf: quadratic B-splines; CFF/CFF2: cubic Béziers; COLR/SVG/sbix/CBDT for colour
Unitscoordinates in font units; unitsPerEm is usually 1000 (CFF) or 2048 (TrueType)
Dateshead stores seconds since 1 January 1904
Limits65,535 glyphs per font (16-bit glyph IDs); cmap maps any Unicode code point
SubsettingGoogle Fonts splits families by unicode-range so pages only download needed scripts
CORSbrowsers require Access-Control-Allow-Origin for cross-origin web fonts
1991TrueTypeApple ships TrueType in System 7; Microsoft licenses it.
1996OpenTypeMicrosoft and Adobe unify TrueType and PostScript outlines.
2009WOFFMozilla, Opera and Microsoft propose a web wrapper.
2012WOFF 1.0W3C Recommendation.
2016Variable fontsOpenType 1.8 adds fvar, gvar and axes.
2017RFC 8081The top-level font/ media type.
2018WOFF2W3C Recommendation with Brotli and table transforms.

Working with fonts