Font generator

Unicode text converter

A Unicode text converter replaces each letter of your text with a different Unicode character: bold ๐€ is U+1D400, while an ordinary A is U+0041. Type below and copy any style. The result is still plain text, only made of other characters, which is why it pastes into any text box and why spell checkers and screen readers can stumble over it.

Updated 6 October 2026

Your text in every style

Changes as you type. It all happens in your browser, so nothing is uploaded.

  • ๐“๐ž๐ฑ๐ญ ๐ข๐ฌ ๐ฃ๐ฎ๐ฌ๐ญ ๐ง๐ฎ๐ฆ๐›๐ž๐ซ๐ฌ

    Bold (serif)

  • ๐‘‡๐‘’๐‘ฅ๐‘ก ๐‘–๐‘  ๐‘—๐‘ข๐‘ ๐‘ก ๐‘›๐‘ข๐‘š๐‘๐‘’๐‘Ÿ๐‘ 

    Italic (serif) ยท Numbers stay upright.

  • ๐’ฏโ„ฏ๐“๐“‰ ๐’พ๐“ˆ ๐’ฟ๐“Š๐“ˆ๐“‰ ๐“ƒ๐“Š๐“‚๐’ทโ„ฏ๐“‡๐“ˆ

    Cursive ยท Numbers stay as they are.

  • ๐”—๐”ข๐”ต๐”ฑ ๐”ฆ๐”ฐ ๐”ง๐”ฒ๐”ฐ๐”ฑ ๐”ซ๐”ฒ๐”ช๐”Ÿ๐”ข๐”ฏ๐”ฐ

    Old English ยท Numbers stay as they are.

  • ๐•‹๐•–๐•ฉ๐•ฅ ๐•š๐•ค ๐•›๐•ฆ๐•ค๐•ฅ ๐•Ÿ๐•ฆ๐•ž๐•“๐•–๐•ฃ๐•ค

    Outline

  • ๐šƒ๐šŽ๐šก๐š ๐š’๐šœ ๐š“๐šž๐šœ๐š ๐š—๐šž๐š–๐š‹๐šŽ๐š›๐šœ

    Typewriter

More styles36

Bold & italic ยท 5

  • ๐—ง๐—ฒ๐˜…๐˜ ๐—ถ๐˜€ ๐—ท๐˜‚๐˜€๐˜ ๐—ป๐˜‚๐—บ๐—ฏ๐—ฒ๐—ฟ๐˜€

    Bold

  • ๐˜›๐˜ฆ๐˜น๐˜ต ๐˜ช๐˜ด ๐˜ซ๐˜ถ๐˜ด๐˜ต ๐˜ฏ๐˜ถ๐˜ฎ๐˜ฃ๐˜ฆ๐˜ณ๐˜ด

    Italic ยท Numbers stay upright.

  • ๐‘ป๐’†๐’™๐’• ๐’Š๐’” ๐’‹๐’–๐’”๐’• ๐’๐’–๐’Ž๐’ƒ๐’†๐’“๐’”

    Bold italic (serif) ยท Numbers stay upright.

  • ๐™๐™š๐™ญ๐™ฉ ๐™ž๐™จ ๐™Ÿ๐™ช๐™จ๐™ฉ ๐™ฃ๐™ช๐™ข๐™—๐™š๐™ง๐™จ

    Bold italic ยท Numbers stay upright.

  • ๐–ณ๐–พ๐—‘๐— ๐—‚๐—Œ ๐—ƒ๐—Ž๐—Œ๐— ๐—‡๐—Ž๐—†๐–ป๐–พ๐—‹๐—Œ

    Sans serif

Cursive ยท 1

  • ๐“ฃ๐“ฎ๐”๐“ฝ ๐“ฒ๐“ผ ๐“ณ๐“พ๐“ผ๐“ฝ ๐“ท๐“พ๐“ถ๐“ซ๐“ฎ๐“ป๐“ผ

    Bold cursive ยท Numbers stay as they are.

Gothic ยท 1

  • ๐•ฟ๐–Š๐–๐–™ ๐–Ž๐–˜ ๐–๐–š๐–˜๐–™ ๐–“๐–š๐–’๐–‡๐–Š๐–—๐–˜

    Bold Old English ยท Numbers stay as they are.

