Unicode Normaliser
Applies NFC, NFD, NFKC or NFKD — the fix for Korean text from macOS that looks right but never matches.
Converts text between the four Unicode normalisation forms and shows what each one changes, in code points and in bytes. The practical case is Korean: a name typed on a Mac is stored decomposed and compares unequal to the same name typed on Windows, which is why a search or a VLOOKUP finds nothing.
Text
Composed. What the web, Windows and every database expect. Start here.
Nothing leaves this tab. Normalisation runs on every keystroke; the four forms are computed together so you can compare them.
This text has 6 split Hangul jamo.
That is the macOS filename form. It renders as normal Korean but compares unequal to the same text typed on Windows, which is why a search or a VLOOKUP finds nothing. NFC puts the syllables back together.
NFC output
All four forms
| Form | Changes it | Code points | UTF-8 bytes | Reversible |
|---|---|---|---|---|
| NFC | yes, from code point 0 | 22 | 46 | yes |
| NFD | yes, from code point 7 | 37 | 89 | yes |
| NFKC | yes, from code point 0 | 24 | 44 | no |
| NFKD | yes, from code point 7 | 40 | 90 | no |
The byte column is the practical one: decomposed Korean costs nine UTF-8 bytes per syllable where composed costs three, which is how a name passes a length check on one machine and fails it on another.
What NFC changed
- at 0
한글한글6 → 2 code points
How to use it
Paste the text that is not matching
If it contains split Hangul jamo, a warning says so with the count before you do anything else.
Use NFC unless you know otherwise
NFC is the composed form the web, Windows and every database expect. NFD is what macOS stores filenames in. NFKC is a search key rather than display text.
Compare all four before deciding
The table shows which forms change your text at all, what it costs in code points and UTF-8 bytes, and whether the change can be undone.
Common questions
Why does my Korean name not match in Excel?
One side is decomposed and the other composed. They render identically and are different byte sequences, so an exact-match lookup fails. Normalise both sides to NFC and they match.
Is NFKC safe to use everywhere?
No — it is one-way. ㈜ becomes (주), ① becomes 1, A becomes A, and none of that can be turned back. Use it for a search key or a comparison, not for text you are going to store and display.
Will NFC join my ㄱ and ㅏ into 가?
No. Those are compatibility jamo — the standalone letters of a keyboard chart — and they are separate characters, not the conjoining jamo that make up a syllable. Only NFKC touches them, by mapping them onto the conjoining block.
Why does the byte count matter?
Decomposed Korean costs nine UTF-8 bytes per syllable where composed costs three. That is how a name passes a length check on one machine and fails it on another, with no visible difference between them.
Feed it from
Case Converter
Converts between UPPER, lower, Title, Sentence, camelCase, snake_case, kebab-case and CONSTANT_CASE.
Whitespace Cleaner
Trims trailing spaces, collapses runs of blanks, converts tabs and removes empty lines.
Encoding Detector & Converter
Guesses a file’s character encoding — CP949, Shift_JIS, GB18030, Windows-1252 and more — with a side-by-side preview of each candidate, then re-saves it as UTF-8 (with or without BOM), UTF-16 or EUC-KR/CP949.
Unicode Inspector
Breaks text into codepoints with names, blocks, scripts and UTF-8/UTF-16 byte sequences.
Next
These accept what this tool produces, so the result can go straight in.
CSV Cleaner
Trims cells, normalises headers, fixes number and date formats and reports rows with the wrong column count.
Hangul Initial Search
Extracts initial consonants from Hangul and matches a list against a 초성 query — ㄱㅁㅇ finds 감마원.
Encoding Detector & Converter
Guesses a file’s character encoding — CP949, Shift_JIS, GB18030, Windows-1252 and more — with a side-by-side preview of each candidate, then re-saves it as UTF-8 (with or without BOM), UTF-16 or EUC-KR/CP949.
Unicode Inspector
Breaks text into codepoints with names, blocks, scripts and UTF-8/UTF-16 byte sequences.
Invisible Character Remover
Finds and strips zero-width spaces, BOMs, soft hyphens and bidi controls hidden in pasted text.
Find & Replace
Replaces text by literal, whole word or regular expression, with capture groups and a preview of every hit.