Skip to content
Convertto

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.

Runs in your browser
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

@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 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.

FormatOutline dataCompressionWhere it belongs
.ttf TrueTypeQuadratic curves in the glyf and loca tablesNoneDesktop installation, Android build pipelines, tools that only read glyf
.otf OpenType with PostScript outlinesCubic curves in a CFF or CFF2 tableNoneDesktop installation, print and design applications
.woff WOFF 1.0Whichever of the two the wrapped font already usedzlib, applied to each table separatelyA fallback source for browsers too old for WOFF2
.woff2 WOFF 2.0Whichever of the two the wrapped font already usedBrotli over the whole font, after a reversible transform of glyf, loca and hmtxThe format to actually serve on the web
.eot Embedded OpenTypeEither, wrapped in a Microsoft-specific containerOptional MicroType ExpressInternet Explorer 8 and earlier. A W3C Member Submission that never became a standard
.ttc / .otc collectionEither, with tables shared between several facesNone on its own, though WOFF2 can wrap a collectionShipping 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.

Frequently asked questions

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.

How to use the ttf to woff2 converter

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

Sources & specifications

Embed this tool

Put the working ttf to woff2 converter on your own site. It runs in your visitors' browsers exactly as it does here — free, no account, nothing uploaded.

Share this tool

Last updated

More developer tools