Lo — Letter, other

Halfwidth Hangul Filler U+FFA0

Halfwidth Hangul Filler is the halfwidth form of Hangul Filler, occupying half a character cell.

Folds to U+1160 under NFKC

3 bytes in UTF-8 · Narrow · Halfwidth and Fullwidth Forms

Unicode properties

Codepoint
U+FFA0
General Category
Lo — Letter, other
Unicode block
Halfwidth and Fullwidth Forms
White_Space
No
NFKC
Folds to U+1160
Rendered width
Narrow
UTF-8 size
3 bytes
Collapses in HTML
No

Encodings and escapes

UTF-8
EF BE A0
UTF-16
FFA0
HTML decimal
ᅠ
HTML hex
ᅠ
JavaScript
"\uFFA0"
Python
"\uFFA0"
CSS content
"\FFA0"

What it was designed for

Legacy halfwidth Korean text encoding. Unicode assigns it to the Halfwidth and Fullwidth Forms block and to General Category Lo, which is Letter, other.

In practice U+FFA0 is a narrower alternative to U+3164 that folds to the same codepoint under NFKC.

Does U+FFA0 work as invisible text?

Partly. It survives trim() and changes under NFKC. ItsWhite_Space property is No, so no trimming function removes it, and a name field accepts it.

NFKC folds it to U+1160. A platform that normalizes usernames — which most do, to stop two visually identical names being registered separately — stores that other codepoint instead. The name still displays blank, and the stored value differs from what you pasted.

How it compares to the alternatives

Four properties decide which invisible character to use, and they separate these three cleanly. Halfwidth Hangul Filler is shown against the plain space and against the character most often recommended for blank names.

Halfwidth Hangul Filler compared with Space and Hangul Filler across the four decisive properties
PropertyU+FFA0U+0020U+3164
CategoryLoZsLo
Removed by trim()NoYesNo
NFKC→ U+1160stable→ U+1160
Rendered widthNarrowNarrowWide
UTF-8 bytes313
Works in a name fieldNoNoNo

Halfwidth Hangul Filler survives trimming like the reference character and differs from it under normalization.

How to type U+FFA0

To insert U+FFA0, 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 — "\uFFA0"
  • Python — "\uFFA0"
  • HTML — ᅠ or ᅠ
  • CSS content"\FFA0"
  • URL encoding — %EF%BE%A0

Keyboard entry

Keyboard methods exist and none is reliable across systems. On Linux and in most GTK applications, Ctrl+Shift+U followed by ffa0 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+FFA0. Copying remains the dependable method on every platform.

Why U+FFA0 fails, and what to do

It fails when a platform normalizes with NFKC, which silently replaces it with U+1160. 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 — U+3164 or U+2800.

A box or question mark appears. The font has no glyph at U+FFA0, 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. Halfwidth Hangul Filler folds to U+1160 under NFKC, so that is the codepoint now stored.

Is it a security risk?

Yes, in source code and identifiers, and no in ordinary text. U+FFA0 is a valid JavaScript identifier character, so it shares the invisible-variable risk of U+3164, to which it normalizes.

The exposure is limited to contexts where an invisible character changes meaning without changing appearance. Pasting U+FFA0 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.

How to find it in existing text

Match it by category rather than by codepoint. The regex\p{Lo} matches Halfwidth Hangul 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.

Other Letter, other characters

Every character below shares categoryLo, so all of them behave identically undertrim(). Only their width and byte cost differ.

See all 29 invisible characters

Frequently asked questions

01

What is U+FFA0?

U+FFA0 is Halfwidth Hangul Filler. Halfwidth Hangul Filler is the halfwidth form of Hangul Filler, occupying half a character cell.

02

Does Halfwidth Hangul Filler work in a username?

Partly. Halfwidth Hangul Filler survives trim(), because its White_Space value is No. NFKC folds it to U+1160, so a platform that normalizes stores a different codepoint than the one you pasted.

03

How do I type U+FFA0?

Copy it from the button on this page. To insert it in code, use the escape sequence \uFFA0 in JavaScript or Python, or the HTML entity ᅠ. On Windows, Alt codes do not reliably produce invisible characters, so copying is the dependable method.

04

How many bytes does Halfwidth Hangul Filler use?

3 bytes in UTF-8. A field that enforces a byte limit rather than a character limit counts it as 3, so a 30-byte field holds 10 of them.

05

Where can I copy and paste Halfwidth Hangul Filler?

Use the copy button at the top of this page. Halfwidth Hangul Filler copy paste puts the single codepoint U+FFA0 on your clipboard with nothing attached — no leading space, no trailing newline.

06

What is the code for Halfwidth Hangul Filler?

The codepoint is U+FFA0, written as unicode FFA0 in short form. In HTML it is ᅠ or ᅠ, and in JavaScript or Python it is the escape \uFFA0.

07

Why does Halfwidth Hangul Filler show as a box?

The font in use has no glyph for that codepoint, so the renderer draws the .notdef glyph, which most fonts display as an empty rectangle. The character is stored correctly and only the display is wrong.

Written by , developer and writer.

Last reviewed