T TextTools

Does Sebeolsik really take fewer keystrokes than Dubeolsik?

Written August 2026

"The three-set Korean layout needs fewer keystrokes" is a claim you hear often, but a measurement of how many fewer is hard to find. So I calculated it. The first answer was 2% fewer. After checking what the layouts actually place on a key, the difference all but disappeared. Below is the method, the evidence, and exactly which assumption of mine was wrong.

Dubeolsik: two to five presses per syllable

A Dubeolsik keyboard carries only consonants and vowels. Korean assembles those into syllable blocks, so the number of presses varies from syllable to syllable.

is ㄱ+ㅏ, two presses. is ㄱ+ㅏ+ㄴ, three. needs the compound final ㅄ typed as ㅂ then ㅅ, so four, and is ㄲ (shifted, one press) + ㅗ + ㅏ + ㅇ, also four. The worst case looks like : ㅂ+ㅜ+ㅔ+ㄹ+ㄱ, five presses.

The distinction that trips people up is tense consonants versus compound finals. ㄲ ㄸ ㅃ ㅆ ㅉ are shifted keys, so they arrive in one press. ㄳ ㄵ ㄶ ㄺ and friends require two different keys, so they cost two. In the Unicode final-consonant order, ㄲ (one press) sits directly beside ㄳ (two), which means there is no shortcut — all 28 positions have to be checked individually.

The assumption I got wrong

On a Sebeolsik layout the initial consonant, vowel and final consonant each occupy their own region of the keyboard. From that I reasoned: "then the compound vowels and compound finals must have their own keys too, so a syllable is two presses without a final and three with one."

Under that assumption Dubeolsik averages 2.51 presses per character and Sebeolsik 2.46 — a 2% difference. It even had a tidy closed form: the Sebeolsik average came out as exactly 2 + the share of syllables carrying a final. That made it look right.

But I had reasoned it, not checked it. So I went and looked at what the layouts actually contain.

LayoutInitial keysVowel keysFinal keysPresses per syllable
Dubeolsik (2-set)1921272–5
Sebeolsik Final (3-91)1415272–5
Sebeolsik 3901415212–6

A jamo with its own key costs one press; one without has to be composed, so it costs two. Dubeolsik's 19 initials are all one press because the tense consonants sit on shifted keys. Sebeolsik Final has only 14 initials, so ㄲ ㄸ ㅃ ㅆ ㅉ are made by pressing the plain consonant twice, and only 15 vowels, so ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ also cost two (ㅢ is the one compound vowel with a key). In exchange all 27 finals have keys, which makes every one of the eleven compound finals a single press. A shifted key counts as one press on all three layouts.

Reading the layout definitions instead of the documentation

Rather than trusting a prose description, I looked at a working implementation. libhangul is the standard Korean input library behind ibus-hangul and Nabi, and it defines each keyboard as XML: hangul-keyboard-3f.xml for Sebeolsik Final, hangul-keyboard-39.xml for Sebeolsik 390.

Counting the jamo actually placed on keys in Sebeolsik Final: 14 initials (ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ). The tense initials ㄲ ㄸ ㅃ ㅆ ㅉ have no key. Only 15 vowels, with ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ absent and ㅢ the sole compound vowel present. All 27 finals, however, are there — every compound final has a dedicated key.

So my assumption was half right. The compound finals were correct, the compound vowels were wrong, and the tense initials were something I had never thought to check at all.

Jamo without a key are built through composition rules. hangul-combination-default.xml defines ㄱ+ㄱ=ㄲ, ㅗ+ㅏ=ㅘ and the rest. That means a tense initial on Sebeolsik Final costs two presses, while on Dubeolsik it costs one. On that item the three-set layout is the slower one.

The conclusion is that "Sebeolsik is always two or three presses" does not hold. Sebeolsik Final also spans two to five, and 390 reaches six because it has fewer compound-final keys.

Cross-checking against an unrelated implementation

