Convert ordinary alphanumeric characters into stylish Unicode text
Convert entered letters and numbers into 21 types of Unicode special characters in the Browser, then compare and copy the results.
Open the special characters and fancy text conversion tool.Conclusion: Check missing code points and missing font glyphs separately
Analyze the same string with a Unicode code table; if code points remain, the font or application may be unable to render the glyphs. If the actual data has changed to ? or replacement characters, investigate the encoding and storage path.
Updating the OS or Browser, or changing the Font, may improve rendering, but you cannot control the recipient's device environment. If compatibility matters, choose standard ASCII or a widely supported Style.
□ does not necessarily mean that no character exists. Copy it and compare its code point before determining the cause.
Isolate display issues in order.
Compare the original character, DevelopTools display, paste destination, and recopied string using the same Unicode analysis method.
If the paste destination rejects, normalizes, or replaces input, changing only the font will not resolve it.
| Item | How to check | judgment |
|---|---|---|
| Code Point | Compare before and after pasting | If identical, it is on the Glyph side |
| Font | Display on another device or app | Font candidate if there is a difference |
| Encoding | Check UTF-8 saving | Prevent replacement-character conversion |
| Input rules | Check allowed characters | Different Style or normal text |
Steps to diagnose □ and ?
- Keep the original standard characters.
- Paste the conversion result into the Unicode code table and record the Code Point.
- Paste into the problematic Application, copy it again, and compare Code Points.
- If they are identical, check the font, OS, and application; if they differ, check input restrictions, normalization, and encoding.
- Change to a style that can be displayed broadly or to ordinary characters.
You cannot compare code points using screenshots alone. Copy the actual text to a safe location and inspect it.
Places to suspect based on symptoms
| Symptom | Main candidates | Next check |
|---|---|---|
| Becomes □ | Missing glyphs | Different fonts and different devices |
| Becomes ? | Encoding replacement | Bytes before and after saving |
| Cannot enter input | Allowed-character restrictions | Service terms |
| Return to normal characters | Normalization such as NFKC | Compare normalization results |
Replace with Unicode characters rather than changing CSS fonts
| Method | Strings | Things that change internally |
|---|---|---|
| CSS Font | A → A | Keep U+0041 and render the Glyph differently with a Font |
| Fancy Unicode | A → 𝐀 | Replace the Code Point itself from U+0041 to U+1D400 |
| Combining marks | A → A̲ | Add a Combining Low Line after U+0041 |
Mathematical Alphanumeric Symbols are a set of characters defined to distinguish meanings in mathematical expressions. Stylish text for social media often uses them for decoration; it is not copying CSS font-family.
Use NFC, NFD, NFKC, and NFKD for distinct purposes
| Format | Main processing | Effect on decorative characters |
|---|---|---|
| NFC | Compose characters where possible after canonical decomposition | Align canonically equivalent representations, but do not convert all decorations back to ASCII |
| NFD | Canonical Decomposition | There is an example of decomposing é into e and Combining Acute Accent |
| NFKC | Compose after compatibility decomposition | 𝐀, 𝔸, A, ①, and similar characters may become A or 1. |
| NFKD | Compatibility Decomposition | Decompose compatibility characters, which can further become combining sequences |
NFKC is a way to make some stylish characters closer to ordinary alphanumeric characters, but it is not a general reverse conversion that fully restores upside-down characters, small-cap approximation characters, combining underlines, and similar forms. Do not apply it automatically to data that requires preserving its original notation.
Distinguish character count by graphemes, code points, and UTF-16.
| Counting method | Value of 𝐀 | Purpose |
|---|---|---|
| Grapheme Cluster | 1 | The number of characters visually recognized by the user |
| Unicode Code Point | 1(U+1D400) | Character assignment numbers and Unicode processing |
| JavaScript String.length | 2 UTF-16 Code Units | JavaScript indexes and existing input limits |
| UTF-8 | 4 Bytes | Storage capacity for databases, APIs, files, and communications |
Combining characters and ZWJ emoji can appear as one grapheme even when they contain multiple code points. To count visible characters in JavaScript, use Intl.Segmenter; to count code points, use for...of or Array.from rather than relying only on split("").
What DevelopTools can verify and cannot verify
| Item | Current tool operation |
|---|---|
| Input | Convert primarily letters and numbers, while leaving Japanese, emoji, line breaks, and unsupported symbols unchanged rather than deleting them |
| 21 styles | Serif and sans-serif bold and italic, monospace, script, Fraktur, double-struck, circled, squared, small caps, superscript and subscript, upside-down text, strikethrough, and underline |
| Unicode processing | When Intl.Segmenter is available, process by grapheme cluster; when unavailable, Array.from still does not split surrogate pairs |
| Display confirmation | Show the number of converted and target characters for each style to make unsupported characters easier to find |
| Save | Supports copying each result, saving TXT, favorites, and sorting recently copied styles |
| Unsupported | Full-width and enclosed forms, general reverse conversion, NFC/NFD/NFKC/NFKD execution, Unicode name and code point analysis, mixed-script/confusable detection |
| Data retention | Do not send input text or conversion results to the server, and do not save them in LocalStorage. Save only display settings and favorites on the device. |
To restore text to ordinary alphanumeric characters, compare normalization results, or analyze code points, also use a Unicode code table. To compare character counts, UTF-8 bytes, and UTF-16 code units, use a character-count tool.
Check display compatibility, searchability, and accessibility.
- If the destination font lacks the glyph, it may appear as a box or blank space, so paste it into the actual device and application to verify
- Even if text can be displayed in a profile body, it may not meet the allowed-character, length, or normalization rules for a username or ID
- For important information that needs search, screen reading, voice input, or editing after copying, also provide ordinary characters
- Do not mix visually similar Latin, Greek, Cyrillic, and other characters in identifiers or use them for impersonation or misidentification
- Do not use decorative Unicode in Passwords, URLs, Email Addresses, Source Code, or data to be signed.
What DevelopTools can display does not guarantee that the same glyph appears in every OS, SNS, browser, and application. Platform specifications change, so it does not claim that a character will always work in a specific service.
Primary sources for Unicode and JavaScript
- Unicode UAX #15:Unicode Normalization Forms
- Unicode UAX #29:Unicode Text Segmentation
- Unicode UTS #39:Unicode Security Mechanisms
- Unicode:Mathematical Alphanumeric Symbols
- MDN:String.length
- MDN:String.prototype.normalize()
- MDN:Intl.Segmenter
Use UAX #15 for normalization, UAX #29 for grapheme clusters, and UTS #39 for confusables and identifier security. Compare JavaScript implementations against MDN explanations for String.length, normalize(), and Intl.Segmenter.
Example: 𝐀 displays on a PC but becomes □ on an older device
Copy the string from both devices and verify whether U+1D400 is preserved.
If both are U+1D400, the primary likely cause is font support on the older device, not data corruption.
- Check U+1D400
- Display with a different font.
- Check the OS update status.
- Change to standard A or another style
For public text where the user's environment cannot be chosen, prioritize standard characters.
Frequently asked questions
- Will converted characters display the same way on every device?
- Cannot guarantee. Even with a correct Code Point, it displays as □ if the OS or Application Font lacks the Glyph, and glyph shapes also differ by Font. Check actual display at the destination.
- Is the entered text sent to or stored on the Server?
- The current special-character and fancy-text conversion tool converts in the Browser and does not save input text or results to the Server or LocalStorage. Only display settings and favorites are stored on the device.
- Will running NFKC always restore ordinary characters?
- Only characters with defined compatibility decomposition can be restored. Upside-down text, lookalike characters, custom Mappings, combining decorations, and more may not be restored Losslessly, so retain the original string.