What happens when you type
Short answer: every letter you type is matched against a table of look-alike Unicode characters, and the styled version is shown instantly. Nothing is sent to a server.
The generator runs entirely in your browser. When the input changes, each style applies its mapping and the results update immediately. There is no Generate button and no server request to wait for: type, compare, copy.
Your text stays on your device. It is not included in analytics, error reports, or any network request, and it is not written to storage. Switching interface language keeps the text in memory only for that visit.
How a style transforms text
Every style belongs to one of five families:
- Alphabet mapping replaces each supported letter with a Unicode look-alike, such as the mathematical bold or script alphabets, or a look-alike from another writing system.
- Combining marks add a stroke, underline, ring, or dot to each character, for example strikethrough and glitch.
- Symbol substitution swaps selected letters for similar-looking symbols, such as small caps or leetspeak.
- Framing adds characters around your text — ornaments, kaomoji, emoji — and leaves the letters untouched.
- Case and spacing changes capitalization, reverses order, or inserts separators between letters or words.
Text is processed by user-perceived characters, not UTF-16 positions, so emoji, skin-tone modifiers, flags, combining marks, and accented letters stay intact.
Why some characters stay the same
Short answer: Unicode only defines styled versions of the basic Latin letters and digits. Anything else is kept exactly as you typed it.
If a style has no equivalent for a character, FontGenerate keeps the original. Straße in the bold style becomes 𝐒𝐭𝐫𝐚ß𝐞: the ß is preserved rather than dropped or replaced. When a style leaves a noticeable part of your text unchanged, a compatibility note appears on that result.
How styles are selected and tested
The collection is curated rather than exhaustive. A style is included only when it passes all of the following:
- Mapping review — the source Unicode block is documented for every style, and the mapping is checked character by character.
- Multilingual preservation — every style is run against fixed English, German, French, and Spanish sentences, an emoji sequence, a multi-line sample, and punctuation. Accents,
ß,ñ,¿, emoji, and line breaks must survive untouched. - Determinism — the same input always produces the same output, and the original input is never modified.
- Duplicate check — a style is rejected if its output is identical to an existing style.
- Readability and compatibility ratings — each style is rated high, medium, or low readability and excellent, good, or limited compatibility. Limited styles are demoted or removed on platform-specific pages.
- Performance — transforming the maximum input length through the whole collection must stay well under the interaction budget, so results feel instant on mid-range phones.
These checks run automatically on every change to the collection. Styles that fail are not shipped.
Ordering, categories, and pages
Results are ordered by a curated priority within the selected category. The Popular category shows the page’s full pool in curated order. Each specialized generator uses a distinct pool: bold text favors heavy weights, cursive text favors script alphabets, and Instagram fonts favors readable profile styles, kaomoji, and emoji frames.
Limits
- Input is limited to 500 characters so that generation stays instant.
- Combining-mark styles add at most one mark per character to protect rendering.
- Framed output is limited to four times the length of your input; longer results fall back to plain text.
- The styled result is text, not a font file. It cannot be installed, and its appearance depends on the fonts available on the reader’s device.
