Convert fonts.
TTF, OTF, WOFF & WOFF2 — converted right in your browser.
Drop font files here
or browse your files
Paste with ⌘V · or drop files anywhere on the page
Files never leave your device. Everything runs in your browser, nothing touches a server — tools you've used even work offline.
Convert fonts between TTF, OTF, WOFF, WOFF2 and even legacy EOT — entirely in your browser. These formats are different wrappers around the same font tables, so the conversion is true repackaging: glyphs, kerning and hinting come through untouched, and your font file never touches a server.
Before / after
WOFF2 — 60.5 KB — rendering this specimen
Sphinx of black quartz, judge my vow.
0123456789 — “fjord” & ligatures.
Original
176.3 KB
Compressed
60.5 KB
Saved
−66%
Real result, not a mock-up: the typeface this site is set in — Plus Jakarta Sans — went through the Font Converter tool as a desktop TTF and came out as WOFF2, packed by Google's woff2 encoder with Brotli inside: 176.3 KB down to 60.5 KB. The specimen below is rendered live by that exact output file. Same letterforms, byte for byte — just a much tighter wrapper for the web.
Typeface by Tokotype — SIL Open Font License.
How it works
- Drop TTF, OTF, WOFF, WOFF2 or EOT files anywhere on the page — or click to browse.
- Pick the output format — the font tables are repackaged losslessly, never re-drawn.
- Convert, then download each font on its own or the whole batch as a ZIP.
Which format goes where
All four formats carry the same glyphs — they differ in compression and in who can read them. For websites, TTF to WOFF2 is the conversion that matters; for installing a downloaded web font, WOFF2 to TTF goes the other way.
| Format | Use it for | Notes |
|---|---|---|
| WOFF2 | Websites (@font-face) | Smallest — Brotli; all modern browsers |
| WOFF | Very old browsers | zlib — larger than WOFF2 |
| TTF / OTF | Installing on desktop | What Font Book & Windows expect |
| EOT | Internet Explorer 6–8 | Legacy only — skip it today |
Why fonts deserve local conversion
Fonts are licensed software, and many licenses forbid passing the files to third parties — which is exactly what uploading to a converter site does. Here the conversion runs in your browser: the font never leaves your machine, and there is nothing on a server to leak, cache or crawl.
Under the hood
WOFF2 files are written by Google’s own woff2 encoder — the reference implementation, with Brotli compression built in — compiled to WebAssembly and running in your browser; WOFF uses classic zlib. Neither touches the letterforms: conversion is a lossless repack of the same glyph tables into a different wrapper, which is why glyphs, kerning and hinting survive every trip byte for byte.
Frequently asked questions
Is the conversion really lossless?
Yes. TTF/OTF, WOFF, WOFF2 and EOT are containers around the same font tables — converting unwraps one and wraps another, so glyphs, spacing, kerning and hinting are preserved. The only exception the WOFF2 spec itself demands: digital signatures (DSIG) are dropped, and you will see a note when that happens.
Can it turn TTF outlines into OTF outlines (or back)?
No, deliberately. TTF and OTF store letterforms with different curve math, and converting between them degrades hinting and can distort shapes — so if you ask for TTF but the font contains OTF-style (CFF) outlines, it is saved as .otf, with a note. Same font, honest extension, zero quality loss.
Am I allowed to convert this font?
Converting a font never changes its license. Many desktop licenses do not cover web embedding (and vice versa), so check yours before publishing a converted font. Fonts under the OFL or Apache licenses and fonts you made yourself are fine. Your file also never leaves your device — nothing is uploaded anywhere.
Is it private?
Yes. The font is repackaged entirely in your browser — it is never uploaded, and the server does nothing but deliver this page. For licensed fonts that matters twice over: nothing is redistributed to any third party, and no copy lingers on a server afterwards. Want proof? Run one file through, switch your connection off, and run another — it still works.