Skip to content
JTK

Full-width ↔ Half-width Converter

Fix text a Japanese form rejects: convert between full-width and half-width characters.

Latin and digits to half-width, katakana to full-width.

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:

InputNFKC givesWhat happened
1A circled number became a digit
株式会社One character became four
IVA Roman numeral became two letters
fiA ligature was split
½1⁄2A 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

InputDirectionOutput
ABC123To half-widthABC123
ABC123To full-widthABC123
ガギグTo half-widthガギグ
ガギグTo full-widthガギグ
A ガNormaliseA ガ
¥100To 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.

Frequently asked questions

What is the difference between full-width and half-width?

Full-width characters (全角) occupy the same square as a kanji; half-width ones (半角) are the normal narrow Latin characters. A and A are the same letter at two widths, and each has its own Unicode code point, so software treats them as different characters.

Why is a Japanese form rejecting my input?

Usually because it expects one width and got the other — commonly half-width digits in a phone number field, or full-width kana in a name field. Convert and paste it back.

What does the Normalise option do?

It applies the convention modern Japanese text follows: Latin letters and digits to half-width, katakana to full-width. That turns A ガ into A ガ in one pass.

Does this use Unicode NFKC normalisation?

No, deliberately. NFKC looks like a free width converter but is a compatibility normaliser — it also rewrites ① to 1, ㍿ to 株式会社 and ½ to 1⁄2. Those are meaning changes, not width changes, so this uses a curated table instead.

How is half-width katakana handled?

Correctly, including the two-code-point case. ガ is one character full-width and two half-width (カ plus a voicing mark), so converting either way composes or decomposes it rather than dropping the mark.

Keep exploring