TTF, OTF and WOFF2 font converter, subsetter and variable-font inspector
Build a practical webfont package while keeping a clear record of characters, axes and tables that changed. Your original font stays on your device.
Font Bridge
Run the real Inter variable font example or use a licensed font. Preview-only inspection does not require an export permission confirmation.
Supported scope: One font up to 12 MiB, expanded SFNT up to 32 MiB, 128 tables, 65,535 glyphs, 200,000 mapped codepoints, 32 axes and 20,000 sample characters. Conversion runs in a cancellable worker for up to 60 seconds. TTF/OTF/WOFF/WOFF2 only; no TTC/OTC collections, EOT or SVG-font input. CFF stays CFF: cubic-to-quadratic OTF→TTF outline conversion is not supported. Browser sample comparison is not complete shaping validation.
Choose your font and output
Required fields are marked with an asterisk.
Font output and preservation report
Review your output, then save it to your device.
Make the next step clear.
Your findings, assumptions and next steps will appear here after you run the check.
Font Bridge · https://fontlab.kitforma.com/ · KitForma
Actual font conversion and CSS package
Unicode coverage and variable-axis inspection
Local before/after rendering comparison
Understand the evidence.
Focused guides explain the rules, the edge cases and the checks worth doing before you act.
Convert font containers without confusing outline formats
Produce a usable WOFF2 package while tracking what stayed the same.
Read the guide ↗Field guide / 02Subset a font without overlooking the text you need
Plan language coverage, shaping and dynamic characters before removing glyphs.
Read the guide ↗Field guide / 03Create a static instance and read embedding restrictions
Pin real font axes while retaining clear permission and variation records.
Read the guide ↗Before you start
Does this really convert fonts, or only rename files?
It decodes and encodes real font containers. Output is reopened and its tables, Unicode mappings and axes are checked before download. TTF outlines remain TrueType and CFF outlines remain CFF; native output chooses the correct .ttf or .otf extension.
Can I convert a CFF OTF into TrueType TTF?
Not in this release. CFF uses cubic outlines and TrueType uses quadratic outlines; that needs a separate outline conversion and shaping validation. You can package either outline type as WOFF/WOFF2 or recover its native OpenType format.
Does a zero embedding flag mean I own a webfont licence?
No. Flags are technical metadata. The actual licence controls web embedding, redistribution, changes and reserved font names. Restricted and bitmap-only fonts are refused for outline export; a no-subsetting flag blocks subsetting and instancing. The original restrictions are never cleared.
Will a subset keep ligatures and complex-script shaping?
HarfBuzz retains glyph closure and this tool requests all layout feature tags. That is stronger than copying only the visible glyphs, but it is not a universal shaping guarantee. Test full words, combining marks, RTL text, punctuation, variation selectors and dynamic content in your target application.
What does creating a static instance do?
Every variable axis is pinned to the entered value or its recorded default. The output must have no remaining fvar axes before it is offered. Characters remain complete unless you also choose subsetting; internal style-name strings may still describe the original font.
Are files uploaded, and is the source preserved?
Your font is processed in a local browser worker. Only self-hosted engine/example assets load from KitForma. The source file is not altered. Byte identity is promised only when no transform is requested and the input already has the requested format; other outputs have explicit table and hash reports.
Sources & assumptions
Formats, algorithms and supported features are documented below. Check the stated scope and inspect your output before using it.
- OpenType font file specification ↗
SFNT directories, TrueType and CFF outlines are distinct from webfont containers.
- OpenType OS/2 embedding flags ↗
Restricted embedding, no-subsetting and bitmap-only flags are inspected and not cleared.
- WOFF2 specification ↗
Container compression and transformations; conversion does not imply whole-file byte identity.
- HarfBuzz subset API ↗
Glyph closure and variable-axis pinning power the bounded local subset workflow.
- hb-subset-wasm ↗
MIT wrapper with HarfBuzz notices, version 0.4.0; self-hosted WASM.
- Google WOFF2 JavaScript/WASM wrapper ↗
MIT wawoff2 2.0.1, self-hosted encoder and decoder.
Reviewed 2026-10-18. Read our methodology or report an issue.