Convert OTF to TTF in your browser

Some .otf files are TrueType fonts wearing the wrong extension, and those cross over in a second with nothing lost. The rest hold PostScript outlines, and this tells you so rather than handing back a font that will not install.

OTF
No OTF selected
Drop a file to start
Drop OTF files here

or browse your device. Everything is processed on this device

No OTF to hand?

How to convert an OTF to TTF

01
Drop the .otf in

The header and the table directory are read in this tab, which is all it takes to know which of the two kinds of .otf you are holding. Nothing is uploaded.

02
Read what it says about the font

TrueType outlines convert. CFF PostScript outlines stop here with the reason and the name of a tool that can do the real job, because a rename would only move the failure further down your day.

03
Check the header line

The result panel names the header the file arrived with. "0x00010000" means it was already a TrueType font and only the extension changed; "OTTO" or "true" means the header was genuinely wrong and has been fixed.

04
Download the .ttf and install it

Install it and open the software that refused the original. If it is accepted, you had the TrueType kind, and there was never anything else to do.

Which .otf files can become a .ttf

OpenType and TrueType are not two file formats. They are one container, called sfnt, which is a directory of tables with a four byte version number in front of it. Both extensions name that container, and the extension decides nothing at all about what is inside: the tables do. A font that stores its letters in a glyf table draws with quadratic curves and is a TrueType font. A font that stores them in a CFF table draws with cubic curves and is a PostScript font. Either can be called .otf.

That is why this conversion is two completely different jobs. If your .otf holds glyf outlines, it is already a TrueType font and the .ttf you want is the same bytes under a different name. Some of those files also carry the wrong header, stamped "OTTO" by a build tool that assumed OpenType meant PostScript, or "true" by an old Mac program, and that four byte lie is enough to make a Windows installer or a font loader refuse a perfectly good font. Fixing it is real work and it is quick: the header is rewritten, the table directory and its checksums are recomputed around it, and not a single outline is touched.

If your .otf holds a CFF table, none of that applies. The outlines are a PostScript charstring program, and a TrueType file has nowhere to put one. Converting means redrawing every curve as a quadratic approximation, deciding how much error to accept, rebuilding the metrics and writing new hinting for the result. It is a genuine conversion with genuine trade-offs, done properly by FontForge or by fonttools, and it needs a human to look at the output afterwards. Any browser tool that offers it instantly is either renaming the file or lying about which one you have.

If yours turns out to be CFF, you have two decent options and one bad one. The decent ones are finding a TrueType build of the same family, which most commercial and open foundries ship alongside the OpenType, or running the outline conversion in FontForge and proofing the result at small sizes. The bad one is any site that hands you back a .ttf in a second: that file will fail in exactly the same place the .otf did, and you will have spent the afternoon debugging the wrong thing.

OTF to TTF FAQ

Is converting OTF to TTF just renaming the file?

For a TrueType-outline .otf, very nearly: the bytes already are a TrueType font, and where the header is correct this tool hands them straight back under a .ttf name and tells you that is what happened. Where the header says "OTTO" or "true" it is rewritten to 0x00010000 and the checksums are recalculated, which a rename does not do and which is often the exact reason the font was refused. For a CFF .otf, renaming is not a conversion at all, and this refuses rather than doing it.

How do I tell whether my OTF is CFF or TrueType?

Drop it here and the result panel says so, or use any font inspector: the file is CFF if the table directory has a CFF entry, and TrueType if it has glyf and loca. As a rough rule, fonts sold by type foundries and anything with the word PostScript in its description are usually CFF, while fonts from Google Fonts and most open source families are TrueType whichever extension they ship with.

Why did this refuse my font?

Because it holds CFF PostScript outlines, and the honest conversion is redrawing every curve rather than repacking tables. The refusal is deliberate. A .ttf with a CFF table inside is rejected by the same software that rejected your .otf, so handing you one would look like success and cost you another hour before you found out.

Does the converted TTF keep its kerning and ligatures?

Yes, as long as you leave "Characters to keep" on All, which is how the page arrives. Nothing is renumbered, so the GPOS and GSUB tables are carried across untouched. Narrow the range and the glyphs are renumbered, at which point those tables point at the wrong letters and are dropped rather than corrupted, and the font loses its kerning pairs and ligatures.

Will the TTF be smaller than the OTF?

No, and it is not meant to be. This changes the container, not the contents: expect the same size give or take a few bytes of table padding. If you want a smaller font, subset it, which is a different job and one the compressors here do properly.

Is it legal to convert a font I bought?

Read the licence, because this is one of the cases foundries do write about. Many desktop licences allow format conversion for your own use and forbid redistributing the result; some forbid modification outright. The licence description and the licence URL are never removed from the name table, whichever way you set the metadata switch, so the terms travel with the file.

Are my OTF files uploaded to convert them?

No. The OTF is decoded and the TTF is written by your own browser, in this tab. There is no upload endpoint in the site for a file to go to, which you can check in your network tools: convert something and watch that no request carries it. Disconnect from the network after the page loads and it still works.

Drop more files

Same format joins the queue. Anything else re-routes to its own tool.