Fancy Text Generator
67 font styles + 41 decorators using Unicode character substitution — for Instagram, Discord, TikTok & more
Launch Fancy Text Generator →
Table of Contents
Overview
The Fancy Text Generator is a real-time Unicode text transformer that converts your plain text into 67 distinct font styles and 41 text decorators, organized across 12 categories. Type "Hello" and instantly see it rendered as ๐๐๐ฅ๐ฅ๐จ (Bold Serif), ๐ฅ๐ข๐ฉ๐ฉ๐ฌ (Fraktur), โโโโโ (Circled), Hฬถeฬถlฬถlฬถoฬถ (Strikethrough), ๐๐ฎ๐ต๐ต๐ธ (Bold Script), and over a hundred more variations — all rendered simultaneously, all in real time.
These are not images or custom fonts that require special rendering. They are standard Unicode characters defined in blocks like Mathematical Alphanumeric Symbols (U+1D400–U+1D7FF), Enclosed Alphanumerics (U+2460–U+24FF), Combining Diacritical Marks (U+0300–U+036F), Braille Patterns (U+2800–U+28FF), and Regional Indicators (U+1F1E6–U+1F1FF). Because they are part of the Unicode standard, they work everywhere Unicode is supported: Instagram bios, Discord usernames, TikTok captions, Twitter posts, WhatsApp messages, email subjects, gaming clan tags, and more.
The entire transformation engine runs in pure JavaScript with zero external libraries. The core function spreads your input string via [...text] to correctly handle multi-byte Unicode characters, maps each character through a font-specific character map built by buildCharMap(), and joins the result back. For Mathematical Alphanumeric fonts, this uses code point arithmetic (adding an offset to the base character's code point). For styles like Leet Speak, Morse Code, Braille, and Upside Down, it uses custom lookup objects with hand-mapped character pairs. For effects like Zalgo and Strikethrough, it appends zero-width combining diacritical marks after each base character. The result is a 100% client-side tool that never transmits your text anywhere.
How Unicode Text Transformation Works
Understanding why fancy text works requires knowing a bit about Unicode. The Unicode standard assigns a unique code point to every character in every writing system. For historical and mathematical typesetting reasons, Unicode includes multiple complete sets of the Latin alphabet in different visual styles. The Mathematical Alphanumeric Symbols block (U+1D400–U+1D7FF) alone contains Bold, Italic, Bold Italic, Script, Bold Script, Fraktur, Bold Fraktur, Double-Struck, Sans-Serif, Sans Bold, Sans Italic, Sans Bold Italic, and Monospace variants of A–Z, a–z, and 0–9.
The character mapping engine at the heart of this tool works in three distinct ways depending on the font style:
- Offset-based mapping — For Mathematical Alphanumeric styles, the engine calculates the target code point by adding a fixed offset to the source character's code point. For example, Bold Serif uppercase starts at U+1D400. The letter "A" is U+0041 (decimal 65). The offset is
0x1D400 - 0x41 = 0x1D3BF. SobuildCharMap()creates entries like{'A': String.fromCodePoint(0x1D400), 'B': String.fromCodePoint(0x1D401), ...}. This arithmetic approach is efficient and covers uppercase, lowercase, and digits for each font. - Custom lookup maps — For styles that do not follow a simple offset pattern, the engine uses hand-built JavaScript objects. Upside Down text maps 76 character pairs (e.g.,
{'a':'ษ', 'b':'q', 'c':'ษ', 'd':'p', ...}) and then reverses the string. Leet Speak maps{'a':'4', 'e':'3', 'i':'1', 'o':'0', ...}. Morse Code maps each letter to its dot-dash sequence. Braille maps characters to the U+2800 block patterns. These lookups are created once and reused for every keystroke. - Combining mark stacking — For effects like Strikethrough (U+0336), Underline (U+0332), Overline (U+0305), and the various enclosing marks (U+20DD–U+20DF), the engine appends one or more zero-width combining characters after each base character. The rendering engine stacks these visually onto the preceding character. For Zalgo text, the engine randomly selects from pools of combining marks above (U+0300–U+0315, etc.), below (U+0316–U+0333, etc.), and middle (U+0334–U+0338) and appends 2–4 of them per character using
Math.random(), creating the chaotic "corrupted" appearance.
The mapText() function ties it all together. It receives the input string and a character map, spreads the string into an array of individual characters using [...text] (which correctly handles surrogate pairs for characters outside the Basic Multilingual Plane), maps each character through the lookup (passing through any unmapped characters unchanged), and joins the result back into a string. This entire pipeline executes on every keystroke, rendering all 108 styles simultaneously with no perceptible delay.
All 12 Categories (67 Font Styles)
1. Serif (3 styles)
The classic Mathematical Alphanumeric Serif variants. Bold Serif (U+1D400) renders as ๐๐๐ฅ๐ฅ๐จ — the most widely supported and commonly used fancy text style. Italic Serif (U+1D434) produces ๐ป๐๐๐๐ with the elegance of typeset italics. Bold Italic Serif (U+1D468) combines both for maximum emphasis: ๐ฏ๐๐๐๐. These are among the most reliably rendered styles across all platforms because they were originally designed for mathematical notation in academic publishing.
2. Sans-Serif (4 styles)
Clean, modern variants without serifs. Sans-Serif (U+1D5A0) gives ๐ง๐พ๐ ๐ ๐, Sans Bold (U+1D5D4) produces ๐๐ฒ๐น๐น๐ผ, Sans Italic (U+1D608) yields ๐๐ฆ๐ญ๐ญ๐ฐ, and Sans Bold Italic (U+1D63C) creates ๐๐๐ก๐ก๐ค. These four styles mirror the standard font weight and style combinations used in modern typography and are excellent for social media bios where you want a clean, contemporary look.
3. Script & Cursive (2 styles)
Script (U+1D49C) produces elegant calligraphic letterforms like ๐ฝ๐๐๐๐ with flowing cursive strokes. Bold Script (U+1D4D0) intensifies this into ๐๐ฎ๐ต๐ต๐ธ, which is one of the most popular styles for Instagram bios and display names. The script styles come from the Mathematical Script block and were originally intended for denoting special mathematical sets and operators.
4. Gothic & Fraktur (2 styles)
Fraktur (U+1D504) renders the classic blackletter typeface: ๐ฅ๐ข๐ฉ๐ฉ๐ฌ. This style descends from medieval calligraphy and was the standard typeface for printed German until the mid-20th century. Bold Fraktur (U+1D56C) produces a heavier variant: ๐๐๐๐๐. Both are popular for gothic aesthetics, metal band references, and dramatic display text in gaming profiles.
5. Decorative (5 styles)
Double-Struck (U+1D538) creates the "blackboard bold" look: ๐๐๐๐๐ — originally used in mathematics to denote number sets like the natural numbers (ℕ), integers (ℤ), and real numbers (ℝ). Monospace (U+1D670) renders each character at equal width: ๐๐๐๐๐, mimicking a typewriter or code editor. Small Caps uses characters from the Latin Extended-B block to create sแดแดสส แดแดแดs text. Fullwidth/Vaporwave (U+FF00 block) produces ๏ฝ๏ฝ
๏ฝ๏ฝ๏ฝ by replacing ASCII characters with their fullwidth equivalents using the formula charCode - 33 + 0xFF01 — originally designed for CJK typesetting compatibility, now used for the ๏ฝ๏ฝ
๏ฝ๏ฝ๏ฝ๏ฝ
๏ฝ๏ฝ๏ฝ wide-spaced vaporwave look. Medieval combines various Unicode characters to evoke an old manuscript style.
6. Symbols & Enclosed (6 styles)
Circled (U+24B6) wraps letters in circles: โโโโโ. Negative Circled (U+1F150) creates filled circles with white letters: 🅗🅔🅛🅛🅞. Squared (U+1F130) places letters inside squares: 🄷🄴🄻🄻🄾. Negative Squared (U+1F170) uses filled squares: 🅷🅴🅻🅻🅾. Parenthesized (U+249C) wraps letters in parentheses: ⒣⒠⒧⒧⒪. Regional Indicator (U+1F1E6) uses the flag indicator symbols — these are the same code points that combine to create country flag emoji, and when used individually they display as letter-like symbols on most platforms.
7. Effects & Zalgo (15 styles)
These styles use combining diacritical marks — zero-width Unicode characters that visually attach to the preceding base character. Strikethrough appends U+0336 (combining long stroke overlay) to each character: Hฬถeฬถlฬถlฬถoฬถ. Underline uses U+0332 (combining low line): Hฬฒeฬฒlฬฒlฬฒoฬฒ. Double Underline uses U+0333. Overline uses U+0305 (combining overline). Crosshatch applies U+0337 (combining short solidus overlay). Additional effects include Dot Above, Dot Below, Ring Above, Tilde, and Arrow Above, each using their respective combining mark.
The Enclosing effects use a special class of combining marks that visually surround the base character: Enclosing Circle (U+20DD), Enclosing Square (U+20DE), and Enclosing Diamond (U+20DF). These do not always render reliably across all platforms, but when they do, each character appears inside a circle, square, or diamond shape.
Zalgo Light randomly selects from a pool of 19 combining marks in the U+0300 block and attaches 1–2 per character, creating a mildly "glitchy" appearance. Zalgo Heavy pulls from a much larger pool — 32 marks above (U+0300–U+031F, plus extended marks), 30 marks below (U+0316–U+0333, plus extended), and 5 middle overlay marks — attaching 2–4 randomly selected marks per character via Math.random(). The result is the classic "corrupted text" effect where diacritical marks stack high above and below the baseline, creating a chaotic, glitch-art aesthetic. Each generation produces a unique result because the mark selection is randomized.
8. Case Styles (6 styles)
These operate on letter case rather than Unicode substitution. UPPERCASE converts all letters to capitals. lowercase converts all to small letters. Title Case capitalizes the first letter of each word. AlTeRnAtInG CaSe switches between uppercase and lowercase on each character. Random Case uses Math.random() to randomly capitalize each letter, producing a different result every time. iNVERTED cASE swaps the case of every character — uppercase becomes lowercase and vice versa.
9. Codes & Ciphers (9 styles)
Upside Down is built from 76 custom character pairs that map each letter and digit to its visual inverse (a→ɐ, b→q, e→ǝ, etc.) and then reverses the string so it reads correctly when flipped: ollǝɥ. Mirror creates a left-right reflection using similar character substitution. Superscript maps to Unicode superscript characters (ᵃᵇᶜᵈᵉ...). Subscript maps to Unicode subscript characters (ₐₑ...). Leet Speak uses the classic hacker substitution: a→4, e→3, i→1, o→0, s→5, t→7.
Morse Code converts each character to its International Morse representation using dots and dashes (H→...., E→., L→.-.., O→---). Braille (U+2800 block) maps each letter to its Braille pattern character — these are actual Unicode Braille characters, not images. Binary converts each character to its 8-bit binary representation (H→01001000). Hexadecimal converts each character to its hex code point value (H→48).
10. Spacing & Aesthetic (6 styles)
Aesthetic (spaced) inserts spaces between every character for the v a p o r w a v e look. The remaining five styles insert decorative characters between each letter: Hearts (h♥e♥l♥l♥o), Stars (h★e★l★l★o), Dots (h•e•l•l•o), Dash (h⁃e⁃l⁃l⁃o), and Arrow (h→e→l→l→o).
11. Popular (curated selection)
A curated collection of the most-used styles, each marked with a fire badge. This category includes Bold Serif, Script, Fraktur, Double-Struck, Monospace, Small Caps, Circled, Strikethrough, Zalgo, Alternating Case, Aesthetic, Upside Down, and Leet Speak. These are the styles most commonly used on social media platforms and are pre-selected as the quick-access favorites for new users.
12. All Styles (default view)
The default category that displays every one of the 67 font styles and 41 decorators simultaneously. When you type in the input area, all 108 transformations render at once, letting you scroll through and compare every available style in a single view.
41 Text Decorators
Beyond the 67 font styles, the generator includes 41 text decorators that wrap your text in decorative borders, symbols, and frames. These fall into several groups:
- Emoji borders — Wrap text with matching emoji on both sides: Sparkles (✨ text ✨), Stars (★ text ★), Lightning (⚡ text ⚡), Fire (🔥 text 🔥), Hearts (♥ text ♥), Roses (🌹 text 🌹), Crowns (👑 text 👑), Diamonds (◆ text ◆), Music (♫ text ♫), Snowflakes (❄ text ❄).
- CJK bracket pairs — Use East Asian typographic brackets for a distinctive framed look: Japanese Brackets (【text】), Double Angle (《text》), Fancy Quote (「text」), Lenticular (〖text〗), Corner Bracket (『text』).
- Box Drawing frames — Construct borders using Unicode Box Drawing characters (U+2500–U+257F): Light box (┌─ text ─┐), Double box (╔═ text ═╗), Rounded box (╭─ text ─╮). These create text-based frames that render consistently in monospace contexts.
- Kaomoji wrappers — Surround your text with Japanese emoticons: Bear (ɕ•ᴥ•ɔ text), Shruggy (¯\_(ツ)_/¯ text), Table Flip ((╯°□°)╯︵ text).
- Historical symbols — Celtic Ogham markers (᚛ text ᚜) and other ornamental Unicode characters that evoke ancient script traditions.
Key Features
67 Unicode Font Styles
Serif, Sans-Serif, Script, Gothic, Decorative, Enclosed, Effects, Case, Codes, and Spacing styles across 12 organized categories. From ๐๐จ๐ฅ๐ ๐๐๐ซ๐ข๐ to ๐๐ฏ๐๐จ๐ฑ๐ฒ๐ฏ to โโโกโโโโ, every major Unicode text block is covered.
41 Text Decorators
Emoji borders (✨ text ✨), CJK brackets (【text】), Box Drawing frames (╔═text═╗), Kaomoji wrappers (ɕ•ᴥ•ɔ text), and Celtic symbols — instant decorative framing for any message.
Zalgo Text Generator
19 combining marks (light mode) or 32+ marks per character (heavy mode) randomly selected from the U+0300 combining diacritical marks block, creating the iconic "corrupted" glitch text effect. Each generation is unique due to Math.random() selection.
Mathematical Alphanumeric Symbols
Full access to Unicode block U+1D400–U+1D7FF: the standardized block providing Bold, Italic, Script, Gothic, Monospace, Double-Struck, and Sans-Serif letter variants originally designed for mathematical typesetting.
Live Preview
All 108 styles (67 fonts + 41 decorators) render simultaneously on every keystroke. One-click copy triggers a toast notification and flash animation (0.6s) for immediate visual confirmation that text has been copied to your clipboard.
Favorites System
Star any font style to save it to your favorites. Stored in localStorage under the fancytext_favs key, favorites persist across sessions. Access them from the favorites bar as chips, click to scroll directly to the style with a highlight pulse animation.
Cross-Platform Compatible
Works on Instagram bios, Discord usernames, TikTok captions, Twitter/X posts, WhatsApp messages, Telegram, Reddit, gaming clan tags, and email subjects — anywhere that renders standard Unicode text. No special font installation needed.
Zero Dependencies
Pure JavaScript character mapping using [...text].map() spread syntax. No external font files downloaded, no API calls, no third-party libraries. The entire transformation engine is self-contained in a single script file.
How to Use
- Open the Fancy Text Generator — Launch the tool and type your text in the input area at the top. Alternatively, use one of the 5 Quick Action buttons: "Hello World" (sample text), "Pangram" (the quick brown fox...), "A→Z" (full alphabet), "0→9" (all digits), or "Clear" (reset input).
- Watch all styles render instantly — All 67 font styles and 41 decorators render simultaneously below the input area as you type. Each style appears in its own card showing the font name, category, and the transformed text. Scroll through to browse them all.
- Filter by category or search — Use the category tabs to filter by Serif, Sans-Serif, Script, Gothic, Decorative, Symbols, Effects, Case, Codes, Spacing, or Popular. Or type a style name in the search bar (e.g., "script", "zalgo", "upside") for real-time filtering by font name, ID, or category.
- Copy with one click — Click any style card to instantly copy that transformed text to your clipboard. A toast notification confirms the copy, and the card flashes with a brief 0.6-second animation for visual feedback. The character count is displayed for reference.
- Save your favorites — Click the star button (★) on any style card to add it to your favorites. Favorites appear as chips in the favorites bar at the top. Click a chip to scroll directly to that style with a highlight pulse animation. Favorites persist across sessions via localStorage.
- Paste anywhere — Open Instagram, Discord, TikTok, Twitter, WhatsApp, or any other app and paste (Ctrl+V or Cmd+V) the copied text. Because these are standard Unicode characters, they display correctly without requiring the recipient to have any special fonts installed.
- Switch themes — Toggle between dark and light mode using the theme button. Your preference is saved to localStorage under the
fancytext_themekey and persists across visits.
Frequently Asked Questions
Math.random(). Every generation is unique because the mark selection is randomized.charCode - 33 + 0xFF01, which converts each printable ASCII character to its fullwidth equivalent. The result is ๏ฝ ๏ฝ ๏ฝ ๏ฝ
text that evokes the vaporwave aesthetic — a visual and musical subculture that repurposes CJK design elements.localStorage under the key fancytext_favs as a JSON array of font IDs. They persist across browser sessions and page reloads. Favorited styles appear as clickable chips in the favorites bar near the top of the page. Clicking a chip scrolls you directly to that style's card and triggers a highlight pulse animation so you can spot it instantly. To remove a favorite, click the star button again on the style card.mapText() function takes your input string, spreads it into characters with [...text], maps each character through a locally-stored character map, and returns the result. No text is transmitted to any server, no API calls are made, and no external resources are loaded. Your input text, transformed output, and favorites data all remain exclusively on your device. The tool does not even use cookies — only localStorage for theme preference and favorites.Privacy & Security
Every text transformation in the Fancy Text Generator is a pure JavaScript character mapping operation that runs entirely in your browser. The app uses no external APIs, no server processing, and no font downloads. Your text — whether it is a username, bio, message, or any other content — never leaves your device. The transformation engine uses [...text].map() to iterate over your input and replace each character using locally stored Unicode character maps. No network requests are made during text transformation. Even the favorites system stores data only in your browser's localStorage under the fancytext_favs key — this data is never synced, uploaded, or transmitted. You have complete ownership and control of your text at all times.
Ready to transform your text? 67 fonts, 41 decorators, 108 total styles — all free, private, and instant.
Launch Fancy Text Generator →Related
Last Updated: March 26, 2026