Paste text above and convert it in either direction, or normalise it in one pass. Everything runs in your browser.
What full-width and half-width mean
Japanese typography inherits a grid: every kanji and kana occupies one square cell. Latin letters and digits were given versions that fill the same square, so they could sit in that grid without breaking alignment. Those are full-width (全角, zenkaku). The ordinary narrow ones are half-width (半角, hankaku).
So A and A are the same letter shown at two widths — but they are different
Unicode code points, and software compares code points. That is why a form can
accept 090-1234-5678 and reject 090-1234-5678, and why a search for
"ABC" misses "ABC".
Half-width katakana is the mirror image of the same history: a cramped kana set from early terminals that could not fit full-width characters. It still appears on receipts, bank statements and older systems.
The convention worth knowing
Modern Japanese text has settled on a norm, and it is what the Normalise option applies:
- Latin letters, digits and ASCII punctuation → half-width
- Katakana → full-width
So A ガ becomes A ガ. If you are unsure which direction you want, that is
almost always it.
Why this does not use NFKC
Every language has a one-line width converter built in — Unicode's NFKC normalisation — and reaching for it is the obvious move. It is also wrong.
NFKC is a compatibility normaliser, not a width converter. Alongside the width folding you want, it applies these:
| Input | NFKC gives | What happened |
|---|---|---|
| ① | 1 | A circled number became a digit |
| ㍿ | 株式会社 | One character became four |
| Ⅳ | IV | A Roman numeral became two letters |
| fi | fi | A ligature was split |
| ½ | 1⁄2 | A fraction was decomposed |
Those are changes of meaning, not of width, and they happen silently in the middle of text someone asked you to reformat. This tool uses a curated table covering exactly the width variants instead, so ① stays ①.
One more distinction it preserves: the wave dash 〜 (U+301C) and the full-width tilde ~ (U+FF5E) look nearly identical and are different characters. Only the tilde is a width variant; the wave dash is left alone.
Half-width katakana composes and decomposes
This is the part most converters get wrong. ガ is one character full-width. Half-width, it is two: カ followed by a separate voicing mark ゙.
So the conversion is not character-for-character. Going half-width, ガ splits into ガ; going full-width, カ followed by ゙ merges back into ガ. パ works the same way with the semi-voiced mark ゚. A converter that maps one character to one character loses the voicing entirely and turns ガ into カ — a different sound.
Examples
| Input | Direction | Output |
|---|---|---|
| ABC123 | To half-width | ABC123 |
| ABC123 | To full-width | ABC123 |
| ガギグ | To half-width | ガギグ |
| ガギグ | To full-width | ガギグ |
| A ガ | Normalise | A ガ |
| ¥100 | To half-width | ¥100 |
When you would use this
- A Japanese web form rejects your input for the wrong character width.
- You pasted from a bank statement or receipt and got half-width katakana.
- You are cleaning data before comparing or importing it, where A and A must count as the same letter.
- Text alignment looks wrong in a monospaced context because widths are mixed.