Resting the result on one library felt thin, so I looked for an implementation with no shared lineage. macOS ships Sebeolsik keylayouts of its own: inside KoreanIM.app there are 3SetHangul.keylayout (Sebeolsik Final) and 390Hangul.keylayout (Sebeolsik 390), in Apple's proprietary format, sharing no code with libhangul.

I compared the key position of every jamo across both definitions. Sebeolsik Final: 56 jamo on each side, 56 in common, zero position mismatches. Sebeolsik 390: 50 on each side, zero mismatches. Even the detail that ㅗ and ㅜ each appear on two separate keys matched.

Apple's layout has no key for ㄲ ㄸ ㅃ ㅆ ㅉ either — neither unshifted nor shifted. Two independent implementations agreeing means the double-press behaviour is no longer an assumption.

One thing surfaced along the way: all eleven compound finals on Sebeolsik Final sit on shifted keys. That makes the convention of counting a shifted key as one press decisive for this comparison. Count shift as two and Sebeolsik loses its compound-final advantage — and Dubeolsik loses its tense-consonant advantage at the same time.

MeasurementDubeolsik (2-set)Sebeolsik Final (3-91)Sebeolsik 390
183-syllable sample, total459460460
Sample, per syllable2.5082.5142.514
All 11,172 syllables, equal weight3.6903.5133.727

The sample is the five Korean practice passages used on this site. The third row weights every syllable equally, so it is not Korean frequency — syllables that exist in the dictionary but almost never appear in a sentence pull the average around.

Recalculating: 459 presses versus 460

One press if the jamo owns a key, two if it must be composed. I generated the initial, vowel and final tables for all three layouts straight from the XML rather than transcribing them, which removes any chance of a copying error.

The result flipped. Over the five Korean passages on this site (183 syllables), Dubeolsik came to 459 presses and Sebeolsik Final to 460. The three-set layout is one press worse.

The reason is two effects cancelling. Compare two syllables: drops from four presses to three on Sebeolsik (compound-final gain), while rises from four to five (tense-initial loss). drops from five to four, again thanks to the compound final.

Counted exactly, the sample cancels out like this. Seven syllables carry a tense initial, costing Sebeolsik seven extra presses. Four carry a compound final, saving four. Two contain ㅢ, saving two. Seven minus four minus two is one — precisely the observed difference. Tense consonants simply outnumbered compound finals in this text.

Equal weighting favours Sebeolsik, and that is the trap

Average over all 11,172 modern Hangul syllables with equal weight and the picture changes again: Dubeolsik 3.690 presses, Sebeolsik Final 3.513 — a 4.8% advantage for the three-set layout. Sebeolsik 390 comes to 3.727, about 1.0% worse than Dubeolsik.

But that number counts and as heavily as and . It is not Korean frequency. Syllables built from compound finals are plentiful in the syllabary and nearly absent from real sentences.

A sharper figure makes the point. Of the 11,172 syllables, 1,700 cost more on Sebeolsik Final than on Dubeolsik. Every single one turns out to carry a tense initial, and the arithmetic confirms it exactly: 5 tense initials × 17 non-compound finals × 20 non-ㅢ vowels = 1,700. Tense consonants are far more common in real writing than compound finals are.

So which layout takes fewer keystrokes genuinely depends on what you are typing, and for ordinary prose the difference is close to nothing. The advantages usually claimed for Sebeolsik — shorter finger travel, alternating hands, no re-segmentation artefacts while typing — may well hold, but raw keystroke count is not the evidence for them.

What I could not verify

Some of these numbers rest on things I did not confirm. Stating them plainly.

The sample is small. Across 183 syllables, only thirteen events created any difference between the layouts: four compound finals, two ㅢ, and seven tense initials. A larger corpus could move the figure.

The shift convention drives the result. I followed what Korean typing programs and certification exams use, but an argument that shift should count as two presses — closer to actual effort — is defensible and would change the comparison.

