~ / text / hangul-jamo

🔤 한글 자모 분리기 (초성·중성·종성 분리 · 합치기)

한글을 ㅎㅏㄴㄱㅡㄹ처럼 자모로 풀고, 풀어 쓴 자모를 다시 글자로 합쳐요. 겹받침·겹모음까지 나누고 자모 수도 세어 줘요.

결과
광고

사용법

  1. 왼쪽 칸에 한글 문장을 넣고 분리를 고르면, 글자마다 초성·중성·종성으로 풀어서 보여 줘요. "한글"은 ㅎㅏㄴㄱㅡㄹ가 돼요.
  2. 겹받침·겹모음까지 풀기를 켜면 ㄺ → ㄹㄱ, ㅘ → ㅗㅏ처럼 두 자모가 합쳐진 글자도 나눠요. 쌍자음(ㄲ·ㄸ·ㅃ·ㅆ·ㅉ)은 자판에서 한 번에 치는 한 글자라 그대로 둬요.
  3. 글자마다 / 넣기를 켜면 ㄱㅏㅄ/ㅆㅏㄴ처럼 원래 어느 글자였는지 경계가 보여요.
  4. 풀어 쓴 자모를 다시 글자로 만들려면 합치기를 골라요. 결과의 '입력으로 옮기기'를 누르면 분리 ↔ 합치기를 오가며 확인할 수 있어요.
  5. 아래 숫자 칸에 한글 글자 수, 초성·중성·받침 개수, 자모 수가 나와요. 자모 수는 겹자모를 풀었는지에 따라 달라져요.

한글 한 글자는 어떻게 만들어지나

컴퓨터의 한글 글자(완성형)는 초성 19개 × 중성 21개 × 종성 28개(받침 없음 포함) = 11,172자가 '가'(U+AC00)부터 '힣'(U+D7A3)까지 정해진 순서로 놓여 있어요. 그래서 글자 번호만 알면 계산으로 자모를 꺼낼 수 있고, 반대로 자모 번호로 글자를 만들 수도 있어요. 이 규칙은 유니코드 표준 3.12절 'Conjoining Jamo Behavior'에 정의돼 있어요.

구분개수순서 (번호 0부터)
초성19ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
중성21ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
종성28(없음) ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ

분리·합치기 공식

글자 코드 = 0xAC00 + (초성 번호 × 21 + 중성 번호) × 28 + 종성 번호예요. 거꾸로 풀 때는 글자 코드에서 0xAC00(10진수 44,032)을 뺀 값 k로 초성 = k ÷ 588의 몫, 중성 = (k ÷ 28의 몫) ÷ 21의 나머지, 종성 = k ÷ 28의 나머지를 구해요. 588은 중성 21 × 종성 28이에요.

단계"한" 풀기"글" 풀기
글자 코드U+D55C = 54,620U+AE00 = 44,544
k = 코드 − 44,03210,588512
초성 = k ÷ 588의 몫18 → ㅎ0 → ㄱ
중성 = (k ÷ 28의 몫) mod 21378 mod 21 = 0 → ㅏ18 mod 21 = 18 → ㅡ
종성 = k mod 284 → ㄴ8 → ㄹ
검산44,032 + (18×21+0)×28 + 4 = 54,62044,032 + (0×21+18)×28 + 8 = 44,544

실제로 돌린 분리 예시

아래 표는 이 페이지의 코드로 직접 돌린 결과예요. 가운데 열은 기본 분리에 '글자마다 / 넣기'를 켠 결과, 오른쪽 열은 겹받침·겹모음까지 푼 결과예요.

입력기본 분리 (/ 표시)겹자모까지 풀기자모 수
닭갈비ㄷㅏㄺ/ㄱㅏㄹ/ㅂㅣㄷㅏㄹㄱㄱㅏㄹㅂㅣ8 → 9
값싼 꽃ㄱㅏㅄ/ㅆㅏㄴ ㄲㅗㅊㄱㅏㅂㅅㅆㅏㄴ ㄲㅗㅊ9 → 10
의자ㅇㅢ/ㅈㅏㅇㅡㅣㅈㅏ4 → 5
읽었다ㅇㅣㄺ/ㅇㅓㅆ/ㄷㅏㅇㅣㄹㄱㅇㅓㅆㄷㅏ8 → 9
뷁ㅂㅞㄺㅂㅜㅔㄹㄱ3 → 5

