Fullwidth A and halfwidth A are different characters that only look alike
In East Asian typography a fullwidth character fills a square cell as wide as the character is tall, and a halfwidth character fills half of that. The W3C's Requirements for Japanese Text Layout (JLREQ) defines them in just those terms. English readers usually meet the difference in one of two places: the wide, spaced-out Latin letters people use for "aesthetic" nicknames and captions, and the stray ABC123 that sneaks into spreadsheets and sign-up forms copied from Japanese, Chinese or Korean sources. The two look alike to a person and differ completely to a computer: fullwidth A is U+FF21, halfwidth A is U+0041, so search, sorting, de-duplication and form validation treat them as unrelated.
The converter above has three directions. "To halfwidth" turns ABC123 into ABC123, "To fullwidth" does the reverse, and "Standard" keeps Latin letters, digits, symbols and spaces halfwidth while widening halfwidth katakana to its normal form. Six chips (letters, digits, symbols, spaces, kana, other) choose what may change, and each chip shows how many characters would change in the current direction. The result is drawn one character per cell, wide characters taking two cells and halfwidth ones taking one, with every changed character marked.
When you need to switch width
- Making fullwidth text for a nickname or caption: "To fullwidth" turns vaporwave aesthetic 2026 into vaporwave aesthetic 2026, with each letter spread over a full cell. Some sites and games may refuse fullwidth characters in a username or handle, so check the sign-up form before relying on it for an account name.
- Cleaning up data from Japanese, Chinese or Korean sources: supplier lists, shipping labels and exported order sheets often contain fullwidth digits, letters and spaces. A VLOOKUP or a duplicate check will not match RB-1021 against RB-1021 until both use the same width.
- Filling in a Japanese web form: phone, postcode and e-mail fields often want halfwidth characters, while name fields may ask for fullwidth or halfwidth katakana. If your input method was in the wrong mode, paste the text here and convert it instead of retyping.
- Reading old halfwidth katakana: legacy systems and some bank transfer data use ロベリン-style halfwidth katakana. "Standard" widens it to ロベリン, joining the voicing mark into the letter.
- Normalizing user input in code: converting width before storing a value keeps one name or code from being saved in two forms. Unlike NFKC, this tool leaves ① and ㎏ alone, which matters when numbered lists or units must survive.
- Checking text length in a terminal or a fixed grid: wide characters occupy two columns, so the cell count shown above tells you how much room the text really needs.
How to use it
- Paste your text into the input box. The page opens with an order-form example, and the example buttons below load an aesthetic-text sample and a halfwidth-katakana sample.
- Pick a direction: "To halfwidth" for data cleanup, "To fullwidth" for wide decorative text, "Standard" when halfwidth katakana is mixed in.
- Check the chips. Each number is how many characters change in this direction; if a chip you turned off still has a number, a note under the result says so.
- Look at the marked characters in the result. Clicking one opens the character lens with the before and after shapes, code points and widths, and clicking an entry in the list highlights every occurrence.
- Press "Copy result", or "Use result as input" to convert it again in another direction.
The rules: the pairs Unicode defines
Unicode keeps the width variants in its Halfwidth and Fullwidth Forms block (U+FF00 to U+FFEF) and records in UnicodeData.txt which ordinary character each one is the wide (<wide>) or narrow (<narrow>) form of. In Unicode 18.0 there are 104 wide mappings and 122 narrow mappings. The converter uses only those pairs.
| Kind | Halfwidth | Fullwidth | Pairs |
|---|---|---|---|
| Letters | A to Z U+0041 to 005A, a to z U+0061 to 007A | A to Z U+FF21 to FF3A, a to z U+FF41 to FF5A | 52 |
| Digits | 0 to 9 U+0030 to 0039 | 0 to 9 U+FF10 to FF19 | 10 |
| Symbols | 32 ASCII symbols such as ! and ~ within U+0021 to 007E | 32 symbols such as ! and ~ within U+FF01 to FF5E | 32 |
| Space | Ordinary space U+0020 | Ideographic space U+3000 | 1 |
| Kana | Halfwidth katakana, voicing marks and punctuation such as カ ゙ 「 (U+FF61 to FF9F) | Fullwidth katakana and punctuation such as カ ゛ 「 | 63 |
| Other | ¢ £ ¬ ¯ ¦ ¥ ₩ and ⦅ ⦆ / halfwidth Hangul letters ᄀ to ᅵ and halfwidth symbols │ ← ↑ → ↓ ■ ○ | ¢ £ ¬  ̄ ¦ ¥ ₩ and ⦅ ⦆ / ordinary jamo ㄱ to ㅣ and │ ← ↑ → ↓ ■ ○ | 9 + 59 |
For the 94 ASCII letters, digits and symbols, the code point difference is always hex FEE0 (65,248 in decimal): A (0x41) plus 0xFEE0 is A (0xFF21), and ! (0xFF01) minus 0xFEE0 is ! (0x21). The space is the one exception, pairing U+0020 with U+3000. The halfwidth Hangul letters and halfwidth symbols under "Other" exist for compatibility with old terminals, so the tool only widens them to ordinary characters and never creates them.
"Standard" resolves every wide form to its ordinary character and widens every narrow form. That is almost exactly what NFKC does for width, minus its other compatibility changes, so ① and ㎏ stay as they are. The one difference: a halfwidth voicing mark ゙ or ゚ that cannot merge with the character before it becomes a combining mark (U+3099, U+309A) under NFKC, while this tool turns it into the spacing marks ゛ and ゜.
The 32 symbol pairs
Digits and letters line up one to one, but symbols are easy to mix up because many look similar. The code under each fullwidth character is its code point.
| Half | Full · code | Half | Full · code | Half | Full · code | Half | Full · code |
|---|---|---|---|---|---|---|---|
| ! | !U+FF01 | " | "U+FF02 | # | #U+FF03 | $ | $U+FF04 |
| % | %U+FF05 | & | &U+FF06 | ' | 'U+FF07 | ( | (U+FF08 |
| ) | )U+FF09 | * | *U+FF0A | + | +U+FF0B | , | ,U+FF0C |
| - | -U+FF0D | . | .U+FF0E | / | /U+FF0F | : | :U+FF1A |
| ; | ;U+FF1B | < | <U+FF1C | = | =U+FF1D | > | >U+FF1E |
| ? | ?U+FF1F | @ | @U+FF20 | [ | [U+FF3B | \ | \U+FF3C |
| ] | ]U+FF3D | ^ | ^U+FF3E | _ | _U+FF3F | ` | `U+FF40 |
| { | {U+FF5B | | | |U+FF5C | } | }U+FF5D | ~ | ~U+FF5E |
The fullwidth backslash is \ (U+FF3C). The yen sign has its own pair: ¥ (U+00A5) and ¥ (U+FFE5), with the won sign ₩ and ₩ pairing the same way. They sit under the "Other" chip, not "Symbols".
One line, four ways
A line mixing fullwidth letters and digits, halfwidth katakana, a fullwidth yen sign and a circled digit, converted with every chip on. Cells count wide characters as two and the rest as one.
| Direction | Result | Changed | Cells | UTF-8 |
|---|---|---|---|---|
| To halfwidth | TEL 03-1234 ガイド ¥5,000 ① | 20 | 26 | 39 |
| To fullwidth | TEL 03-1234 ガイド ¥5,000 ① | 3 | 47 | 72 |
| Standard | TEL 03-1234 ガイド ¥5,000 ① | 23 | 27 | 33 |
| NFKC | TEL 03-1234 ガイド ¥5,000 1 | - | - | - |
"To halfwidth" leaves the halfwidth katakana alone, and "To fullwidth" changes little here because most of the line is already fullwidth: only the five characters ガイド merge into the three characters ガイド. "Standard" combines both, and NFKC goes one step further and turns ① into 1. If that circled digit was a list number, this is why NFKC is the wrong tool.
Halfwidth katakana and the voicing mark
Halfwidth katakana has no single characters for voiced sounds such as ガ or パ. They are written as two characters, the base kana followed by a separate voicing mark ゙ or semi-voicing mark ゚. Widening therefore has to merge two characters into one, and narrowing turns one character into two, which can push a field past its length limit.
| Half | Full | Length | Note |
|---|---|---|---|
| ガ | ガ | 2 → 1 | Merged into the voiced letter |
| パ | パ | 2 → 1 | Merged into the semi-voiced letter |
| ヴ | ヴ | 2 → 1 | The v sound in loanwords |
| ヷ | ヷ | 2 → 1 | A rare combined letter that exists |
| ア゚ | ア゜ | 2 → 2 | No combined letter, so the spacing semi-voicing mark ゜ is used |
| ゙ | ゛ | 1 → 1 | A lone voicing mark becomes the spacing mark ゛ (U+309B) |
| ッ | ッ | 1 → 1 | Small kana have pairs too |
| ー | ー | 1 → 1 | Long-vowel mark |
| 「」。、・ | 「」。、・ | 5 → 5 | Japanese punctuation belongs to the kana chip |
The small ヵ and ヶ and the old letters ヮ, ヰ and ヱ have no halfwidth form, so they stay fullwidth even under "To halfwidth". If a field accepts only halfwidth katakana, check the lens for leftovers. Some Japanese banks also restrict kana in transfer names; for example, an SMBC FAQ for its Web21 BUSINESS plan says small kana are not to be used and are converted to large ones (ワカクサシヨウテン, not ワカクサショウテン). That is one service's rule, and this tool does not turn small kana into large ones, so follow your own bank's instructions.
Spreadsheets and code
| Tool | Full → half | Half → full | Worth knowing |
|---|---|---|---|
| Excel | =ASC(A1) | =DBCS(A1) | Works with double-byte character set (DBCS) languages; with other language settings it may leave the text unchanged, and text without fullwidth characters is not changed. Microsoft says the name of the reverse function and the characters it converts depend on language settings (it is JIS in Japanese Excel). |
| Google Sheets | =ASC(A1) | - | Converts fullwidth ASCII and katakana to halfwidth. The help page does not describe a function for the other direction. |
| JavaScript | s.normalize('NFKC') | - | Also converts ①, ㎏, … and other compatibility characters. |
| Python | unicodedata.normalize('NFKC', s) | - | Same rule as NFKC in JavaScript. |
MDN describes NFKC as compatibility decomposition followed by canonical composition. To narrow only letters, digits, symbols and spaces and leave circled digits and unit signs alone, apply the FEE0 offset yourself.
// JavaScript: fullwidth ASCII-range characters (U+FF01 to FF5E) and the ideographic space only
s.replace(/[!-~]/g, c => String.fromCharCode(c.charCodeAt(0) - 0xFEE0)).replace(/ /g, ' ');
# Python 3.9 or later: the same rule
s.translate({c: c - 0xFEE0 for c in range(0xFF01, 0xFF5F)} | {0x3000: 0x20})
Typing in the right width from the start
If fullwidth characters keep appearing as you type, the input method is in a fullwidth mode. In the Microsoft Japanese IME, these keys convert the text you are composing:
| Key | Result |
|---|---|
| F6 | Hiragana |
| F7 | Full-width katakana |
| F8 | Half-width katakana |
| F9 | Full-width alphanumeric |
| F10 | Half-width alphanumeric |
For the Microsoft Korean IME, Microsoft's page describes a right-click on the input indicator, then Character width, then Half-width or Full-width, and lists no shortcut key for it.
Common slips
- Treating 〜 and ~ as the same: the wave dash 〜 (U+301C) and the fullwidth tilde ~ (U+FF5E) are different characters. ~ becomes ~, but 〜 is not a width pair, so it stays and is listed under the look-alikes.
- Assuming every dash is a hyphen: −, – and ― (U+2212, U+2013, U+2015) are not the keyboard hyphen - (U+002D). If a phone number or code still fails validation, look at the look-alike list and fix those by hand.
- A long-vowel mark inside a phone number: typing digits with a Japanese input method can produce ー (U+30FC) instead of a hyphen. It is a kana, so it is not converted, and it is flagged when it sits between digits.
- Expecting "To halfwidth" to shrink everything: ガ becomes the two characters ガ, so length can grow. Check the character count above the result if the field has a limit.
- Using NFKC as a quick fix: it turns ① into 1, … into ... and ㎡ into m2. For numbered lists or unit notation, read the NFKC comparison note under the result first.
- Making a username in fullwidth letters: it looks fine on screen, but a login form or a search for the name may not match it. Keep fullwidth text for decoration.
Limits
- Cells follow Unicode East Asian Width (UAX #11): wide (W) and fullwidth (F) characters count as two, everything else as one. Ambiguous (A) characters such as ① and ※ count as one, though an East Asian font or terminal may draw them in two.
- Real glyph widths depend on the font, so the cell view is a fixed-grid drawing.
- No hiragana to katakana conversion, no small-to-large kana conversion, and no Hangul syllable decomposition or composition.
- 〜, −, special spaces and zero-width characters are reported, not changed. The tool does not trim spaces or remove line breaks either.
- The cell view draws the first 4,000 characters; the rest follows as plain text, and the copy button always includes everything.
- Digits and symbols inside keycap emoji such as 1️⃣ and #️⃣ are never made fullwidth, so the emoji does not break.
- Text is processed in your browser only and is not sent anywhere.
Sources
Basis: the fullwidth and halfwidth pairs and the width classes come from the Unicode 18.0.0 character data, and the spreadsheet functions and input method menus were checked against each vendor's help pages on 21 October 2026. Under the Unicode stability policy, once a character is assigned its decomposition mapping will not change, so these pairs stay the same in later versions.
- 01Unicode 18.0.0 UnicodeData.txt104 <wide> and 122 <narrow> compatibility mappings, U+3000 and U+0020
- 02Unicode chart: Halfwidth and Fullwidth FormsGlyphs and names for U+FF00 to FFEF
- 03Unicode Standard Annex #11: East Asian WidthUnicode 18.0 revision 46, classes F, H, W, Na, A, N
- 04W3C: Requirements for Japanese Text Layout (JLREQ)Full-width is a square character frame, half-width is half an em (JIS X 4051)
- 05Microsoft Support: ASC functionChanges full-width characters to half-width in DBCS languages
- 06Microsoft Support: DBCS functionHalf-width to full-width; the name and characters depend on language settings (JIS in Japanese)
- 07Google Docs Editors Help: ASCFull-width ASCII and katakana to half-width
- 08Microsoft Support: Microsoft Japanese IMEF6 to F10 conversion keys
- 09Microsoft Learn: Korean IMECharacter width menu for half-width and full-width
- 10MDN: String.prototype.normalize()NFKC is compatibility decomposition followed by canonical composition
- 11SMBC FAQ (Web21 BUSINESS)One bank's rule on small kana in transfer names, cited as an example only
- 12Unicode: Character Encoding Stability PoliciesOnce a character is assigned, its decomposition mapping will not change
Frequently asked questions
How do I convert fullwidth numbers like 123 to normal numbers?
Set the direction to "To halfwidth", keep the digits chip on and paste 123. The result is 123 and three characters are marked as changed. In Excel, =ASC(A1) turns fullwidth characters into halfwidth ones, but it only works with double-byte character set (DBCS) language settings and may leave the text unchanged otherwise.
How do I make fullwidth text for a nickname or aesthetic caption?
Choose "To fullwidth" and paste plain text. vaporwave aesthetic 2026 becomes vaporwave aesthetic 2026, with each letter in its own wide cell. Some sites may not accept fullwidth characters in usernames, so keep it for decoration and test it on the form first.
What is the difference between fullwidth and halfwidth characters?
A fullwidth character fills a square cell as wide as the character is tall, and a halfwidth character fills half that width. Their code points differ too: fullwidth A is U+FF21 and halfwidth A is U+0041. In the cell view of this tool, wide characters take two cells and halfwidth ones take one.
How do I convert halfwidth katakana to fullwidth?
Turn the kana chip on and choose "Standard" or "To fullwidth". The two characters ガ (a base kana plus a voicing mark) merge into the single character ガ, パ becomes パ and ヴ becomes ヴ. Small or archaic kana such as ヵ, ヶ, ヮ, ヰ and ヱ have no halfwidth form and stay as they are.
Why does a Japanese form say I must use halfwidth characters?
Fields such as phone numbers, postcodes and e-mail addresses often accept only halfwidth letters and digits, and a Japanese input method set to a fullwidth mode produces 03-1234 instead of 03-1234. Paste the text here with "To halfwidth" to fix it. Check each form's own rules for kana fields, because some ask for fullwidth and some for halfwidth katakana.
How is this different from NFKC normalization?
NFKC resolves every compatibility character, so besides width it turns ① into 1, ㎏ into kg and … into .... This tool changes only the pairs Unicode marks as wide or narrow, so circled numbers and unit signs stay. Under the result, a note lists what NFKC would change on top of the Standard direction.
Can Excel or Google Sheets convert fullwidth to halfwidth?
Excel has ASC for fullwidth to halfwidth and a function called DBCS in English (JIS in Japanese Excel) for the reverse; their names and effects depend on your language settings, and they work with DBCS languages. Google Sheets has ASC for fullwidth ASCII and katakana, and its help page does not describe a reverse function.
Is the text I enter stored or sent anywhere?
No. The conversion runs inside your browser, and the text is neither sent to a server nor kept in the address or in browser storage. Reloading the page restores the example text.