The character 花 has seven strokes. It also has eight. In a fortune-teller's ledger it has ten.

All three are correct, under three different authorities, and none of them is wrong. This matters for software, because Unicode will only ever hand you one of the three, it does not say which, and until recently it did not even store the others.

Three authorities, one character

Count 花 by hand the way it is taught on the mainland and you get seven. Unicode's Han database agrees.

Taiwan's Ministry of Education stroke-order site gives the same character as 艸-4-8 — radical 艸, four residual strokes, total eight. The difference is the grass radical: the mainland counts the written 艹 as three strokes, Taiwan as four.

Now open a 五格 name analysis. That system counts 花 as ten, because it does not count the character as written at all.

What 五格 actually counts

五格剖象 — the five-grid method used by essentially every Chinese naming service — is universally described as taking its counts from the Kangxi Dictionary of 1716. A peer-reviewed economics paper studying the system states that rule and works it through on one of the commonest surnames in the language.

⚠️ Two things are wrong with that description, and the system's own founder supplied the second one.

First, the Kangxi Dictionary never prints a total. It files each character under a radical with a residual count, exactly as its own preface says. A "Kangxi stroke count" is arithmetic somebody performed on the index — radical plus residual — not a number the dictionary states anywhere.

Second, the method openly overrides that arithmetic. Writing in 1929, its Japanese originator explained that each character carries a fixed 霊意, a spirit-number, and that this is "by no means the stroke count that appears in the form". His own examples: 四 has five strokes but counts as four; 五 has four but counts as five; 八 and 九 have two strokes each and count as eight and nine.

The system is not based on counting strokes from an old dictionary. It is a doctrine of assigned numbers that usually coincides with the dictionary's index arithmetic but openly departs from it for numerals.

Where the two do coincide, the mechanism is radical restoration, and the surname example shows it. The 阝 in 陳 is a compressed form of 阜. Written, it is two strokes on the mainland. The index counts the parent form, and 阜 is eight. So 陳 is 10 or 11 strokes as written, and 16 in a name reading.

The full restoration rule is a short list, and it is where nearly all the divergence comes from:

WrittenCounted asChangeExample
氵 (3)水 (4)+1江 6 → 7
忄 (3)心 (4)+1情 11 → 12
扌 (3)手 (4)+1打 5 → 6
艹 (3)艸 (6)+3花 7 → 10
月 (4, meat)肉 (6)+2肝 7 → 9
阝 left (2)阜 (8)+6陳 10 → 16
阝 right (2)邑 (7)+5郭 10 → 15

Across the 8,105 characters of the official mainland standard, 2,141 — just over a quarter — carry one of these radicals. This is not an edge case; it is a quarter of the language.

⚠️ One of those rows hides a trap no glyph can resolve. The 月 in 肝 is flesh and takes +2; the 月 in 朗 and 期 is the moon and takes nothing. They are written identically. In the official character set 160 characters are the meat radical and 14 are the moon, so a calculator that cannot tell them apart is silently wrong by two strokes on the larger group.

And there is a third case the rule does not admit. A widely reprinted statement of it gives 服 as an example of 月 counting as flesh. The dictionary files 服 under the moon radical, and its own entry explains why: the component is not meat at all but a flattened 舟, a boat. 勝 is filed under 力 and not restored either. The rule is refuted by the example chosen to illustrate it — which is a fair summary of the whole subject.

What Unicode gives you, and what it took away

Software does not count strokes. It looks them up, almost always in Unicode's Han database, in a field called kTotalStrokes.

That field used to be documented as holding two values where the regions disagreed — the first preferred for simplified-script locales, the second for traditional. If you read the specification, you would reasonably conclude that a mainland count and a Taiwan count were both available.

They were not, in any useful sense. Counting the actual data across eight releases of Unicode, the number of characters that ever carried two values was: one, one, one, one, two, three, four — and, in Unicode 17.0, zero. Out of roughly 99,000 ideographs. The convenor of the relevant working group records that the first such pair was added "merely for validation purposes", and that in the decade since "there has been almost no attempt to add a second property value".

The current specification has dropped the regional language entirely: the syntax is now a single number.

The fate of those four pairs is telling. 范 went from 8 9 to 9. 骨 went from 9 10 to 10. In both cases the mainland value is the one that was discarded, and there is no companion field carrying it — the alternate-strokes field holds only about a hundred entries, almost all of them tagged for Japan.

So a program asking Unicode how many strokes 骨 has now receives the non-mainland answer, with nothing to indicate that a different number was ever on file.

⚠️ There is a second trap for anyone trying to reproduce this. The field that maps a character to its Kangxi radical and residual — the one you need to compute a Kangxi total — no longer exists in current Unicode. It was present as recently as version 13.0 with more than 63,000 entries and is gone from 17.0. Any tool computing Kangxi counts today is either using an archived release or is not using Unicode at all.

The convention that cannot be executed

Practitioners say the rule is simple: use Kangxi, whatever script the name is written in.