Bubbles & boxes ยท 6

  • โ“‰โ“”โ“งโ“ฃ โ“˜โ“ข โ“™โ“คโ“ขโ“ฃ โ“โ“คโ“œโ“‘โ“”โ“กโ“ข

    Bubble

  • ๐Ÿ…ฃ๐Ÿ…”๐Ÿ…ง๐Ÿ…ฃ ๐Ÿ…˜๐Ÿ…ข ๐Ÿ…™๐Ÿ…ค๐Ÿ…ข๐Ÿ…ฃ ๐Ÿ…๐Ÿ…ค๐Ÿ…œ๐Ÿ…‘๐Ÿ…”๐Ÿ…ก๐Ÿ…ข

    Black bubble ยท Capitals only.

  • ๐Ÿ…ƒ๐Ÿ„ด๐Ÿ…‡๐Ÿ…ƒ ๐Ÿ„ธ๐Ÿ…‚ ๐Ÿ„น๐Ÿ…„๐Ÿ…‚๐Ÿ…ƒ ๐Ÿ„ฝ๐Ÿ…„๐Ÿ„ผ๐Ÿ„ฑ๐Ÿ„ด๐Ÿ…๐Ÿ…‚

    Square ยท Capitals only.

  • ๐Ÿ†ƒ๐Ÿ…ด๐Ÿ†‡๐Ÿ†ƒ ๐Ÿ…ธ๐Ÿ†‚ ๐Ÿ…น๐Ÿ†„๐Ÿ†‚๐Ÿ†ƒ ๐Ÿ…ฝ๐Ÿ†„๐Ÿ…ผ๐Ÿ…ฑ๐Ÿ…ด๐Ÿ†๐Ÿ†‚

    Black square ยท Capitals only. Some letters show as emoji (๐Ÿ…ฐ ๐Ÿ…ฑ ๐Ÿ…พ ๐Ÿ…ฟ).

  • ๐Ÿ„ฃโ’ โ’ณโ’ฏ โ’คโ’ฎ โ’ฅโ’ฐโ’ฎโ’ฏ โ’ฉโ’ฐโ’จโ’โ’ โ’ญโ’ฎ

    Brackets

  • ๏ผด๏ฝ…๏ฝ˜๏ฝ”ใ€€๏ฝ‰๏ฝ“ใ€€๏ฝŠ๏ฝ•๏ฝ“๏ฝ”ใ€€๏ฝŽ๏ฝ•๏ฝ๏ฝ‚๏ฝ…๏ฝ’๏ฝ“

    Wide (vaporwave)

Small ยท 2

  • แด›แด‡xแด› ษช๊œฑ แดŠแดœ๊œฑแด› ษดแดœแดส™แด‡ส€๊œฑ

    Small caps

  • แต€แต‰หฃแต— โฑหข สฒแต˜หขแต— โฟแต˜แตแต‡แต‰สณหข

    Tiny ยท No small q exists, so a look-alike is used.

Lines ยท 6

  • Tฬถeฬถxฬถtฬถ iฬถsฬถ jฬถuฬถsฬถtฬถ nฬถuฬถmฬถbฬถeฬถrฬถsฬถ

    Strikethrough

  • Tฬธeฬธxฬธtฬธ iฬธsฬธ jฬธuฬธsฬธtฬธ nฬธuฬธmฬธbฬธeฬธrฬธsฬธ

    Slashed

  • Tฬฒeฬฒxฬฒtฬฒ iฬฒsฬฒ jฬฒuฬฒsฬฒtฬฒ nฬฒuฬฒmฬฒbฬฒeฬฒrฬฒsฬฒ

    Underline

  • Tฬณeฬณxฬณtฬณ iฬณsฬณ jฬณuฬณsฬณtฬณ nฬณuฬณmฬณbฬณeฬณrฬณsฬณ

    Double underline

  • Tฬ…eฬ…xฬ…tฬ… iฬ…sฬ… jฬ…uฬ…sฬ…tฬ… nฬ…uฬ…mฬ…bฬ…eฬ…rฬ…sฬ…

    Overline

  • Tฬคeฬคxฬคtฬค iฬคsฬค jฬคuฬคsฬคtฬค nฬคuฬคmฬคbฬคeฬคrฬคsฬค

    Dotted

