Hangul Jamo Decomposer & Korean Keyboard Converter
Break Hangul into jamo with Unicode code points, and fix Korean typed on the wrong keyboard layout.
Hangul Jamo Decomposer & Korean Keyboard Converter
Break Hangul into letters
Each syllable block, opened into its jamo, code points and keystrokes.Build a syllable
Pick an initial, a vowel and an optional final.Typed in the wrong language?
Korean typed with the keyboard on English (dkssud), or the reverse — converted both ways on the standard two-set layout.안녕하세요
Everything runs in your browser — nothing you type is sent anywhere. There is no lookup table: Unicode defines every Hangul syllable with one formula, and this page runs it.
How to use the Hangul jamo tool
Each syllable block opens into its initial consonant, vowel and final consonant, with the letter names, both kinds of Unicode code point and the keys that type it. Compound vowels such as ㅘ and double finals such as ㄺ are split into the letters they are built from. Halfwidth, circled and parenthesised forms are mapped back to the letter they stand for; archaic letters and Old Hangul are shown as not modelled, with the reason.
Choose an initial, a vowel and an optional final to see the syllable they make, its code point and the arithmetic Unicode uses to reach it.
Paste something like dkssudgktpdy — Korean typed while the keyboard was set to English — and read it back as 안녕하세요. Paste Korean jamo soup such as ㅗ디ㅣㅐ and get the English keys (hello) instead. Each run of text is handled on its own: in mixed text only the runs that look typed on the wrong layout change, and they are underlined.
Click the converted text to copy it. Nothing is stored or sent anywhere.
How Hangul syllables are built from jamo
Hangul is an alphabet that is written in syllable blocks. The letters — jamo — are consonants and vowels, and every block stacks them in a fixed order: an initial consonant, a vowel, and optionally a final consonant. 한 is ㅎ + ㅏ + ㄴ; 글 is ㄱ + ㅡ + ㄹ. Korean spelling rules count 24 basic letters, 14 consonants and 10 vowels, and the rest are built from them: doubled consonants such as ㄲ, compound vowels such as ㅘ (ㅗ + ㅏ), and eleven double finals such as ㄺ (ㄹ + ㄱ), which appear in words like 닭, chicken.
One formula for 11,172 syllables
Unicode does not list Hangul syllables one by one. It defines them arithmetically: there are 19 possible initials, 21 vowels and 28 possible finals (27 consonants and "none"), so 19 × 21 × 28 = 11,172 syllables, laid out in order from 가 at U+AC00 to 힣 at U+D7A3. The code point of any syllable is 0xAC00 + (initial × 21 + vowel) × 28 + final. The same arithmetic gives every syllable's official character name: 퓛, the Unicode Standard's own worked example, is HANGUL SYLLABLE PWILH, assembled from the short names P, WI and LH. Far fewer occur in ordinary words: we counted the headwords of the National Institute of Korean Language's learner dictionary, 한국어기초사전, and its 44,034 words use 1,465 different syllables, 13.1% of the set. That is a floor, since running text adds inflected forms, names and slang, and a complete set means any combination a keyboard can produce still has a code point.
ㄱ is at least four different characters to a computer: U+3131 when typed on its own, U+1100 at the start of a syllable, U+11A8 at the end, and U+FFA1 in halfwidth form. Text that looks identical can fail to match for that reason alone. — Unicode Hangul Compatibility Jamo chart, Hangul Jamo chart and Halfwidth and Fullwidth Forms chart
Two kinds of jamo
Unicode has two sets of jamo. Compatibility jamo are standalone letters: the 51 modern ones (U+3131–U+3163) are what a keyboard types when there is no syllable to join, as in ㅋㅋㅋ, and the same block holds a filler (U+3164) and 42 archaic letters such as ㆍ (U+318D). Conjoining jamo (U+1100 onward) are the parts a syllable decomposes into under Unicode normalisation (NFD), and they come in separate initial and final forms. NFC rebuilds syllables from conjoining jamo and never touches compatibility jamo. NFKC does convert them, so typed ㄱㅏ becomes the syllable 가 and ㅋㅋㅋ becomes three conjoining initials; the Unicode Standard warns that letters meant to stay apart may then need separating. This tool reads syllables, modern letters of either kind, and halfwidth, circled and parenthesised forms. Archaic letters, fillers and Old Hangul fall outside the 11,172, and it shows them as not modelled, with the reason, rather than dropping them.
The keyboard, and text typed on the wrong layout
The standard Korean keyboard is the two-set layout, Dubeolsik: consonants under the left hand, vowels under the right, and Shift for the five tense consonants (ㅃ ㅉ ㄸ ㄲ ㅆ) and ㅒ ㅖ. Typing is letter by letter; the input method groups letters into blocks as they arrive, and a consonant typed after a complete block becomes its final until a vowel follows, when it moves to the next block. Type while the input method is still set to English and 안녕하세요 comes out as dkssudgktpdy.
Every key stands for one letter, so whole syllables convert exactly both ways: the test suite behind this page types out all 11,172 as keys, composes them back and gets every one unchanged. Standalone letters do not survive the trip: ㄱㅏ typed out is rk, which composes back to 가, as it would on a keyboard. When the box holds both Latin letters and Hangul, each run is judged on its own. A Latin word is converted only if all its keys compose into whole syllables, and a run of Hangul only if it contains a standalone letter, so 한국어 in "I love 한국어" is left alone. A short English word whose keys happen to compose, such as "the" (솓), is converted too, which is why converted runs are underlined.
A letter with at least four code points, a first syllable at U+AC00, and names that break their own pattern
Unicode encodes 11,172 precomposed Hangul syllables: 19 initials × 21 vowels × 28 finals, the last of the 28 being "no final".
The first syllable is 가 at U+AC00 and the last is 힣 at U+D7A3; every one in between is reached by one formula, not a table.
ㄱ has at least four code points: U+3131 on its own, U+1100 as an initial, U+11A8 as a final and U+FFA1 in halfwidth form. NFKC also turns circled ㉠ (U+3260) into U+1100, and parenthesised ㈀ (U+3200) into U+1100 in brackets.
The Unicode Standard's own worked example is 퓛, HANGUL SYLLABLE PWILH — ㅍ + ㅟ + ㅀ.
ㅇ is silent at the start of a syllable and is "ng" at the end; its Unicode short name is empty in the first position and NG in the last.
Korean spelling rules count 24 basic letters — 14 consonants and 10 vowels — and give them names such as 기역, 니은 and 디귿.
Three of those names break their own pattern — 기역, 디귿 and 시옷, not 기윽, 디읃 and 시읏 — because the 1527 textbook 훈몽자회 spelled the names with Chinese characters, and none was read 윽, 읃 or 읏.
Korea's 1987 character set, KS C 5601 (now KS X 1001), is a 94 × 94 table of 8,836 cells, too few for all 11,172 syllables in any case. In its ISO registration, 2,350 cells hold Hangul syllables and 4,888 hold hanja; 612 are unused or open for users to define. The Unicode Standard says its own 11,172 syllables were "taken from KS C 5601-1992, representing the full Johab set".
Eleven double finals exist — ㄳ ㄵ ㄶ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅄ — and a keyboard types each as two keys.
On the standard two-set keyboard, Shift is needed for just seven letters: ㅃ ㅉ ㄸ ㄲ ㅆ ㅒ ㅖ.
Frequently asked questions
-
The individual letters of Hangul — consonants such as ㄱ and ㄴ, and vowels such as ㅏ and ㅗ. They are written grouped into syllable blocks: 한 is ㅎ, ㅏ and ㄴ.
-
Unicode encodes 11,172: 19 possible initial consonants × 21 vowels × 28 finals (27 consonants plus "no final"). Far fewer occur in ordinary words: the 44,034 headwords of the National Institute of Korean Language's learner dictionary use only 1,465 of them. Every combination still has a code point.
-
Code point = 0xAC00 + (initial index × 21 + vowel index) × 28 + final index, using Unicode's ordering of the jamo. 한 is 0xAC00 + (18 × 21 + 0) × 28 + 4 = 0xAC00 + 10588 = U+D55C. The "Build a syllable" panel shows the arithmetic for any combination.
-
Compatibility jamo are standalone letters. The 51 modern ones (U+3131–U+3163) are what a keyboard types when no syllable forms, as in ㅋㅋㅋ; the same block also holds a filler and 42 archaic letters. Conjoining jamo (U+1100 onward) are what a syllable breaks into under NFD normalisation, with separate forms for initial and final position.
-
One copy may hold whole syllables and the other decomposed conjoining jamo, or one may use a halfwidth form of a letter. They look the same but compare differently. Normalising both to NFC recombines decomposed syllables. NFKC goes further: it also maps halfwidth letters and merges standalone letters typed apart, so ㄱㅏ becomes 가. This tool accepts all of these forms.
-
Paste the letters into the "Typed in the wrong language?" panel. dkssudgktpdy becomes 안녕하세요, because each Latin key corresponds to exactly one jamo on the standard two-set layout.
-
Yes. If you typed English with the keyboard on Korean and got something like ㅗ디ㅣㅐ, paste it and the tool gives the keys you pressed: hello.
-
The two-set layout, Dubeolsik, which puts consonants under the left hand and vowels under the right. The three-set Sebeolsik layouts place keys differently and are not covered.
-
For whole syllables, yes: all 11,172, typed out as keys and composed again, come back unchanged. Standalone letters do not: ㄱㅏ becomes rk, and rk composes to 가, as it would on a keyboard. In text mixing Latin letters and Hangul, only the runs that look typed on the wrong layout are converted, and they are underlined so you can see what changed.
-
Unicode's formula covers the 11,172 modern syllables. Archaic letters such as ㆍ, the Hangul fillers, Middle Korean tone marks and Old Hangul syllables written as sequences of conjoining jamo fall outside it, so the tool shows each one with its code points and the reason instead of skipping it. Halfwidth, circled and parenthesised forms of modern letters and syllables are mapped back to the letter or syllable they stand for.
-
The names come from the 1527 textbook 훈몽자회, which spelled each one with two Chinese characters. No character was read 윽, 읃 or 읏, so 役 (역) stood in by sound for ㄱ, and 末 and 衣 were read by their meanings, 귿 (end) and 옷 (clothes), for ㄷ and ㅅ. Korean spelling rules kept the traditional names.
-
No. The conversion is arithmetic done in your browser, with no data file and no network request.
Method & sources
How it computes
Syllable code point = 0xAC00 + (initial × 21 + vowel) × 28 + final, and the inverse, per Unicode 18.0.0 §3.12. Halfwidth, circled and lone conjoining jamo map back through NFKD/NFKC; archaic letters, fillers, tone marks and Old Hangul are listed as not modelled. Keyboard conversion uses the two-set (Dubeolsik) layout and a composing automaton, run by run in mixed text.
What this tool implements
- Syllable arithmetic exactly as Unicode 18.0.0 §3.12 defines it, with no lookup table. The test suite reproduces the standard's worked example (U+D4DB 퓛: SIndex 10459, L 17, V 16, T 15 → U+1111 U+1171 U+11B6, HANGUL SYLLABLE PWILH).
- Checked against two independent implementations over all 11,172 syllables: the browser engine's own NFD normalisation, and Python's unicodedata for the character names — 0 mismatches. Every initial and vowel is also checked against NFKC of its compatibility jamo, and every final against Jamo.txt's short names, so the jamo order cannot silently drift.
- Letter names are those of 한글 맞춤법 제4항 (기역, 디귿, 시옷 … and the ten basic vowels 아 … 이); Unicode's character names (KIYEOK, TIKEUT, SIOS) are shown beside them because they differ.
- Every code point the Unicode Script property calls Hangul is shown, never dropped: the test suite walks the whole Basic Multilingual Plane against the engine's \p{Script=Hangul}. Of the 94 compatibility jamo, the 51 modern letters are decomposed and 43 (the filler and 42 archaic letters) are listed as not modelled; all 51 halfwidth letters map back to their full-width letters.
- Keyboard conversion follows the two-set (Dubeolsik) layout. Whole syllables round-trip exactly: every one of the 11,172, and a 4,680-pair sample of syllable sequences, typed out and composed back unchanged. Standalone letters do not (ㄱㅏ types as rk, which composes to 가, as on a keyboard), and the page says so. Mixed Latin-and-Hangul text is converted run by run; a short English word whose keys compose into syllables (the → 솓) is converted too, and converted runs are underlined.
- The figure of 1,465 distinct syllables in the 44,034 headwords of the National Institute of Korean Language's 한국어기초사전 (13.1% of 11,172) is our own count over the site's build of that dictionary's headword list, re-checked by the test suite. It is a floor: running text adds inflected forms, names and slang.
Sources
- The Unicode Standard, Version 18.0.0, §3.12 Conjoining Jamo Behavior: https://www.unicode.org/versions/latest/core-spec/chapter-3/
- The Unicode Standard, Version 18.0.0, §18.6 Hangul (compatibility, halfwidth and Old Hangul jamo; the 11,172 syllables "taken from KS C 5601-1992, representing the full Johab set"): https://www.unicode.org/versions/latest/core-spec/chapter-18/
- Unicode Character Database, Jamo.txt (Jamo_Short_Name), version 18.0.0: https://www.unicode.org/Public/UCD/latest/ucd/Jamo.txt
- 국립국어원, 한글 맞춤법 제4항 (the 24 letters, their order and names): https://korean.go.kr/kornorms/regltn/regltnView.do?regltn_code=0001
- 국립국어원, 한글 맞춤법 제4항 (letter count, order and names), with the Institute's explanation of the names' origin in 훈몽자회 (1527): https://www.korean.go.kr/front/onlineQna/onlineQnaView.do?mn_id=&…
- ISO-IR 149, Korean Graphic Character Set for Information Interchange (KS C 5601-1987), registered 1 October 1988: 2,350 Hangul characters and 188 user-definable positions: https://itscj.ipsj.or.jp/ir/149.pdf
- WHATWG Encoding Standard, index-euc-kr.txt — used to verify that the KS X 1001 region holds 2,350 of the 11,172 syllables: https://encoding.spec.whatwg.org/index-euc-kr.txt
- 국립국어원, 한국어기초사전 (Basic Korean Dictionary), whole-dictionary download of 19 September 2026, CC BY-SA 2.0 KR — the headword list the 1,465-syllable figure was counted from: https://krdict.korean.go.kr/dicBatchDownload?seq=217
Abridged — the full review record for this tool runs longer than the list above.
Pick up where you left off
Stored only in this browser — never sent to our servers.