Hangul Jamo Toolkit

Take Korean syllables apart into their 초성, 중성 and 종성 components, put jamo back together into syllables, or pull the initial consonants out of a whole string for a search index. Every component is shown with its Unicode code point, in both the compatibility and conjoining forms developers actually run into.

Enter Korean text above. Everything is computed in your browser with the standard Unicode Hangul formula - nothing is uploaded.

The formula behind every Hangul syllable

Hangul is unusual among writing systems in that its Unicode block is generated by an equation rather than listed as a table. Every modern syllable sits in the range U+AC00 to U+D7A3, and its code point is: 0xAC00 + (초성 × 21 + 중성) × 28 + 종성. There are 19 initial consonants, 21 medial vowels and 28 final consonants counting “none” - and 19 × 21 × 28 is 11,172, exactly the size of the block. That means decomposing and composing are pure arithmetic, with no lookup and no ambiguity.

There are two different sets of jamo characters, and mixing them up is the usual source of confusion. Compatibility jamo (U+3131 onwards) are standalone characters - what a Korean keyboard produces when you type a lone consonant, and what people expect to see displayed. Conjoining jamo (U+1100 onwards) are the real components used inside decomposed text. This tool shows both code points for every component, so you can tell which one your data actually contains.

Extracting 초성 is the standard way to build Korean search. Typing ㄱㄴㄷ to find 김남도 is a familiar shortcut in Korean apps and contact lists, and it works by indexing the initial consonant of every syllable ahead of time and matching against that string.

Questions fréquentes

한글 초성 추출 - how do I extract Korean initial consonants?

Switch to the 초성 추출 mode, paste your Korean text, and the initial consonant of every syllable comes out as a single string - 한국어 becomes ㅎㄱㅇ. This is exactly what Korean apps index so that typing ㄱㄴㄷ finds 김남도. You can keep or drop spaces, numbers and Latin letters depending on how your index is built.

What are 초성, 중성 and 종성?

They are the three slots in a Korean syllable block. 초성 is the initial consonant, 중성 is the medial vowel, and 종성 is the optional final consonant. 한 is ㅎ + ㅏ + ㄴ; 가 is ㄱ + ㅏ with no final consonant. Every one of the 11,172 modern syllables is one of these combinations, which is why they can be taken apart and rebuilt exactly.

자소분리 해결 - how do I fix jamo-separated Korean text?

자소분리 ('jamo separation') is text where syllables have fallen apart into their individual components, so 한글 displays as scattered jamo instead of two blocks. It is caused by NFD normalisation, most often by macOS, which stores filenames in decomposed form. Paste the broken text into Compose mode and it will be recombined into proper syllables. If it came from a ZIP file, the ZIP Filename Encoding Fixer applies the same repair to every filename in the archive at once.

Why does my Korean text look fine but have the wrong length?

Because it is in NFD form. Decomposed Hangul renders identically to composed Hangul in most fonts, but 한글 is 2 characters in NFC and 6 in NFD. That silently breaks length limits, substring operations, database keys and string comparison. Compose mode normalises it to NFC, and the tool reports both lengths so you can confirm which form you have.

What is the difference between the two code points shown per jamo?

The first is the compatibility jamo, the standalone character you see on a keyboard and in most UI. The second is the conjoining jamo, the component actually used inside decomposed syllables. They look the same but are entirely different code points, and code that searches for one will never match the other - which is why both are shown.

Does it handle compound final consonants like ㄺ?

Yes. Compound finals such as ㄳ, ㄺ and ㅄ are single entries in the 종성 set, so 닭 correctly decomposes to ㄷ + ㅏ + ㄺ rather than being split further. All 28 final consonants and all 11,172 syllables round-trip exactly.

Is my text uploaded anywhere?

No. This is arithmetic on code points and runs entirely in your browser. Nothing is sent to a server.

Outils similaires