Documented figures do not match the implementations. Sebeolsik Final is described as "58 letters on 39 keys", yet both implementations place 56 Hangul jamo. Sebeolsik 390's compound finals are documented as seven, while both implementations carry five (ㄶ ㄺ ㄻ ㅀ ㅄ). Since the implementations agree with each other, the documentation appears to describe a different revision or a different way of counting, but I could not establish which.

Syllables mid-composition count as one press. A partially typed block — an initial alone, or initial plus vowel — arrives as a compatibility jamo rather than a precomposed syllable, and is currently lumped in at one press.

The methodology lesson

This is the uncomfortable part, so it gets its own section. Here is how I "verified" the original, wrong code: check that Dubeolsik always falls between two and five presses — passed. Check that Sebeolsik is always three presses with a final and two without — passed. Check whether any syllable costs more on Sebeolsik than on Dubeolsik — zero found.

The second check validated my assumption using my assumption, so it could not fail. The third was the same mistake wearing a different hat: having capped Sebeolsik at three presses, it was arithmetically incapable of exceeding Dubeolsik's five. Run that same check against the corrected tables and the answer is not zero but 1,700.

An invariant derived from the code under test verifies nothing. The reference has to come from outside it. Here that reference was a pair of keyboard definition files written by people who had never heard of this project.

Compare them yourself

The typing test lets you switch between Dubeolsik, Sebeolsik Final and Sebeolsik 390 and re-score the same run against each layout.

Open the typing test

Frequently asked questions

So Sebeolsik doesn't use fewer keystrokes after all?

It depends on the text. Sebeolsik Final wins on compound finals — clusters like ㅄ and ㄺ take one press instead of two — and loses on tense initials, where ㄲ ㄸ ㅃ ㅆ ㅉ take two presses instead of one. Across the 183-syllable sample on this site the two effects cancelled, giving Dubeolsik 459 presses and Sebeolsik 460. Text heavy in compound finals favours Sebeolsik; text heavy in tense consonants favours Dubeolsik.

Do tense consonants really need two presses on Sebeolsik Final?

Both libhangul's keyboard definition and the Sebeolsik keylayouts that ship with macOS place no key at all for the initial ㄲ ㄸ ㅃ ㅆ ㅉ — neither unshifted nor shifted — and the composition rules define ㄱ+ㄱ=ㄲ. Two implementations with no shared code agreeing on this makes the software behaviour certain. If a particular tool or user configuration provides shifted tense initials, the numbers there would differ.

Why does a shifted key count as one press?

It follows the convention used by Korean typing programs and certification exams. That convention happens to be decisive here: all eleven compound finals on Sebeolsik Final sit on shifted keys, so counting shift as two presses would erase the layout's only advantage — and Dubeolsik's tense-consonant advantage along with it.

Why does the all-syllable average point the other way?

Weighting all 11,172 syllables equally gives Sebeolsik Final a 4.8% edge (3.513 presses versus 3.690). But that calculation treats as being as important as . Syllables built from compound finals fill the syllabary while barely appearing in real sentences, which biases the average toward Sebeolsik. For actual writing, the sample-based figure is the more useful one.

How is Sebeolsik 390 different?

It has fewer compound-final keys. Both implementations carry only ㄶ ㄺ ㄻ ㅀ ㅄ, leaving ㄳ ㄵ ㄼ ㄽ ㄾ ㄿ to be composed at two presses each. That pushes the worst case to six presses per syllable and makes 390 about 1.0% more expensive than Dubeolsik on the equal-weight average.

How were these numbers produced?

The per-layout tables for initials, vowels and finals were generated programmatically from libhangul's keyboard definitions and the macOS keylayouts: one press where a jamo owns a key, two where the composition rules have to build it. Nothing was transcribed by hand, so there are no copying errors, and the ranges and invariants were checked against all 11,172 modern Hangul syllables.

More text tools