Fun ยท 11

  • sษนวqษฏnu ส‡snษพ sแด‰ ส‡xวโŠฅ

    Upside down

  • ฦจษฟษ˜dmun ฦšฦจuฤฏ ฦจi ฦšxษ˜T

    Mirror

  • Tฬฬ–eฬ‰ฬญxฬ‰อŽtฬ‰ฬ– iอ„ฬ–sฬ€ฬ– jอ„ฬ–uอ„อŽsฬฬ–tฬฬ– nฬ‰ฬบuอ„อŽmฬ‰ฬบbฬ‰ฬ eอ„ฬ rฬฬ sฬอŽ

    Glitch

  • Tฬฬ–eฬ‰ฬญxฬ‰ฬฬ‰ฬญฬ–ฬ tอ„ฬฬ€อ„ฬฬบฬ–ฬ ฬบอŽ iฬฬ–sฬอ„อชฬ‰ฬฬ ฬบอŽฬ–อŽ jอ„ฬ‰ฬฬอ„ฬ ฬ ฬ ฬ ฬ uฬฬ sอ„ฬฬฬอ„อŽฬ–อŽฬ–ฬ–tอ„ฬ‰อ„ฬญฬ อŽ nฬฬ‰ฬฬ–ฬญฬ–uอ„ฬฬฬ–อ“ฬญmฬฬฬอ„อ„อŽฬ อŽอŽฬญbฬฬ‰ฬฬญฬ ฬ eฬฬอซฬญฬบฬญrอ„อ„อ„ฬ‰ฬฬบฬ อŽอŽฬญsฬ‰ฬอ„ฬบฬญฬบ

    Zalgo (heavy glitch)

  • T e x t i s j u s t n u m b e r s

    Spaced out

  • โœง๏ฝฅ๏พŸ: *โœง๏ฝฅ๏พŸ:* Text is just numbers *:๏ฝฅ๏พŸโœง*:๏ฝฅ๏พŸโœง

    Sparkles

  • โ™ก T e x t โ™ก i s โ™ก j u s t โ™ก n u m b e r s โ™ก

    Hearts

  • ๊’ฐเฆŒ Text is just numbers เป’๊’ฑ

    Cute frame

  • โ˜…ๅฝก Text is just numbers ๅฝกโ˜…

    Stars

  • โ€ Text is just numbers โ€

    Flowers

  • โžณ Text is just numbers โžณ

    Arrows

Look-alike ยท 4

  • โ‚ฎษ†ำพโ‚ฎ ล‚โ‚ด Jษ„โ‚ดโ‚ฎ โ‚ฆษ„โ‚ฅเธฟษ†โฑคโ‚ด

    Currency ยท Letters from currency signs; hard to read for screen readers.

  • ะ“ั‘ะถั‚ ั—$ jั†$ั‚ ะฟั†ัซะฑั‘ั$

    Faux Cyrillic ยท Real Cyrillic letters chosen for their shape, so the words read as gibberish to screen readers.

  • ๊“„๊‚๊‰ง๊“„ ๊€ค๊Œš ๊’ป๊€Ž๊Œš๊“„ ๊ˆค๊€Ž๊Žญ๊Œƒ๊‚๊‹ช๊Œš

    Fancy ยท Yi syllables chosen for their shape.

  • แ–แ‹แŒ€แ– แŽฅแ• แ แฌแ•แ– แแฌแŽทแฐแ‹แ’แ•

    Tribal ยท Cherokee and Ethiopic letters chosen for their shape.

Where they work

Unicode text converter: where they work
WhereWorks?Notes
Instagram and Facebook textWorksBios, captions, comments, posts and chats accept converted text, since it's made of ordinary Unicode characters. Usernames and Facebook profile names are the exceptions.
Usernames and handlesDoesn't workInstagram, X and most other sites limit handles to a short list of plain characters, and no converted letter is on it.
Code, links and file namesDoesn't workA converted letter is a different code point, so a command, web address or file name typed in ๐š–๐š˜๐š—๐š˜๐šœ๐š™๐šŠ๐šŒ๐šŽ won't match the real one.
Spreadsheets and databasesPartlyThey store fine as UTF-8, but each letter takes four bytes, and sorting, filtering and length checks treat them as different characters from the plain ones.
Documents and emailPartlyThey paste and keep their look, but spell check tends to flag the words, and a word processor's own bold and italic buttons do the job better.
HashtagsDoesn't workConverted letters don't spell the plain tag, so #๐ฌ๐ฎ๐ฆ๐ฆ๐ž๐ซ usually won't count toward #summer.

Where each style starts

Unicode gives every character a number, its code point. The styled letters live in the Mathematical Alphanumeric Symbols block, added in Unicode 3.1 in 2001: just under 1,000 characters for maths, where a bold ๐ฏ and a plain v can stand for different things. Every style is stored in alphabetical order, capitals first, so this reference is all a converter needs:

StyleCapital ASmall aDigits
Bold ๐€๐šU+1D400U+1D41AYes, from U+1D7CE
Italic ๐ด๐‘ŽU+1D434U+1D44ENone
Script ๐’œ๐’ถU+1D49CU+1D4B6None
Fraktur ๐”„๐”žU+1D504U+1D51ENone
Double-struck ๐”ธ๐•’U+1D538U+1D552Yes, from U+1D7D8
Monospace ๐™ฐ๐šŠU+1D670U+1D68AYes, from U+1D7F6

