Turn a WOFF2 web font into an EOT file in seconds—upload your .woff2, convert, then download your .eot.
.woff2 file or click "Add Files" to select one from your device. Batch upload is supported — convert a whole family (regular, bold, italic, bold-italic) in one pass. Files are parsed by opentype.js inside your browser; nothing is sent to a server.@font-face font-family you'll declare later. Rename the source file if you want a different font-family string..eot for each input, ready to drop into @font-face { src: url('font.eot') format('embedded-opentype'); }. No sign-up, no watermark, no server upload.WOFF2 is the modern web-font workhorse — Brotli-compressed, typically 20–30% smaller than WOFF 1.0 (median ~24% for TTF-flavored fonts), and supported by every current browser. EOT is the opposite: a Microsoft format from 1997, submitted to W3C in 2008, rejected in favor of WOFF, and only ever recognized by Internet Explorer 6 through 11. IE11 retired on June 15, 2022, which means the audience that actually needs EOT today is narrow but real. Common reasons to go the "wrong direction" from WOFF2 back to EOT:
@font-face for compatibility with the original IE rendering path.format('embedded-opentype') fallbacks. Shipping an EOT alongside WOFF2 keeps the audit green.@font-face stacks — The historical "bulletproof" fallback chain (eot → eot?#iefix for IE 8, then woff2, woff, ttf, svg) still appears in design-system style guides and Sass mixins. If you only have a WOFF2 master, you need to back-fill the EOT slot.If your audience is purely modern browsers, don't ship EOT — a WOFF2 + WOFF fallback covers more than 99% of users today and keeps your CSS shorter.
| Property | WOFF2 | EOT |
|---|---|---|
| Standardized by | W3C (Recommendation, March 2018) | Microsoft submission to W3C in 2008; never standardized |
| Compression | Brotli (lossless), plus glyph-table preprocessing | Optional MicroType Express (MTX) in original spec; "EOT Lite" omits MTX |
| Typical size vs raw OTF | 40–50% smaller | Roughly equal to source TTF/OTF |
| Browser support | Chrome 36+, Firefox 39+, Safari 12+, Edge 14+, Opera 23+ | Internet Explorer 6–11 only |
| Current global usage (caniuse) | ~96% | ~0.27% |
CSS format() value |
format('woff2') |
format('embedded-opentype') |
| File extension | .woff2 |
.eot |
| Header / wrapper | WOFF2 header + Brotli-compressed sfnt tables | EOT header (size, version, embedding flags) wrapping sfnt |
| Practical use in 2026 | Primary web-font format | Legacy IE / Edge IE-mode fallback only |
@font-face Quick Reference| Stack tier | src order |
Targets |
|---|---|---|
| Modern-only | url('f.woff2') format('woff2') |
Chrome, Firefox, Safari, Edge, Opera (~96% of users) |
| Modern + IE 9–11 | woff2, then woff |
Adds IE 9–11 native; ~99% coverage |
| Bulletproof legacy | eot, eot?#iefix format('embedded-opentype'), woff2, woff, ttf, svg |
Adds IE 6–8 and ancient mobile Safari; rarely needed |
| IE-mode intranet | eot format('embedded-opentype'), woff2, woff |
Edge IE mode + modern browsers behind the same site |
The eot?#iefix query-string suffix is the well-known workaround for IE 6–8's broken handling of the ? in src — without it, those browsers append the entire CSS stylesheet to the EOT request and the font fails to load.
Three real cases: you maintain an intranet app running in Edge's IE mode and your audit requires an EOT fallback; you only have the WOFF2 distribution of a custom font and need to rebuild an EOT for a legacy kiosk image; or a brand-asset bundle spec lists .eot as a deliverable and you don't want to ship an incomplete kit. For brand-new public websites in 2026, you almost certainly don't need EOT.
It preserves whatever was inside the WOFF2's sfnt payload — outlines, kerning, GSUB/GPOS feature tables, and naming records all survive the round-trip. WOFF2 stores the same TrueType/OpenType tables as the source, just Brotli-compressed and reordered for streaming; converting to EOT decompresses those tables and re-wraps them in the EOT header. Color fonts (COLR/CPAL, sbix, SVG ) technically survive but won't render in IE 6–11 anyway.
Modern converters output "EOT Lite" — the same sfnt payload, no MTX compression, no URL binding — which IE 8 reads correctly when you include the ?#iefix query suffix in your CSS src. IE 8's well-known bug appends the rest of the CSS file to the EOT URL if there's no ? to stop it; the #iefix fragment is the historical workaround.
No, almost always larger. WOFF2's Brotli compression typically shrinks the sfnt payload by 50% or more compared to raw TTF/OTF. EOT only adds a thin header on top of the uncompressed sfnt (the MTX-compressed variant is mostly unused outside Microsoft's own tooling). Expect your .eot output to be roughly 2x the size of the WOFF2 you converted from.
You need whatever your foundry's license specifies for web embedding — the format doesn't change the licensing terms, only the byte layout. Many foundries grant a single "web font" right that covers WOFF, WOFF2, and EOT together; some require a separate "embedded for IE/legacy" rider. Check your EULA before shipping an EOT on a public domain.
Yes. The page lazy-loads opentype.js and a small EOT writer into your browser, parses the WOFF2 in JavaScript using a Brotli decoder, and emits the EOT bytes directly. There's no upload step and no server-side processing — useful if your source font is unreleased, NDA-restricted, or a paid commercial license you can't legally upload to third-party servers.
Original EOT (2008 W3C submission) included two features that made it controversial: optional MTX compression (a Monotype-patented algorithm) and URL binding (the font would only decode on a specific domain). EOT Lite drops both — it's a plain sfnt wrapped in an EOT header with no compression and no URL lock. Every realistic modern converter, including this one, produces EOT Lite, which is what IE 6–11 reads without complaint.
Yes. Like WOFF, WOFF2, and TTF, each weight and style is its own file — regular, bold, italic, and bold-italic are four distinct EOTs. Batch-upload the four WOFF2s and you'll get four EOTs back, then point each at the right @font-face block with matching font-weight and font-style declarations.
WOFF, every time. IE 9, 10, and 11 all natively load WOFF 1.0 via format('woff'), no EOT required. EOT is only needed if you must also support IE 6, 7, or 8 — and IE 8's global share dropped below 0.1% years before IE 11 itself retired. If your "legacy" target is just IE 11, ship a WOFF and skip the EOT step entirely.