For about a third of modern Chinese, that instruction has nothing to point at. Of the 8,105 characters in the official standard, 2,766 — 34% — have no real entry in the Kangxi Dictionary. They are post-1716 creations, most of them simplified forms. That includes 1,097 of the 3,500 most frequent characters: 马, 龙, 义, 卫, 长, 东, 书, 电.

Among the hundred commonest surnames, 33 do not exist in Kangxi as written — 张, 刘, 陈, 杨, 黄, 赵, 孙, 马 and more. Each must first be mapped to a traditional form, and that mapping is ambiguous for 478 characters, of which 436 disagree about the count. 万 becomes either 万 (3) or 萬 (12), a nine-stroke swing. And 范 is the trap in the other direction: the surname is genuinely 范 (9), while a naive converter reaches for 範 (15), a different word.

The number in a dictionary index is not a stroke count

A dictionary's radical index seems like an obvious place to check a character, but the number printed there is not a stroke count.

An editor of the two standard mainland dictionaries states the rule plainly: the figure beside a character in a radical index is the count with the radical's own strokes removed. So 亿 appears under 1 — the single stroke of 乙 — and not under 3. It is a navigational residual, and anyone reading it as a total will be wrong by the width of the radical every time.

Those dictionaries are not the authority, either. The education ministry, answering a legislature question, describes reference works as tools that implement the standards, praising two by name for executing them well. The standard is upstream; the dictionary follows it and changes when it changes.

The practitioners do not agree either

The same study compared four published sources on the 125 possible three-element configurations. Only two of the four agreed with each other. Across all of them, just 23 of the 125 configurations are auspicious by consensus. It also catches one widely sold naming manual insisting on two adjacent pages that everything follows Kangxi and then listing 九 as two strokes.

The disagreement is not theoretical. Three commercial calculators, each presenting its output as Kangxi-based, were queried on the same characters:

CharacterCalculator ACalculator BCalculator CKangxi index arithmetic
210102
2992
7767
1010910
7787

Eight strokes of disagreement on 十 alone, which is enough to move every one of the five grids. One of those services states on the same page that name reckoning "must be based on the stroke counts produced by the Kangxi Dictionary" and then returns numbers that are not those counts.

Two results are worth seeing whole. Asked to read the name 王華, one calculator returns both 大吉昌 and 大凶 — two records, because it holds two values for 王 (four as written, five as the jade radical) and its response carries a flag saying the count is contested. It knows, and it declines to choose, on one of the commonest surnames in China.

And script decides the verdict. In the same calculator, 陳丽 reads 大凶 while 陳麗 reads 吉多於凶; 陳雲 draws a total-grid verse ending "better to change the name" that 陳云 does not. Same name, same person, different registry.

What our own tools do about it

Our name stroke analyzer computes the grids on Kangxi counts and shows the modern count beside them, because the two disagree for 9,752 characters and hiding that would be the whole problem in miniature. Its data is built from an archived Unicode release for the reason given above, it restores each radical to its parent form, and it distinguishes the meat 月 from the moon 月.

It also declines to convert a short list of characters that look simplified and are not — 于, 范, 后, 干, 里 among them — because mapping the surname 范 to 範 would produce a confident wrong answer rather than an honest one. The three-talents analyzer uses the same data; the stroke count lookup gives the modern count alone.

Where this comes from, and what will date it

The Unicode figures were computed by parsing the database itself across eight releases, not read from documentation about it. The Kangxi rule and the practitioner disagreements are from a peer-reviewed paper in a Taiwanese economics journal, which is a better source than the naming literature it studies. The Taiwan count for 花 is from the education ministry's own stroke-order site.

On the mainland side, the answer to "who decides" has a wrinkle. No PRC standard has stroke counts as its subject: they ride along inside the standards for stroke order and character ordering, one of which defines the term and prints a count for all 20,902 characters of the reference set. The 2013 State Council table — the flagship instrument — does not. Its main lists carry a serial number and a character and nothing else; the counts sit in an appendix index introduced "for convenience of use", and its own note says the ordering follows that earlier standard. The count is normative; it is simply not printed where anyone would look.

The first of three limits is the most important: No page of an actual Kangxi Dictionary was opened for this article. Every "Kangxi count" here is reconstructed the way practitioners reconstruct it — radical plus residual, cross-checked two independent ways — because, as above, the dictionary prints no totals to read. That is the honest description of the number, and it is also the reason the number is contestable at all.

Second, the claim that consumer calculators read Unicode is an inference from what the software libraries do, not something any calculator documents. Third, the frequently repeated founding date of 1918 does not hold up: the school its founder established dates itself to 1928 and his first publication to 1929, so no founding date is asserted above. The date his method reached Taiwan is genuinely unsettled — three incompatible years appear in citable sources, one of them impossible — so that is not asserted either.

What will date this: another Unicode release changing the field again, which is exactly why the guide's own advice is not to store a stroke count you did not compute.