What are font file formats?
A font file format is a container specification — a set of rules for how glyph outlines, character mappings, and metadata are stored on disk. The same font can exist in multiple formats, and each format optimises for a different use case: desktop installation, print production, or web delivery.
The four formats you will encounter most often are TTF, OTF, WOFF, and WOFF2. They are not competitors in the sense that one replaces another — they are different containers for the same underlying font data. The glyphs inside a WOFF2 file are the same glyphs in the TTF it was converted from.
TTF (TrueType Font)
TrueType was developed by Apple in the late 1980s as a replacement for PostScript Type 1 fonts. It became the native font format on both Windows and macOS and remains the most widely distributed format on modern operating systems.
Key characteristics:
- Uses quadratic Bézier curves for glyph outlines (CFF uses cubic curves)
- Uncompressed — the file size is what you see
- Native support in Windows, macOS, Linux, iOS, and Android
- Contains basic OpenType tables (kerning, some ligatures) but not always the full feature set
When to use TTF: When a font foundry provides TTF as the primary source, or when you are installing a font on a desktop system. For web delivery, TTF should be converted to WOFF2.
OTF (OpenType Font)
OpenType was developed jointly by Microsoft and Adobe in the late 1990s as a unified format that could contain either TrueType or CFF (PostScript) outlines. In practice, most "OTF" fonts you download use CFF outlines, but OTF files can technically wrap TrueType data as well.
Key characteristics:
- Uses cubic Bézier curves (CFF flavour) or quadratic curves (TrueType flavour)
- Uncompressed — same file size as TTF for the same glyph set
- Full OpenType feature support: ligatures, small caps, old-style figures, contextual alternates, stylistic sets
- Preferred format for professional typography work
When to use OTF: For print design, professional typefaces with extended feature sets, and desktop installation when the foundry provides OTF. For web, convert OTF to WOFF2.
WOFF (Web Open Font Format)
WOFF was created in 2009 to solve a specific web problem: TTF and OTF files are uncompressed, making them slow to download. WOFF wraps the same font data in a container that applies zlib compression per table, plus a WOFF-specific header that adds metadata.
Key characteristics:
- Same glyph data as TTF/OTF, compressed with zlib
- Typically 40–60% smaller than the source TTF/OTF
- Supported by all browsers including IE11
- Reversible — WOFF decompresses to the exact original TTF/OTF
When to use WOFF: Rarely, in 2025. WOFF is only necessary if you explicitly need to support browsers older than 2016. For every other project, WOFF2 is strictly better.
WOFF2 (Web Open Font Format 2.0)
WOFF2 was finalised in 2018 as the successor to WOFF. It uses Brotli compression (developed by Google) instead of zlib, and it applies additional optimisations to the font structure itself, achieving roughly 30% smaller files than WOFF for the same content.
Key characteristics:
- Brotli compression plus structural optimisations
- Typically 30% smaller than WOFF, 60–70% smaller than TTF/OTF
- Supported by every browser released after 2016 (Chrome 36+, Firefox 39+, Safari 12+, Edge 14+)
- Reversible — decompresses to the same font data
When to use WOFF2: Always, for web delivery. It is the only font format you need in a modern project.
Real file size comparison
The following measurements are from the Inter variable font (weight 100–900), a widely used open-source typeface. The same font in four different formats:
| Format | File size | Relative to WOFF2 | Browser support |
|---|---|---|---|
| TTF | ≈ 813 KB | 7.9× larger | All browsers (via @font-face) |
| OTF | ≈ 813 KB | 7.9× larger | All browsers (via @font-face) |
| WOFF | ≈ 398 KB | 3.9× larger | All browsers (via @font-face) |
| WOFF2 | ≈ 103 KB | baseline | Chrome 36+, Firefox 39+, Safari 12+, Edge 14+ |
For a variable font with 100–900 weight range, serving TTF instead of WOFF2 adds 710 KB of unnecessary download — on a 4G connection, that is roughly 500 milliseconds added to your Largest Contentful Paint. Multiply by the number of fonts in your project and the impact compounds.
Browser support by format
| Format | Chrome | Firefox | Safari | Edge | Internet Explorer |
|---|---|---|---|---|---|
| TTF | ✓ | ✓ | ✓ | ✓ | ✓ (9+) |
| OTF | ✓ | ✓ | ✓ | ✓ | ✓ (9+) |
| WOFF | ✓ (5+) | ✓ (3.6+) | ✓ (5.1+) | ✓ (12+) | ✓ (9+) |
| WOFF2 | ✓ (36+) | ✓ (39+) | ✓ (12+) | ✓ (14+) | ✗ |
If your analytics show zero Internet Explorer users (as most modern sites now do), WOFF2 alone is sufficient. Ship only WOFF2 and save the extra deployment weight.
Licensing considerations
Converting between formats is generally permitted by most font licenses because it does not change the underlying glyph data — you are just wrapping it differently. However, the licence terms vary:
- SIL Open Font License 1.1 — permits conversion and subsetting freely
- Apache 2.0 — permits conversion and modification
- Commercial desktop licences — often permit conversion but restrict web embedding; check the specific web font licence
- Free-for-personal-use fonts — often prohibit commercial deployment in any format; converting does not change this
Always confirm the licence before converting or deploying a font, especially for commercial use. The License Metadata Viewer reads the embedded licence string from a font file, which is a starting point — but the definitive licence is the document shipped with the font, not the metadata.
Format recommendations by use case
| Use case | Recommended format | Rationale |
|---|---|---|
| Website delivery | WOFF2 | Smallest file, universal modern browser support |
| Email templates | WOFF (fallback to system fonts) | Limited format support; safer to use system fallbacks |
| Desktop installation | OTF (or TTF) | Native OS support, full feature set |
| Print production | OTF | Advanced OpenType features, CFF outlines preferred by print workflows |
| App development | TTF (or OTF) | Native support in Android, iOS, macOS, Windows |
| Legacy IE11 support | WOFF | Only format supported by IE that is smaller than TTF |
What actually happens when you convert
File format conversion is often misunderstood. The same font exists in different containers, and converting between containers is a mechanical operation — but only if the converter is doing real work.
Legitimate converters parse the source format's internal structure and re-serialize it into the target format's structure. A TTF to WOFF2 converter, for example, reads every table from the TTF, compresses them using Brotli, and writes a correctly-formed WOFF2 header and directory. The output is byte-for-byte different from the input, but semantically identical — the same glyphs, the same kerning, the same character mapping.
A fake converter simply renames the file extension. The result looks like font.woff2 but is actually a TTF file. Browsers will often accept it — they parse the magic bytes, not the extension — but the file is 7× larger than it needs to be, defeating the entire purpose of conversion. Worse, some CDNs and servers will serve it with the wrong MIME type, causing the browser to reject the font entirely.
Always verify conversion by checking file size. A real TTF to WOFF2 conversion should produce a file that is 60–70% smaller. If the output is the same size, the conversion did not happen.
Variable fonts: the format question changed
Variable fonts complicate the format question. A variable font file contains multiple weights and styles in a single container — the fvar table defines the axes, and the gvar table defines per-glyph adjustments. When served as WOFF2, a variable font file is often smaller than 3–4 static font files combined.
For example, Inter Variable at 100–900 weight is 103 KB as WOFF2. The same family as 9 static WOFF2 files would be roughly 700 KB total. For any project that needs more than two weights, the variable font is the strictly smaller choice.
See What is a Variable Font? for a complete guide to the format, and use the Variable Font Analyzer to inspect the axes of any variable font file.
Frequently asked questions
Which font format is best for web use?
WOFF2. It uses Brotli compression, is 30% smaller than WOFF and 60–70% smaller than TTF or OTF, and is supported by every modern browser.
What is the difference between TTF and OTF?
TTF uses quadratic Bézier curves and is the native font format on Windows and macOS. OTF can contain either TrueType or CFF outlines plus advanced OpenType features. In practice, both work on modern operating systems — the difference matters most for print and professional design workflows.
Is WOFF2 better than WOFF?
Yes. WOFF2 uses Brotli compression instead of zlib, typically producing 30% smaller files with identical glyph data. Supported by all browsers released after 2016.
Can I use TTF or OTF directly on a website?
Browsers accept them via @font-face, but they are 60–70% larger than the same font converted to WOFF2. This increases download time and can hurt Core Web Vitals LCP.
Does converting to WOFF2 lose font data?
No. WOFF2 is a lossless container format. Every glyph, table, and OpenType feature is preserved. Only the compression method changes.
Do I need to serve both WOFF and WOFF2?
Not in 2025. WOFF2 alone is sufficient for all browsers released after 2016. Serving WOFF as well only matters if you explicitly support browsers from before that date.