What it was designed for
Korean text processing, marking a syllable block with no vowel. Unicode assigns it to the Hangul Jamo block and to General Category Lo, which is Letter, other.
In practice U+1160 is the codepoint U+3164 folds to under NFKC, making it the stable choice.
Does U+1160 work as invisible text?
Yes, in both name fields and message bodies. Hangul Jungseong Filler has the Unicode property White_Space=No, so trim() does not remove it and the regex class \s does not match it.
NFKC leaves it unchanged, so a platform that normalizes input before storing it keeps the exact codepoint you pasted. That combination — surviving both the trim and the normalization — is what makes a character dependable rather than occasionally lucky.
How it compares to the alternatives
Four properties decide which invisible character to use, and they separate these three cleanly. Hangul Jungseong Filler is shown against the plain space and against the character most often recommended for blank names.
| Property | U+1160 | U+0020 | U+3164 |
|---|---|---|---|
| Category | Lo | Zs | Lo |
| Removed by trim() | No | Yes | No |
| NFKC | stable | stable | → U+1160 |
| Rendered width | Zero width | Narrow | Wide |
| UTF-8 bytes | 3 | 1 | 3 |
| Works in a name field | Yes | No | No |
Hangul Jungseong Filler matches the reference character on both decisive properties, which is why it works where a space fails.
How to type U+1160
To insert U+1160, copy it from the button above. Copying is the only method that behaves identically on every operating system and in every application.
Copy and paste
Use the copy button at the top of this page. Paste into the destination field directly. If the field rejects it, paste into a plain-text editor first and copy from there — rich-text editors and some mobile keyboards rewrite pasted content.
In code
Insert it by escape sequence rather than by pasting a character no reviewer can see. A literal invisible character in a source file is unreadable in review and survives copy-paste into places it was never meant to reach.
- JavaScript and TypeScript —
"\u1160" - Python —
"\u1160" - HTML —
ᅠorᅠ - CSS
content—"\1160" - URL encoding —
%E1%85%A0
Keyboard entry
Keyboard methods exist and none is reliable across systems. On Linux and in most GTK applications, Ctrl+Shift+U followed by 1160 and Enter inserts the character. On macOS, the Unicode Hex Input source acceptsOption plus the four hex digits, and it must be enabled in Keyboard settings first.
Windows Alt codes do not cover this range. The Alt plus numeric-keypad method addresses legacy code pages rather than Unicode codepoints, so it cannot produce U+1160. Copying remains the dependable method on every platform.
How many fit in a field
As many as the field's limit allows, because each one counts as a full character. An invisible character is not free — it consumes the same budget as a letter.
It costs 3 bytes in UTF-8, against 1 byte for a plain space. Fields enforce either a character limit or a byte limit, and the two give very different answers. A 20-character gamertag holds 20 of them. A 20-byte field holds 6.
Platforms rarely state which limit they enforce. A field that accepts 20 letters and rejects 20 invisible characters is counting bytes, so divide the stated limit by 3 to find the real ceiling.
Why U+1160 fails, and what to do
It fails when a field measures rendered width rather than string length, because this character draws nothing. Everything else about the character is stable, so a failure almost always traces to that one condition.
The field clears itself after saving. The value was trimmed to an empty string and the platform restored the previous one. Move to a character withWhite_Space=No, which this one already has.
A box or question mark appears. The font has no glyph at U+1160, so the renderer drew .notdef. The stored value is correct and only the display is wrong. U+2800 has the widest font coverage of the invisible characters.
The value changes between saving and reloading. The platform normalized it. NFKC leaves Hangul Jungseong Filler unchanged, so the cause is a platform-specific substitution rather than normalization.
It works on desktop and fails in a mobile app. The two clients validate separately, and some mobile keyboards strip invisible characters on paste. Paste into a plain-text notes app first, then copy from there.
Is it a security risk?
Yes, in source code and identifiers, and no in ordinary text. U+1160 is a valid JavaScript identifier character for the same reason as U+3164, and carries the same risk of naming an invisible variable in source code.
The exposure is limited to contexts where an invisible character changes meaning without changing appearance. Pasting U+1160 into a username, a bio or a chat message creates no such risk, because nothing downstream interprets it.
To audit text you did not write, match the category with\p{Lo} rather than searching for this codepoint alone.
Where it is used
It is used wherever a field must not be empty but should look empty. Platform behaviour differs enough that each category has its own guide.
- Gaming — in-game names across 9 platforms
- Social media — display names across 10 apps
- Messaging — blank messages across 5 apps
How to find it in existing text
Match it by category rather than by codepoint. The regex\p{Lo} matches Hangul Jungseong Filler and every other character in its category, and it keeps working across Unicode releases.
To confirm whether a specific string contains it, paste the string into the invisible text detector, which lists every codepoint with its category and byte length.