"뷁"처럼 겹모음(ㅞ)과 겹받침(ㄺ)이 한꺼번에 든 글자는 기본 분리로는 자모 3개지만, 끝까지 풀면 ㅂ·ㅜ·ㅔ·ㄹ·ㄱ 5개가 돼요. 두벌식 자판으로 이 글자를 칠 때 누르는 키 수도 5번이에요.

가나다 순서와 자모 번호

완성형 한글이 놓인 순서는 국어사전의 가나다 순서와 같아요. 한글 맞춤법 제4항은 사전에 올릴 때 자모 순서를 초성 ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ, 중성 ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ로 정해 두었는데, 위 표의 번호 순서와 똑같아요. 그래서 프로그램에서 한글 문자열을 코드 값으로만 정렬해도 대부분 사전 순서가 나오고, 쌍자음 ㄲ이 ㄱ과 ㄴ 사이에 오는 것도 그 때문이에요. 숫자·영어가 섞인 목록을 사람이 보기 좋게 정렬하려면 텍스트 줄 정렬기를 써 보세요.

합치기는 이렇게 동작해요

합치기는 두벌식 자판으로 칠 때와 같은 순서로 글자를 모아요. 자음 다음 모음이 오면 한 글자를 시작하고, 그 뒤 자음은 일단 받침으로 넣었다가 다음에 모음이 오면 그 자음을 다음 글자의 초성으로 넘겨요. 그래서 ㄷㅏㄹㄱㅣ는 "닭이"가 아니라 "달기"로 모여요(ㄺ 중 ㄱ이 넘어감). "닭이"를 만들려면 소리 나는 대로가 아니라 글자대로 ㄷㅏㄹㄱㅇㅣ처럼 초성 ㅇ을 넣으면 돼요. ㄱ 다음에 자음 ㅇ이 와서 ㄺ이 받침으로 남아요.

넣은 자모결과설명
ㅎㅏㄴㄱㅡㄹ한글ㄴ 뒤에 자음 ㄱ이 와서 ㄴ은 받침으로 남음
ㅇㅏㄴㄴㅕㅇ안녕같은 자음 두 개는 받침 + 다음 초성
ㄷㅏㄹㄱㅇㅣ닭이ㄹ+ㄱ → 겹받침 ㄺ, 다음 ㅇ이 초성
ㄷㅏㄹㄱㅣ달기모음 ㅣ가 오면 ㄱ이 다음 글자 초성으로 넘어감
ㄱㅗㅏ과ㅗ+ㅏ → 겹모음 ㅘ
ㅋㅋㅋ ㅠㅠㅋㅋㅋ ㅠㅠ모음 없는 자음, 자음 없는 모음은 낱자로 둠

코드로 직접 구현하기

개발 중에 같은 계산이 필요하다면 아래 몇 줄이면 돼요. 자바스크립트 기준이고, 파이썬도 ord()·chr()로 똑같이 옮길 수 있어요. 받침 없는 글자는 종성 번호가 0이라 빈 문자열이 나와요.

const CHO = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ';
const JUNG = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ';
const JONG = ['', ...'ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ'];
function split(ch) {
  const k = ch.charCodeAt(0) - 0xAC00;          // '가'부터 몇 번째 글자인지
  if (k < 0 || k > 11171) return [ch];          // 완성형 한글이 아니면 그대로
  return [CHO[Math.floor(k / 588)], JUNG[Math.floor(k / 28) % 21], JONG[k % 28]];
}
function join(l, v, t = '') {
  return String.fromCharCode(0xAC00 + (CHO.indexOf(l) * 21 + JUNG.indexOf(v)) * 28 + JONG.indexOf(t));
}
split('한');   // ['ㅎ', 'ㅏ', 'ㄴ']
join('ㄱ', 'ㅡ', 'ㄹ');   // '글'

