# TTF to WOFF2 Converter

> Convert TrueType (.ttf) fonts to optimized WOFF2 web fonts.

TTF to WOFF2 Converter converts font files between TTF, OTF, WOFF, WOFF2, and Base64 CSS definitions locally in your web browser. Font data processing runs entirely on your device without transmitting files over the network.

**URL:** https://convertto.tech/t/ttf-to-woff2
**Category:** Developer Tools (https://convertto.tech/c/developer-tools)
**Privacy:** Runs entirely in the browser; no upload
**Cost:** Free, no sign-up
**Last updated:** 2026-08-01

## Key facts

- **Privacy:** Runs entirely in your browser — nothing is uploaded
- **Cost:** Free, unlimited, no sign-up

## WOFF2 is the format to serve

A `.ttf` on a web server is a font with no compression at all beyond whatever the transfer encoding adds. WOFF 2.0 exists to fix that. It applies a reversible transform to the `glyf`, `loca` and `hmtx` tables so their contents compress better, then runs Brotli over the whole font. The result carries the same tables the source did, decodes back to them exactly, and is markedly smaller than either the raw sfnt or the same font in WOFF 1.0.

Nothing about the typeface changes. Outlines, `cmap`, hinting, `GSUB` and `GPOS` features and every variable-font axis are all carried through unaltered. Packaging a font as WOFF2 is a delivery decision, not a design one.

## Writing the @font-face rule

```css
@font-face {
  font-family: 'Example Sans';
  src: url('/fonts/example-sans.woff2') format('woff2'),
       url('/fonts/example-sans.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+2000-206F;
}
```

Order matters: a browser takes the first `src` entry whose `format()` it understands, so WOFF2 goes first. `font-display: swap` decides what the user sees while the file is in flight. `unicode-range` lets you split a large family into several files and have the browser fetch only the ranges a page actually renders, which is the single biggest win available on a multilingual site.

## Do you still need a WOFF fallback?

Every current browser engine reads WOFF2. WOFF 1.0 is only reached by old Internet Explorer and Edge builds and by long-unsupported Safari and Android stacks. If your analytics show none of those, a single WOFF2 source is enough and the second line is dead weight. If you do keep a fallback, [TTF to WOFF](https://convertto.tech/t/ttf-to-woff) produces it, and the raw `.ttf` is not the right fallback: it is larger than both.

## Subset before you compress

Compression cannot remove glyphs you never use, and for most Latin sites the majority of a font file is glyphs the site will never render. Subsetting first and packaging second routinely beats packaging alone by a wide margin, and it is the step people skip. The same goes for layout tables: a site that uses no small caps and no old-style figures is shipping `GSUB` rules for both.

> **Variable fonts change the arithmetic** — One variable file covering a weight axis is usually smaller than four static weights, and it is one request instead of four. If you already ship regular, medium, semibold and bold, check the variable version of the family before you optimise the static files any further.

| Format | Outline data | Compression | Where it belongs |
| --- | --- | --- | --- |
| `.ttf` TrueType | Quadratic curves in the `glyf` and `loca` tables | None | Desktop installation, Android build pipelines, tools that only read `glyf` |
| `.otf` OpenType with PostScript outlines | Cubic curves in a `CFF ` or `CFF2` table | None | Desktop installation, print and design applications |
| `.woff` WOFF 1.0 | Whichever of the two the wrapped font already used | zlib, applied to each table separately | A fallback source for browsers too old for WOFF2 |
| `.woff2` WOFF 2.0 | Whichever of the two the wrapped font already used | Brotli over the whole font, after a reversible transform of `glyf`, `loca` and `hmtx` | The format to actually serve on the web |
| `.eot` Embedded OpenType | Either, wrapped in a Microsoft-specific container | Optional MicroType Express | Internet Explorer 8 and earlier. A W3C Member Submission that never became a standard |
| `.ttc` / `.otc` collection | Either, with tables shared between several faces | None on its own, though WOFF2 can wrap a collection | Shipping a whole family in one file, common for CJK fonts |

*TTF and OTF are two flavours of the same sfnt container. WOFF and WOFF2 are packaging placed around one of them, not a third kind of outline.*

> **Check the licence before you convert** — Converting a font modifies it, and plenty of commercial licences forbid exactly that. A licence that allows you to install a font on your own machine very often does not allow you to embed it in a web page, redistribute it, or hand a converted copy to anyone else. The OpenType `OS/2` table carries an `fsType` field in which the foundry declares its embedding permission, with values covering installable, restricted licence, preview and print, and editable embedding, and a converter that rebuilds the font can drop or flatten that declaration. Read the EULA first, and use the foundry web kit when one is offered.

## Related font conversions

- [TTF to WOFF](https://convertto.tech/t/ttf-to-woff) for the older fallback source.
- [WOFF2 to TTF](https://convertto.tech/t/woff2-to-ttf) to unwrap a web font again.
- [OTF to TTF](https://convertto.tech/t/otf-to-ttf) when the source family ships PostScript outlines.
- [Font to Base64](https://convertto.tech/t/font-to-base64) for the inline alternative, and its trade-offs.
- [Font availability checker](https://convertto.tech/t/font-availability-checker) to see which faces visitors already have.
- Format hubs: [WOFF2](https://convertto.tech/f/woff2), [TTF](https://convertto.tech/f/ttf), [WOFF](https://convertto.tech/f/woff) and [OTF](https://convertto.tech/f/otf).

## How to use

1. Select your font file — the file stays on your device and is never uploaded.
2. Press Run, then download the result when it is ready.

## FAQ

### Is my font file uploaded anywhere?

No, font conversion happens entirely in your browser using JavaScript.

### What is the difference between OTF and TTF?

Both are OpenType fonts using the same sfnt container. A TTF stores glyph outlines as quadratic curves in the glyf and loca tables; an OTF stores them as cubic curves in a CFF or CFF2 table. The extension reflects which outline format the file uses, and the rasteriser decides by reading the version tag inside the file rather than the extension.

### Is converting a font lossless?

Unwrapping WOFF or WOFF2 back to sfnt is defined to be reversible, so the table data comes back intact. Converting between outline formats, such as OTF to TTF, is not: cubic curves have to be approximated by quadratics, and hinting and variable-font axes do not carry over.

### Am I allowed to convert a commercial font?

Often not. Many font licences forbid modification, web embedding or redistribution, and converting a font is a modification. The OS/2 table carries an fsType field in which the foundry declares its embedding permission. Check the EULA before converting a font you did not make.

### Can I convert an EOT or TTC file here?

No. This tool accepts TTF, OTF, WOFF and WOFF2. EOT is a retired Microsoft container for Internet Explorer 8 and earlier, and TTC is a collection holding several faces in one file, which needs a different unpacking step.

## Sources

- [OpenType specification](https://learn.microsoft.com/en-us/typography/opentype/spec/) — Microsoft
- [OpenType font file structure (sfnt)](https://learn.microsoft.com/en-us/typography/opentype/spec/otff) — Microsoft
- [WOFF File Format 1.0](https://www.w3.org/TR/WOFF/) — W3C
- [WOFF File Format 2.0](https://www.w3.org/TR/WOFF2/) — W3C
- [OpenType OS/2 table (fsType embedding permissions)](https://learn.microsoft.com/en-us/typography/opentype/spec/os2) — Microsoft
- [RFC 7932: Brotli Compressed Data Format](https://www.rfc-editor.org/rfc/rfc7932) — IETF
- [CSS Fonts Module Level 4](https://www.w3.org/TR/css-fonts-4/) — W3C

## Related tools

- [Font to Base64 & CSS Generator](https://convertto.tech/t/font-to-base64): Convert font files directly into CSS @font-face data URIs.
- [OTF to TTF Converter](https://convertto.tech/t/otf-to-ttf): Convert OpenType (.otf) fonts to TrueType (.ttf) format.
- [TTF to WOFF Converter](https://convertto.tech/t/ttf-to-woff): Convert TrueType (.ttf) fonts to Web Open Font Format (.woff).
- [WOFF to TTF Converter](https://convertto.tech/t/woff-to-ttf): Convert WOFF web fonts back to desktop TrueType (.ttf) fonts.
- [WOFF2 to TTF Converter](https://convertto.tech/t/woff2-to-ttf): Decompress WOFF2 fonts back to TTF format.
- [7Z to ZIP Converter](https://convertto.tech/t/7z-to-zip): Convert 7-Zip (.7z) archives into universal ZIP format.
- [GZIP to ZIP Converter](https://convertto.tech/t/gzip-to-zip): Convert GZ files into standard ZIP archives.
- [RAR to ZIP Converter](https://convertto.tech/t/rar-to-zip): Extract RAR archives and repackage contents into standard ZIP format.