To get any letter, add its place in the alphabet to the starting point: bold C is U+1D400 plus 2, or U+1D402. The block holds 13 Latin alphabets in all, the six above plus bold italic, bold script, bold Fraktur and four sans-serif styles, with Greek letters and five sets of digits alongside. Twenty-four letters have no slot of their own (one italic, eleven script, five Fraktur and seven double-struck), because they were encoded earlier as letterlike symbols between U+2100 and U+214F, and a converter fills those in from there. Anything without a styled twin, such as punctuation, emoji and accented letters, passes through unchanged.

What converted text costs in storage

A plain English letter takes one byte in UTF-8, the encoding most of the web uses. Every letter in the maths block sits above U+FFFF, so it takes four bytes in UTF-8 and two code units, a surrogate pair, in UTF-16, the encoding used inside JavaScript, Java and Windows. The sample on this page shows the difference:

MeasurePlainBold
What you seeText is just numbers๐“๐ž๐ฑ๐ญ ๐ข๐ฌ ๐ฃ๐ฎ๐ฌ๐ญ ๐ง๐ฎ๐ฆ๐›๐ž๐ซ๐ฌ
Characters2020
Bytes in UTF-82071
UTF-16 code units (JavaScript .length)2037

That's why converted text can hit a length limit early. A form that counts bytes or UTF-16 units fills up two to four times faster, X counts each styled letter as two of its 280, and an older MySQL column declared as โ€œutf8โ€ stores at most three bytes per character, so it can't keep these letters at all; it needs utf8mb4.

How code treats converted letters

Converted letters pass some tests for โ€œis this a letter?โ€ and fail others, which catches out search boxes, sign-up forms and scripts that handle what people type. Here is what JavaScript does with ๐“๐ž๐ฑ๐ญ:

TestResultWhat it means
/^\p{L}+$/uMatchesUnicode classes them as real upper- and lower-case letters
/^[a-z]+$/i or \wNo matchChecks written for plain English letters turn them away
toLowerCase() and toUpperCase()No changeThey have no case mappings, so case-insensitive matching fails
=== 'Text'falseA plain comparison sees four different characters
Default sort()After zSimple sorting puts every maths letter after all the ordinary ones
Intl.Collator('en')Next to A, B, CLanguage-aware sorting treats them as variants of the plain letters

Python behaves much the same: str.lower() leaves them alone, and sorted() puts them last. The safe pattern in any language is to keep what the person typed for display, and compare, search and deduplicate on a normalized copy.

Turning it back into plain text

Every letter in the maths block has a compatibility mapping, tagged <font>, back to its plain letter. Unicode normalization form NFKC applies those mappings, so a single function call undoes the conversion, gaps included: โ„Ž becomes h and โ„ becomes R.

  • JavaScript: text.normalize('NFKC')
  • Python: unicodedata.normalize('NFKC', text)
  • Java: Normalizer.normalize(text, Normalizer.Form.NFKC)
  • Swift: text.precomposedStringWithCompatibilityMapping

NFKC is blunt, though. It also turns ๏ฌ into fi, ยฒ into 2 and ยฝ into 1โ„2, so run it over the styled part rather than a whole document full of footnotes and fractions. Styles built from other alphabets, such as small caps, upside down text and faux Cyrillic, have no mapping back and have to be retyped.

Tip: To see what a string is made of, list its code points. In a browser console, [...text].map(c => c.codePointAt(0).toString(16)) prints each character's number in hex; values from 1d400 to 1d7ff are maths letters.

Questions people ask

Is a Unicode text converter the same as changing the font?

No. A font changes how the same characters are drawn, and the text underneath stays as it was. A converter changes the characters themselves, so the style goes wherever the text goes, but the words are no longer the plain letters other software expects.

Why do some converted letters show as boxes?

Usually the device has no font that covers the maths block, which is now rare on current phones and computers but still happens on old ones. If only certain letters fail, and they fail everywhere, the converter used an empty slot instead of the older letter that belongs there.

When were these characters added to Unicode?

The maths letters arrived in Unicode 3.1 in 2001. Two italic dotless letters, ๐šค and ๐šฅ, followed in Unicode 4.1, and a bold digamma, an old Greek letter, in Unicode 5.0. The letterlike symbols that fill the gaps go back to Unicode 1.1 in 1993.

Can I convert text to code points instead?

That's a different job. To show the numbers behind text, write them in U+ notation, such as U+0041 for A, or as escapes: \u{1D400} in JavaScript or &#x1D400; in HTML. The converter on this page works the other way round, choosing new code points so the text looks different.

Related font pages

More font generators

Symbols, bios and captions

Turn comments on your posts into DMs

Ask people to comment a word like LINK. DMFast replies to each one and sends them your link in a DM, on Instagram and Facebook. Free plan, no card.

Start free