Hangul Mojibake Fixer
Fix Korean text and file names made on a Mac that appear as separated jamo or garbled on Windows. Supports NFD↔NFC conversion, jamo joining/splitting, batch file-name conversion and encoding-mismatch recovery.
macOS stores Hangul decomposed (NFD, "ㅎ + ㅏ + ㄴ") while Windows and Linux store it composed (NFC, one syllable "한"). Paste the broken-looking text and convert it to NFC.
Accented non-Korean characters (é ü ñ) are converted the same way.
Analysis
Code points before
Code points after
"가" is one code point U+AC00 in NFC and two (U+1100 U+1161) in NFD.
Standalone jamo typed on a keyboard (ㅎㅏㄴㄱㅡㄹ) are not joined by NFC conversion. Join them into syllables here, or split syllables back.
Joining rules
- A consonant followed by a vowel becomes the initial of the next syllable. ㄷㅏㄹㄱㅏ becomes "달가".
- Compound finals (ㄹㄱ→ㄺ) and compound vowels (ㅗㅏ→ㅘ) are joined only for valid pairs.
- Typing the same consonant twice for a double consonant (ㄱㄱ) is not joined; enter ㄲ as one character.
- ㅇㅏㄴㅇㅏ joins as "안아". Put a space between them if you want it read differently.
Paste file names one per line, or drop files and folders here. Only names are read. To fix files inside a folder, open it, select all the files and drop them.
Drop files or folders here
or choose files
| Original name | New name | Status |
|---|
Rename scripts
Run them in the folder that contains the files. Review the commands first and back up important files.
macOS file systems sometimes treat NFC and NFD as the same name, so the terminal script renames through a temporary name.
For automatic real-time conversion on a Mac, see nfd2nfc (macOS-only tool). nfd2nfc
Paste text garbled by a wrong encoding, such as "안녕", "¾È³ç" or "�쒓�", and the original is estimated. Useful when names break after unzipping a Mac ZIP on Windows.
Recovery candidates
Recovery works only when the bytes survived. If there are several candidates, pick the one that reads correctly.
Turns text typed with the wrong layout ("dkssud") into Hangul ("안녕"), and back. Based on the standard 2-set (dubeolsik) keyboard.
Only Q W E R T O P change with Shift (ㅃ ㅉ ㄸ ㄲ ㅆ ㅒ ㅖ); other capitals read as their lowercase jamo. Digits, symbols and spaces are kept.
Converts Hangul to Latin letters following the Revised Romanization of Korean (2000). Words and sentences follow pronunciation rules; personal names are transcribed letter by letter, with common surname spellings shown as candidates.
Standard and limits
- This is the official standard. If you already use a spelling on your passport, keep it — common spellings such as Kim or Lee are shown as candidates.
- Tensification is not reflected, by rule (압구정 Apgujeong, 낙동강 Nakdonggang). Liaison, nasalization, lateralization, palatalization and ㅎ aspiration (좋고 joko) are reflected.
- Without a dictionary, morphology-dependent cases follow the general rule. For nouns, ㄱ/ㄷ/ㅂ + ㅎ keeps the h (묵호 Mukho, 집현전 Jiphyeonjeon); the verb 잡혀 is japyeo officially but comes out japhyeo here.
- Verbs like 읽고 (ㄺ before ㄱ read as ㄹ), exceptions like 밟다/넓다, and n-insertion (학여울) are not handled.
- Names may use hyphens between syllables or not (Gil-dong / Gildong). Either way, no sound changes are applied.
Extracts only the first consonant (choseong) of each Hangul syllable — useful for building initial-consonant search indexes or quizzes.
"삼성전자" → ㅅㅅㅈㅈ. Vowels and final consonants are dropped.
Text and file names you enter are used only in this browser and are never sent to a server. For files, only the names are read, never the contents.
Why does this happen?
macOS stores file names decomposed (NFD) and Windows and Linux use composed (NFC). A name made on a Mac can therefore look split into jamo elsewhere, and archives, Git and cloud sync may treat the same file as two. Also, unzipping a Mac-made ZIP on Windows reads UTF-8 names as the legacy Korean encoding (CP949), garbling them.
What this tool does not do
A browser cannot rename files on your computer, so this tool generates rename scripts instead. Garbling where the bytes are already lost (�) cannot be recovered; reopen the original with the correct encoding.
Add Hangul readings to text written in Chinese characters (hanja): replace the characters, append them as hanja(reading), or produce <ruby> markup. The reading table loads once when you first open this tab, and nothing you type is sent to a server.
Loading the reading table…
Find hanja by reading
Readings come from Unicode Unihan (kHangul); for characters with several readings the one used in the Ministry of Education basic hanja list is the default. This is not a dictionary, so polyphonic characters outside the built-in rules (e.g. 樂, 行) may be wrong — pick the right one in the list below. A run of consecutive hanja is treated as one word and the initial-sound rule applies only at its start (separate words with spaces). Meanings are not shown because Unihan has no Korean glosses.
A reference transcription only. Parts of the Korean Braille rules (contractions, quotation marks, brackets and so on) are not covered, so it is not an official transcription. Have official documents and publications checked by a braille proofreader. Nothing you type is sent to a server.
Supported: Hangul (initials, vowels, finals, compound finals, tense consonants), contractions, numbers (number sign ⠼), Latin letters (⠴…⠲, capital ⠠), and . , ? !. To avoid ambiguity a contraction is not used when the next syllable starts with a vowel. Decoding has limits: a final ㅋ/ㅌ/ㅍ at the very end is read as punctuation, and ⠌ is read as the final ㅆ.
FAQ
Are my text or files uploaded?
No. Everything is converted in your browser, and for files only the names are read, never the contents.
I converted to NFC but a Mac still shows it the same.
A Mac may display it composed anyway. The trouble appears when moving to another system, so convert to NFC before moving.
It says names collide.
Two different names become the same name after conversion (for example the same name stored once as NFD and once as NFC). Remove or rename one first.