Free Online Font Editor & Font Generator
Runs in your browserEdit TTF/OTF fonts and generate custom derivative fonts in your browser. Draw glyphs with pen/eraser/select tools. Tweak variable-font axes with live CSS preview. Browse every glyph across 34 Unicode blocks. Apply fifteen one-click effects — slant, jitter, flatten, extrude, wave, rotate each, round corners, pixelate, Chaikin smooth, simplify, melt, perspective warp, hollow outline, dotted contour, scramble — with a live before/after preview, then download the TTF. Zero uploads, zero accounts, zero watermarks.
How It Works
Load a Font
Drop a TTF or OTF file, or pick from 30 curated Google Fonts (Inter, Roboto, Playfair, Fira Code, Bebas Neue, Pacifico…). The font is registered in-browser via the FontFace API and a live CSS preview appears the moment it loads.
Edit or Generate
Select a glyph to drag individual control points with the pen/eraser/select tools. Or open the Font Generator panel and toggle any of 15 effects (slant, jitter, wave, rotate-each, round corners, Chaikin smooth, simplify, melt, perspective warp, hollow outline, dotted contour, extrude, pixelate, flatten, scramble) to transform every glyph at once. A before/after preview shows the original and the derivative side-by-side so you can dial in the look. Variable fonts also expose weight/width/optical-size sliders for live styling.
Download Your Font
Export as TTF. Install system-wide, ship in a website (@font-face), print with it, or hand off to a designer. The file never leaves your machine during editing — the download is served from the in-memory font blob.
Frequently Asked Questions
What font formats can I open?
TTF (TrueType) and OTF (OpenType with CFF outlines). Both are parsed by opentype.js, which handles variable fonts (fvar table) and color palettes where present. WOFF and WOFF2 are not yet supported — convert them to TTF first with our Font Converter or a tool like Transfonter, then load here.
Is my font uploaded to a server?
No. Everything runs locally in your browser. The font file is parsed by JavaScript in memory, every edit mutates in-memory path commands, and the downloaded TTF is serialized client-side and streamed to your disk via a Blob URL. Nothing is transmitted, logged, or stored by AICreate. The only network request is the initial font download when you pick a Google Font — and that comes directly from jsdelivr's CDN mirror of the Google Fonts GitHub repo.
What are variable fonts and what can I do with them here?
A variable font is a single file that stores many styles along one or more 'axes' — most commonly weight (light→bold), width (condensed→extended), and optical size (display→caption). When you load a variable font, a Variable Axes panel appears with one slider per axis. Moving a slider updates the live CSS preview in real time via the font-variation-settings property. The preview changes; the exported TTF is still the full variable file. Pick a variable font from the Google Fonts list to try it — Inter, Roboto, Montserrat, DM Sans, Merriweather, Nunito, and 10+ others in the curated list are variable.
How does the Google Fonts picker work?
We curate 30 popular families across sans, serif, display, monospace, and handwriting categories. Each entry points directly at a TTF on jsdelivr's mirror of google/fonts (pinned to a specific commit SHA so URLs never drift). Click a family → your browser fetches 30–450 KB of TTF → the editor opens it. No Google API key needed, no cookies, no tracking. Filter by category chips (Sans, Serif, Display, Mono, Handwriting) to narrow the list.
Can I edit individual glyph shapes?
Yes. Click any glyph in the browser, and a 500×500 editor canvas opens showing the outline with anchor points and bezier handles. Three tools: Select (drag points), Pen (add new points), Eraser (remove points). Keyboard shortcuts V/P/E. Cmd+Z undo and Cmd+Shift+Z redo with full history. Baseline, ascender, descender, UPM, and advance-width guidelines are drawn so you always know the metric context. The advance width is editable from the sidebar.
What does the glyph browser show?
Every glyph in the font, not just the first 256. Search by glyph name, by typed character, or by Unicode code point ("U+00E9", "0xe9", or "é"). Filter by Unicode block — we built a lookup over 34 common blocks (Basic Latin, Latin-1, Cyrillic, Greek, Arabic, CJK, emoji…) and only blocks your font actually contains show up in the dropdown. CJK fonts with 20,000+ glyphs work fine — the list renders in 500-glyph pages with a 'Load more' button plus CSS content-visibility:auto for smooth scrolling.
What is the font generator / Derive panel?
Fifteen one-click effects that transform every glyph in the font at once, generating a brand-new derivative font you can download. Each Apply re-parses the original file so effects never compound — clicking Apply twice with the same settings gives the same result (not 2× the slant). Effects are combinable: enable multiple checkboxes and they stack in a fixed order (round-corners → flatten → Chaikin → simplify → wave → slant → rotate-each → jitter → melt → perspective → extrude → outline → pixelate → dotted). Scramble is applied separately on top. The output is a real TTF, installable anywhere. A live before/after preview shows the original and the transformed font stacked so you can compare instantly.
What do the fifteen font-generator effects actually do?
Slant: shears glyphs horizontally (x += y·tanθ) — instant italics. Jitter: random noise on every control point — sketch/hand-drawn look. Flatten: converts curves to N line segments — faceted/low-poly. Wave: sine displacement on y — playful ransom-note vibe. Rotate-each: each glyph rotated a random ±θ around its centroid — loose/scrappy. Round-corners: replaces sharp L-L corners with short beziers — softer variant. Chaikin smooth: iterative corner-cutting subdivision (1–5 passes) — turns jagged paths into flowing curves, perfect after Jitter or Pixelate. Simplify: Ramer-Douglas-Peucker cleanup — removes redundant/colinear points, shrinks file size. Melt: points below a Y threshold drip downward by up to the amp value — horror-movie aesthetic. Perspective warp: homogeneous-coordinate warp (w = px·x + py·y + 1) — letters tilt into depth. Outline only: duplicates each contour with reversed winding at inner scale — hollow/stencil letters via TTF's non-zero fill rule. Dotted contour: walks each contour and emits small octagon 'beads' at fixed spacing — bead-of-pearls outlines. Extrude: duplicates each contour at (dx, dy) offset — shadow/3D block letters. Pixelate: rasterizes each glyph to an N×N grid, emits one square per filled cell — vector bitmap-font look. Scramble: Atbash cipher A↔Z, B↔Y, a↔z, 0↔9 applied to glyph shapes — typing 'HELLO' renders as 'SVOOL'.
Can I smooth out a jagged or pixelated font?
Yes — enable Chaikin smooth in the Font Generator. It subdivides every edge using the Chaikin corner-cutting algorithm: for each line segment (P0, P1) it emits two new points at 1/4 and 3/4 along it, and repeats the pass N times. One iteration gently rounds sharp corners; five iterations produce near-circular flowing curves. Pair it with Jitter to make hand-drawn fonts look inky and deliberate, or with Pixelate to soften blocky pixels into organic blob letters.
How do I reduce the size of a derivative TTF?
Enable Simplify in the Font Generator. It runs a Ramer-Douglas-Peucker pass per contour at the epsilon (ε) you pick — any point that sits within ε units of the line between its neighbors is removed as redundant. Low ε values (1–5) are lossless in practice and typically cut file size after Flatten/Chaikin/Pixelate by 30–70%. Higher ε deliberately sheds detail for a 'low-fidelity' look. Simplify pairs especially well with Chaikin smooth: smooth to add curves, then simplify to compress.
Can I generate hollow / outline / stencil fonts?
Yes — enable the Outline only (hollow) effect. For each contour of each glyph, it keeps the original and adds a scaled-down inner copy with reversed winding. TTF renders this as a hole via the non-zero fill rule, producing hollow letters. The 'inner scale' slider (50–95%) controls stroke thickness — 90% gives a thin calligraphic hairline, 70% gives a chunky stencil. Works best on mostly-convex glyphs (O, D, B); very spindly shapes can look pinched because this is an approximation, not true path offsetting.
Can I turn a font into dotted or bead-style letters?
Enable the Dotted contour effect. It walks every contour at the spacing interval you set (15–150 font units) and drops a small octagon bead of the chosen radius (3–50 font units) at each step. The fill is replaced with evenly-spaced dots along the outline — great for LED-matrix, braille-like, or punched-tape styles. Combine with Slant or Round corners for variants.
What does the melt effect do?
Melt finds every point whose Y-coordinate is below a threshold you set (default ~400 font units) and pulls it downward proportional to how close it is to the baseline. Points at the very top are untouched; points near the baseline drop by the full amp value. The visual effect is letter bottoms drooping / dripping, like melting wax or retro horror lettering. Tune amp for how dramatic the drip is and threshold for how much of the letter is affected.
Can I tilt letters into 3D / perspective?
Yes — enable Perspective warp. The transform is true homogeneous-coordinate projection: w = px·x + py·y + 1, then the output is (x/w, y/w). The two sliders expose px and py as integer offsets (×10000) in the range ±20 — small values create subtle depth, larger values produce fisheye or vanishing-point effects. Positive py pulls the top toward you (letters lean forward); negative py pushes the top away (letters lean backward). Combine with Extrude for full 3D lettering.
Can I see the original font next to the derivative?
Yes. The second you click Apply, the preview area stacks two rows: the 'After' (transformed font, in accent color) and 'Before (original)' (muted). Both render in real text using the actual CSS FontFace you exported, so what you see is exactly what a downstream design tool will render. Click Reset to revert to the original baseline and try a different combination without reloading.
Can I generate a pixel / bitmap style font?
Yes — enable the Pixelate effect in the font generator. It rasterizes each glyph to a grid at the cell size you pick (30–200 font units per cell), detects which cells fall inside the outline using even-odd ray casting, and emits one filled square per lit cell. The output is a regular TTF made of square polygons, installable anywhere and indistinguishable visually from a classic bitmap font. Combine with Slant or Rotate-each for extra flavor.
Why doesn't the preview always reflect my generator effects?
opentype.js writes the TTF glyf table from glyph.points, not from path.commands. When the generator runs, we rebuild glyph.points from the transformed commands (flattening curves to on-curve points) so the exported font reflects the changes and the CSS preview updates. If a font has exotic OpenType features (like Inter's GSUB lookup type 6 format 2), opentype.js may not round-trip them — you'll see a warning, the glyph outlines are still transformed, and the downloaded TTF contains your effects.
Can I create a font from scratch?
Not yet from literal zero, but the practical path is: load a minimal template font, select each glyph slot, delete all points with the eraser, and draw new shapes with the pen tool. Use a simple existing font (e.g. a monospace like Space Mono) as scaffolding — keep metrics you like, replace shapes. The save-as-TTF path works for fully re-drawn fonts.
Does the Reset button bring my original font back?
Yes. Every time you load a font (via upload or Google Fonts picker), AICreate keeps the original bytes in memory. Reset re-parses that original buffer, rebuilds the glyph list, and clears the derive checkboxes. Use it after experimenting with generator effects to get a clean baseline, then try different combinations without reloading the file.
Does it work on mobile?
Loading, previewing, browsing glyphs, running the font generator, and downloading all work on phones. Fine-grain glyph editing (dragging individual bezier control points) is cramped on small touch screens — tablets or desktop are better for that. The Google Fonts picker, variable axis sliders, and generator panel are fully usable on any phone.
Is the exported TTF safe to install on my OS?
Yes — it's a standard TTF. macOS, Windows, and Linux can install and use it system-wide. Test in a text editor or design tool before committing to a long document; unusual generator combinations (heavy jitter + pixelate) can produce shapes that render fine but are very irregular, which may look odd at very small point sizes.
Can I use the generated fonts commercially?
Check the license of the source font. Most Google Fonts are SIL Open Font License (OFL), which allows modification and commercial use provided the derivative also carries the OFL and the family name doesn't reuse the reserved name. If you load your own TTF, follow its license. AICreate itself adds no restrictions on output.
What's the difference between this and a desktop font editor?
Desktop editors (Glyphs, FontLab, FontForge, Birdfont) give you full control over hinting, kerning, OpenType features, CFF vs TTF outline choices, and complete source format files. AICreate is built for quick edits, derivative generation, and experiments — open a font in one click, try a look, download. If your font needs GPOS kerning tables or complex stylistic sets, reach for a desktop editor. For 'make a slanted pixelated Inter' in ten seconds, this tool wins.
Which browsers does this support?
Modern Chrome, Edge, Firefox, Safari. The CSS variable-font preview needs browser support for font-variation-settings (all modern browsers since 2018). The in-memory FontFace registration needs the FontFace API (same). Everything else is plain Canvas 2D + JavaScript.
Built With Open Source
Open-source JavaScript font parser and writer. Handles TTF, OTF, WOFF, variable fonts, and color palettes.
Browser-native runtime font registration. Lets us preview transformed and generated fonts live in HTML + CSS without a page reload.
Glyph outline rendering for the per-glyph editor canvas, anchor points, and bezier handles.
Curated 30-font picker fetches TTFs from the SIL OFL / Apache-licensed Google Fonts GitHub repo, mirrored via jsdelivr CDN at a pinned SHA.