받침 유무로 조사를 고르는 기능(을/를, 이/가, 은/는)도 같은 원리예요. 마지막 글자의 k % 28이 0이면 받침이 없으니 '를·가·는', 0이 아니면 '을·이·은'을 붙이면 돼요.

겹받침 11개 · 겹모음 7개

종류목록
겹받침ㄳ(ㄱㅅ) ㄵ(ㄴㅈ) ㄶ(ㄴㅎ) ㄺ(ㄹㄱ) ㄻ(ㄹㅁ) ㄼ(ㄹㅂ) ㄽ(ㄹㅅ) ㄾ(ㄹㅌ) ㄿ(ㄹㅍ) ㅀ(ㄹㅎ) ㅄ(ㅂㅅ)
겹모음ㅘ(ㅗㅏ) ㅙ(ㅗㅐ) ㅚ(ㅗㅣ) ㅝ(ㅜㅓ) ㅞ(ㅜㅔ) ㅟ(ㅜㅣ) ㅢ(ㅡㅣ)
받침이 될 수 없는 자음ㄸ ㅃ ㅉ — 그래서 ㅇㅏㄸ은 "앋"이 아니라 "아ㄸ"으로 남아요

ㅐ·ㅔ·ㅒ·ㅖ는 모양은 두 획이 붙어 있지만 두벌식 자판에서 한 키로 치는 기본 모음이라 겹모음으로 나누지 않았어요.

어디에 쓰나

흔한 실수

모든 처리는 이 브라우저 안에서 하고, 넣은 글은 저장하거나 밖으로 보내지 않아요. 11,172자 모두 분리 → 합치기 왕복이 원래 글자로 돌아오는 것을 확인한 코드예요. 조합 규칙은 유니코드 표준 3장(3.12 Conjoining Jamo Behavior)에 있어요.

자주 묻는 질문

한글 자모 분리는 어떻게 계산하나요?
글자 코드에서 44,032(U+AC00)를 뺀 값 k로 초성 = k ÷ 588의 몫, 중성 = (k ÷ 28의 몫) ÷ 21의 나머지, 종성 = k ÷ 28의 나머지를 구해요. 완성형 한글 11,172자가 이 순서로 놓여 있어서 계산만으로 나눌 수 있어요.
겹받침도 나눌 수 있나요?
네. "겹받침·겹모음까지 풀기"를 켜면 ㄺ → ㄹㄱ, ㅄ → ㅂㅅ, ㅘ → ㅗㅏ처럼 나눠요. 쌍자음 ㄲ·ㄸ·ㅃ·ㅆ·ㅉ은 한 글자로 둬요.
풀어 쓴 자모를 다시 한글로 합칠 수 있나요?
"합치기"를 고르면 두벌식 자판처럼 앞에서부터 모아요. ㅎㅏㄴㄱㅡㄹ은 "한글"이 돼요. 받침 뒤에 모음이 오면 그 받침이 다음 글자 초성으로 넘어가요.
한글은 모두 몇 글자예요?
유니코드 완성형 한글 음절은 초성 19 × 중성 21 × 종성 28(받침 없음 포함) = 11,172자예요. "가"(U+AC00)부터 "힣"(U+D7A3)까지예요.
자모 수는 어떻게 세나요?
글자마다 초성·중성·받침 자모를 더한 수예요. "한글"은 6개예요. 겹받침·겹모음을 풀면 그만큼 늘어나요. 예를 들어 "스미스랩은 한글 자모를 풀어요"는 한글 13자, 받침 6개, 자모 32개예요.
ㅋㅋㅋ처럼 자음만 있는 글은 어떻게 되나요?
자음만 있거나 모음만 있는 낱자(ㅋ, ㅠ)는 글자를 만들 수 없어 그대로 둬요. 숫자·영어·문장부호도 바뀌지 않아요.

이 도구와 함께 보면 좋은 글

관련 도구

더 둘러보기

📝 문서·텍스트 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →