How the conversion works
Every conversion happens in your browser. Here is what actually changes inside the file, and what each conversion can and cannot preserve.
Two ways to draw a letter
Every font stores the shape of each glyph as a set of curves, but the two major formats disagree about which kind of curve to use. TrueType (TTF) uses quadratic Bézier curves, stored in a table called glyf. OpenType with PostScript outlines (OTF) uses cubic Bézier curves, stored in a table called CFF.
This is why renaming a .otf file to .ttf does not work: the extension changes but the curves inside do not, and software that expects TrueType outlines will reject it. A real conversion has to redraw every glyph.
Each cubic curve is approximated by one or more quadratic curves. A cubic cannot always be expressed as a single quadratic, so where the shape demands it the curve is split until the approximation is within a quarter of a font unit of the original — far finer than any screen or printer can resolve.
We then build new glyf and loca tables and carry across the rest of the font untouched, including the GPOS and GSUB tables that hold kerning pairs, ligatures and stylistic sets.
What is lost: PostScript hinting has no TrueType equivalent and is dropped, so very small text may render slightly differently on older rasterisers. Any embedded digital signature is removed, because changing the outlines invalidates it.
This direction is mathematically exact. Every quadratic curve can be written as a cubic with no loss of precision, so the glyph shapes come through identical. We generate a new CFF table and keep the font's existing layout tables.
A realistic expectation: converting to OTF does not add OpenType features. If the original TTF had no ligatures or alternates, the OTF will not have them either — those have to be designed into a font, not introduced by a format change. TrueType hinting instructions are dropped, as they do not apply to CFF outlines.
WOFF and WOFF2 are containers rather than outline formats. The glyphs are untouched; the font's tables are simply compressed and wrapped in a header designed for serving fonts over the web.
WOFF compresses each table with zlib. WOFF2 uses Brotli together with a transform that rewrites the glyph tables into a more compressible form, which is why it typically produces files around 30% smaller than WOFF. We use the reference WOFF2 encoder compiled to WebAssembly, so the output matches what other standard tools produce.
Unwrapping a WOFF or WOFF2 gives you back whatever was inside it. A WOFF built from an OTF will unwrap to an OTF, so we name the download accordingly rather than forcing a .ttf extension onto a file that is not TrueType.
Why nothing is uploaded
Browsers can read a file you select without sending it anywhere. All the conversion code runs on your machine, which means there is no upload wait, no queue, no server that could be breached, and no copy of your font for us to delete. It also means the site keeps working on a slow connection once the page has loaded. See our privacy policy for what we do collect.