Skip to content

Differences from MeCab

Suzume takes a fundamentally different approach to Japanese tokenization than MeCab. This page documents the intentional differences in token boundaries — where the two tools merge and split — plus known constraints and guidance on choosing between them.

The source of truth for intentional differences is the Python MeCab normalization pipeline used to generate test expectations. The rule families below are grouped by their practical purpose.

Comparison Baseline

Every MeCab boundary and displayed feature on this page was recorded from MeCab 0.996 with mecab-ipadic 2.7.0-20070801 (the UTF-8 IPA dictionary). The labels abbreviate MeCab's comma-separated feature fields for readability; the comparison does not rewrite its token boundaries. It invokes mecab with the default configuration and no user dictionary. You can inspect the active setup with:

bash
mecab --version
mecab -D

MeCab's output depends on the selected dictionary, its costs, and user dictionaries. UniDic, NEologd, or a customized IPA dictionary can produce different boundaries and labels from the rows shown here. The normalization pipeline linked above starts from this IPA-dictionary output and applies Suzume's generalized comparison rules when generating test expectations.

Looking for POS label differences?

This page covers where tokens begin and end. For how the two tools label the same tokens — pronouns, na-adjectives, auxiliaries, and other POS assignments — see POS Classification.

Reading the comparisons

In each comparison the MeCab row uses MeCab's Japanese POS names, and the Suzume row uses the public API tags (NOUN, VERB, ADJ, …) with the Japanese POS name shown next to each code. A colored underline marks every token, so where the two tokenizers split or merge is visible at a glance.

Design Philosophy

Suzume is a Tokenizer, Not a Morphological Analyzer

MeCab is a morphological analyzer — its goal is to decompose text into morphemes with detailed grammatical information. Suzume is a tokenizer — its goal is to split text into meaningful units for practical applications like search, display, and text processing. Morphological analysis is not a goal of Suzume. This fundamental difference in purpose explains many of the behavioral differences described below.

MeCabSuzume
ApproachDictionary-drivenFeature-driven
DictionaryExternal dictionary required; size and output depend on the selected dictionaryCompact dictionaries included (~227KiB gzipped with the WASM package)
Unknown wordsFalls back to character typesPattern-based candidate generation
Compound handlingBoundaries follow the selected dictionaryDictionary and structural rules; unknown runs may merge
TargetDetailed dictionary-based analysisCompact search/display tokenization across browser, edge, and native runtimes

Core Trade-off

MeCab follows the entries and costs in the selected dictionary, so changing the dictionary can change boundaries and labels. Suzume combines compact dictionaries with shared character, grammar, and connection rules; unknown same-script runs may stay merged when there is no evidence for an internal boundary.

Merging Rules

These rules keep sequences together as one token where a dictionary-driven analysis splits them — or where fragments would be useless as search units.

Kanji Compounds

An unregistered kanji run with no dictionary or grammatical evidence for an internal boundary is normally kept as one noun candidate. Structural rules can still split forms such as 神奈川県 / 横浜市 and 会議 / 中.

Input経済成長
MeCab
経済名詞成長名詞
2 tokens
Suzume
経済成長名詞NOUN
1 token
Input開始予定
MeCab
開始名詞予定名詞
2 tokens
Suzume
開始予定名詞NOUN
1 token

Katakana Compounds

An unknown ordinary katakana run is normally kept as one noun candidate. Dictionary and shape rules can assign another POS, as with mimetic ドキドキ(ADV).

Inputサンプルデータ
MeCab
サンプル名詞データ名詞
2 tokens
Suzume
サンプルデータ名詞NOUN
1 token
Inputセットリスト
MeCab
セット名詞リスト名詞
2 tokens
Suzume
セットリスト名詞NOUN
1 token

Mixed-Script Compounds

An alphabetic term followed by a katakana term is one compound noun.

InputAIブーム
MeCab
AIブーム
2 tokens
Suzume
AIブーム名詞NOUN
1 token

Numbers and Units

Cardinal numbers followed by counters or units are normally merged into one quantity token. This includes large number units (万, 億, 兆), decimal numbers, percentages, and alphabetic units. Ordinal and structural suffix rules can split forms such as 第三 / 回.

Input3人
MeCab
3
2 tokens
Suzume
3人名詞NOUN
1 token
Input100円
MeCab
100
2 tokens
Suzume
100円名詞NOUN
1 token
Input3.14
MeCab
3.14
3 tokens
Suzume
3.14名詞NOUN
1 token

Suzume also preserves search-unit boundaries around quantities.

Input徒歩五分
MeCab
徒歩
3 tokens
Suzume
徒歩五分名詞NOUN
2 tokens
Input三ヶ月間入院
MeCab
ヶ月入院
4 tokens
Suzume
三ヶ月間名詞NOUN入院
2 tokens

Comma-grouped numerals stay whole. A following counter remains a separate SUFFIX, while a currency amount stays one search unit.

Input1,000人
MeCab
1,000
4 tokens
Suzume
1,000名詞NOUN接尾辞SUFFIX
2 tokens
Input1,000円
MeCab
1,000
4 tokens
Suzume
1,000円名詞NOUN
1 token

The same merging applies beyond Arabic numerals.

Kana-spelled quantities:

Inputよんにん
MeCab
形容詞名詞助詞助詞
4 tokens
Suzume
よんにん名詞NOUN
1 token

Distributive quantities:

Input一語一語
MeCab
一語名詞名詞名詞
3 tokens
Suzume
一語一語名詞NOUN
1 token

Address and lot numbers:

Input1-2-3
MeCab
1-2-3
5 tokens
Suzume
1-2-3名詞NOUN
1 token

Ordinal 第 versus approximate 約: the ordinal prefix 第 merges with its number, while the following counter stays a separate SUFFIX token. The approximation prefix 約 instead stays a separate PREFIX, and the number merges with its counter.

Input第三回
MeCab
3 tokens
Suzume
第三名詞NOUN接尾辞SUFFIX
2 tokens
Input約三人
MeCab
3 tokens
Suzume
接頭辞PREFIX三人名詞NOUN
2 tokens

Dates

Full date expressions are merged into a single token.

Input2024年12月23日
MeCab
20241223
6 tokens
Suzume
2024年12月23日名詞NOUN
1 token

Proper Nouns and Place Names

Many place-name components with region suffixes are merged. The structural 県+市 rule is an exception and splits the prefecture from the city.

Input東京都新宿区
MeCab
東京新宿
4 tokens
Suzume
東京都新宿区名詞NOUN
1 token

place name

Compound Verbs

Verb stems in 連用形 followed by subsidiary verbs are merged into compound verbs.

Input食べ続ける
MeCab
食べ続ける
2 tokens
Suzume
食べ続ける動詞VERB
1 token

Supported V2 elements include: 込む, 出す, 続く, 返す, 合う, 直す, 切る, 上がる, 抜く, こもる, 続ける, つける, 替える, 合わせる, 上げる, 下げる, 掛ける, 入れる, etc. (40+ patterns)

Grammaticalized subsidiaries such as 過ぎる and かねる are deliberately not merged — see Subsidiary Auxiliary Splitting.

Closed Compound Particles

Closed expressions that function as one particle are kept whole.

Inputや否や
MeCab
助詞否や名詞
2 tokens
Suzume
や否や助詞PARTICLE
1 token

The selected IPA dictionary already emits expressions such as と共に and, in some contexts, につれて as one token, so they are not boundary differences in this baseline. Other dictionaries may split them.

Negative ずに

The negative auxiliary ず and the following particle に are merged as one compound grammatical unit.

Input食べずに
MeCab
食べ
3 tokens
Suzume
食べずに助動詞AUX→ず
2 tokens

Desiderative たがる

The desiderative-observation auxiliary たがる, including its inflected forms, is kept as a single auxiliary token.

Input食べたがる
MeCab
食べがる
3 tokens
Suzume
食べ動詞VERBたがる助動詞AUX→たがる
2 tokens

Fixed Colloquial Function Words

Fixed function words are kept whole even when a dictionary-driven analysis fragments them.

Input散歩がてら
MeCab
散歩てら
3 tokens
Suzume
散歩名詞NOUNがてら助詞PARTICLE
2 tokens
Inputそんなら
MeCab
そんなら
2 tokens
Suzume
そんなら接続詞CONJ
1 token

がてら ("while, on the occasion of") is one particle, and the colloquial そんなら ("in that case") is one conjunction.

Deverbal Compound Nouns

A verb continuative plus 会, and the destination suffix 行き, form single event/route nouns.

Input飲み会
MeCab
飲み
2 tokens
Suzume
飲み会名詞NOUN
1 token
Input東京行き
MeCab
東京行き
2 tokens
Suzume
東京行き名詞NOUN
1 token

Nai-Adjectives

Certain adjectives ending in ない are treated as single lexical units rather than being split.

Inputだらしない
MeCab
だらし名詞・ナイ形容詞語幹ない助動詞
2 tokens
Suzume
だらしない形容詞ADJ
1 token

Main examples handled as one token: だらしない, つまらない, もったいない, くだらない, いたたまれない, ものたりない, こころもとない

This is a closed word list — productive "stem + ない" combinations still split; see Productive Negative Splitting.

Slang and Modern Words

Modern colloquial adjectives and verbs are recognized natively.

Inputエモい
MeCab
エモ名詞動詞
2 tokens
Suzume
エモい形容詞ADJ
1 token

Recognized examples include エモい, キモい, ウザい, ダサい, イタい, ヤバい, their hiragana variants, and compound i-adjectives.

Recognized verb examples include バズる, ググる, and パクる.

Tari-Adverbs

Tari-conjugation adverb stems followed by と are merged into a single adverb.

Input堂々と
MeCab
堂々
2 tokens
Suzume
堂々と副詞ADV
1 token

Applies to: 泰然, 堂々, 悠々, 淡々, 粛々, 颯爽, 毅然, 漫然, 茫然, 呆然, 唖然, 愕然, 断然, 俄然, 歴然, 整然, 雑然, 騒然, 憮然, 黙然, 昂然, 凛然, 厳然

Noun + Single-Character Suffixes

The following closed set of noun + single-character suffix combinations is merged.

Input報告書
MeCab
報告
2 tokens
Suzume
報告書名詞NOUN
1 token
Input成功率
MeCab
成功
2 tokens
Suzume
成功率名詞NOUN
1 token

Applies to suffixes: 書, 誌, 時, 率, 性

Verb Stem + 方

When the formal noun 方 follows a short verb stem, Suzume merges the expression into one search unit denoting a method.

Input走り方
MeCab
走り
2 tokens
Suzume
走り方名詞NOUN
1 token

Only short stems merge: the continuative must be at most two characters (走り方, やり方). Longer continuatives keep the boundary — 打ち合わせ方 stays 打ち合わせ / 方.

Everyday Hiragana Words

Common words normally written in hiragana are kept intact through pattern rules and the compact L2 dictionary. Rules cover forms such as おととい, ひこうき, みっつ, and calendar compounds such as 翌営業日. Lexical evidence resolves ambiguous all-hiragana nouns whose characters can also be particles or inflectional endings: みず, てがみ, ひらがな, にわ, いりぐち, はにわ, あけぼの, and くだもの.

Prolonged Sound Marks

Prolonged sound marks (ー) are merged with the preceding token.

Inputそうー
MeCab
そう副詞名詞
2 tokens
Suzume
そうー副詞ADV
1 token
Inputすごーーい
MeCab
すご形容詞ーー名詞名詞
3 tokens
Suzume
すごーーい形容詞ADJ→すごーーい
1 token

Technical Text

Technical identifiers are merged into single tokens.

Snake_case identifiers:

Inputuser_name
MeCab
user_name
3 tokens
Suzume
user_name
1 token

Version numbers:

Inputv1.2.3
MeCab
v1.2.3
6 tokens
Suzume
v1.2.3
1 token

ASCII name + number:

InputModel15
MeCab
Model15
2 tokens
Suzume
Model15
1 token

ASCII dot notation:

Inputconsole.log
MeCab
console.log
3 tokens
Suzume
console.log
1 token

ASCII word-internal separators:

Inputdata-driven
MeCab
data-driven
3 tokens
Suzume
data-driven
1 token

The same rule covers apostrophes, ampersands, and slashes when they occur between ASCII word characters.

URLs, Mentions, and Hashtags

URLs, @mentions, and #hashtags are merged into single tokens. Hashtags containing Japanese text are kept whole as well.

Inputhttps://example.com にアクセス
MeCab
https://example.comアクセス
7 tokens
Suzume
https://example.comアクセス
3 tokens
Input@user_name に送信
MeCab
@user_name送信
6 tokens
Suzume
@user_name送信
3 tokens
Input#topicについて
MeCab
#topicについて
3 tokens
Suzume
#topicについて
2 tokens
Input#日本語タグ
MeCab
#日本語タグ
3 tokens
Suzume
#日本語タグ名詞NOUN
1 token

Splitting Rules

Suzume also draws boundaries a dictionary-driven analysis may not — and deliberately stops its own merging where a boundary carries meaning.

お/ご Prefixes

Suzume splits お/ご honorific prefixes from nouns but keeps them merged when they form inseparable lexemes.

Inputお茶
MeCab
お茶名詞
1 token
Suzume
接頭辞PREFIX名詞NOUN
2 tokens

split — separable prefix

Inseparable exceptions (omitted from the diff examples because both MeCab and Suzume keep them as one token) include: お金, お前, おかず, おでん, おもちゃ, おすすめ, おいら, おっさん, お疲れ様, お出で/おいで, and family terms (お母さん, お父さん, お兄ちゃん, お姉さん, おじさん, おばさん, おじいさん, おばあさん, etc.)

Honorific Suffixes and Hiragana Nicknames

Honorific suffixes are split from names.

Applies to suffixes: さん, ちゃん, 様, 君, 殿, さま

Exceptions: family terms like お兄ちゃん and お母さん, and the collective forms 皆様 / 皆さん, are kept as single tokens.

Short nicknames made from a two- or three-character hiragana stem followed by ちゃん or くん, along with lexicalized family terms, can merge as a search unit. Ordinary さん remains a separate suffix, and names with a kanji stem split from their honorific.

Inputわんちゃん
MeCab
わんちゃん
2 tokens
Suzume
わんちゃん名詞NOUN
1 token

Subsidiary Auxiliary Splitting

Grammaticalized subsidiary verbs — 過ぎる (excess), かねる (inability), そびれる (missed chance), 尽くす (exhaustive) — split off from the main verb and are tagged AUX, unlike the lexical compound verbs that merge. MeCab's own treatment varies with the dictionary: some combinations come out merged (飲み過ぎ), others split with the 非自立 subcategory.

Input飲み過ぎた
MeCab
飲み動詞過ぎ動詞・非自立助動詞
3 tokens
Suzume
飲み動詞VERB過ぎ助動詞AUX→過ぎる助動詞AUX
3 tokens
Inputわかりかねる
MeCab
わかり動詞かねる動詞・非自立
2 tokens
Suzume
わかり動詞VERB→わかるかねる助動詞AUX
2 tokens
Input言いそびれた
MeCab
言いそびれ動詞助動詞
2 tokens
Suzume
言い動詞VERB→言うそびれ助動詞AUX→そびれる助動詞AUX
3 tokens
Input食べ尽くす
MeCab
食べ動詞尽くす動詞・非自立
2 tokens
Suzume
食べ動詞VERB尽くす助動詞AUX
2 tokens

Emphatic Colloquial Particles

Colloquial emphatic particles are split as single units instead of being fragmented.

ったら topic particle:

Inputあなたったら
MeCab
あな名詞たっ動詞たら助動詞
3 tokens
Suzume
あなた代名詞PRONったら助詞PARTICLE
2 tokens

ってば emphatic particle:

Inputもうってば
MeCab
助詞うっ動詞助詞助詞
4 tokens
Suzume
もう副詞ADVってば助詞PARTICLE
2 tokens

Productive Function-Word Chains

Suzume preserves the internal verb and particle boundaries of productive constructions instead of treating the whole spelling as a fixed function word.

Inputとすれば
MeCab
とすれば接続詞
1 token
Suzume
助詞PARTICLEすれ動詞VERB→する助詞PARTICLE
3 tokens

The same rule gives を / もっ / て for をもって. Closed expressions with no productive verb boundary remain whole, as in や否や.

Adverbial Noun + Particle

Some sequences that the selected dictionary lexicalizes as one function word are kept as noun + particle.

Input次に
MeCab
次に接続詞
1 token
Suzume
名詞NOUN助詞PARTICLE
2 tokens
Input後で行く
MeCab
後で副詞行く
2 tokens
Suzume
名詞NOUN助詞PARTICLE行く動詞VERB
3 tokens

Leading Fixed Units

The determiner わが is split from the following noun. Similar fixed units such as 以下 and 程度 also keep their own token next to adjacent nouns.

Inputわが国
MeCab
わが国名詞
1 token
Suzume
わが連体詞DET名詞NOUN
2 tokens

Verb Stem + Productive Suffix

Productive suffixes after a verb stem — がち (tendency), たて (freshness), っぱなし (left as-is) — keep their boundary and are tagged SUFFIX, so the verb stem stays searchable with its lemma.

Input忘れがち
MeCab
忘れ動詞がち名詞・接尾
2 tokens
Suzume
忘れ動詞VERB→忘れるがち接尾辞SUFFIX
2 tokens
Inputできたて
MeCab
でき動詞助動詞助詞
3 tokens
Suzume
でき動詞VERB→できるたて接尾辞SUFFIX
2 tokens
Input開けっぱなし
MeCab
開けっぱなし名詞
1 token
Suzume
開け動詞VERB→開けるっぱなし接尾辞SUFFIX
2 tokens

The negative construction 読みっこない follows the same principle: 読み (VERB) / っこ (SUFFIX) / ない (ADJ).

Quantity and State Suffixes

Even though Suzume merges kanji compounds aggressively, productive quantity/state suffixes keep their boundary and are tagged SUFFIX.

Input二階建て
MeCab
建て
3 tokens
Suzume
二階名詞NOUN建て接尾辞SUFFIX
2 tokens
Input砂糖抜き
MeCab
砂糖名詞抜き名詞
2 tokens
Suzume
砂糖名詞NOUN抜き接尾辞SUFFIX
2 tokens
Input会議中に
MeCab
会議名詞名詞助詞
3 tokens
Suzume
会議名詞NOUN接尾辞SUFFIX助詞PARTICLE
3 tokens

Pure relabeling suffixes with no boundary change, such as the nominalizer さ, are covered in POS Classification.

Productive Negative Splitting

Unlike the closed nai-adjective word list, productive "stem + ない" combinations split, keeping the stem searchable.

Input揺るぎない
MeCab
揺るぎない形容詞
1 token
Suzume
揺るぎ名詞NOUNない形容詞ADJ
2 tokens
Inputやりきれない
MeCab
やりきれない形容詞
1 token
Suzume
やりきれ動詞VERB→やりきれるない助動詞AUX
2 tokens
Inputやむを得ない
MeCab
やむを得ない形容詞
1 token
Suzume
やむ動詞VERB助詞PARTICLE動詞VERB→得るない助動詞AUX
4 tokens

Kango + として

For fixed tari-adverb constructions such as 依然として, MeCab treats the expression as one adverb. Suzume splits the adverb form from the する conjugation. Productive expressions such as 名詞として already have grammatical boundaries in both analyzers.

Input依然として
MeCab
依然として副詞
1 token
Suzume
依然と副詞ADV動詞VERB助詞PARTICLE
3 tokens

Prefecture + City

Prefecture-city compound nouns are split at administrative boundaries.

Input神奈川県横浜市
MeCab
神奈川横浜
4 tokens
Suzume
神奈川県横浜市
2 tokens

split at the 県 / 市 boundary

Note: This split rule applies only to the 県+市 pattern. Other combinations like 都+区 (東京都新宿区) or 府+市 (大阪府大阪市) are merged into single tokens by the Proper Nouns and Place Names rule.

Classical and Literary Endings

Classical inflections keep the same grammatical boundaries as their modern counterparts. The supported families include negative forms, conjectural and obligation auxiliaries, past and perfect auxiliaries, prohibitives, and imperatives. A compact sample:

  • Classical negative ぬ splits from the 未然形: 知らぬ → 知ら + ぬ (AUX)
  • Literary volitional ん splits the same way: 乗り越えん → 乗り越え + ん (AUX)
  • Classical past き keeps its own auxiliary boundary: 行かざりき → 行か + ざり + き

Normalization

Suzume normalizes grammatical constructions to one consistent shape, even where dictionary output varies between equivalent forms.

Content Symbols and Punctuation

Currency and unit signs, arrows, mathematical or technical marks, and emoji remain in the default output as OTHER. They carry text content and keep the token offsets covering that content. Punctuation-like characters are SYMBOL tokens and are omitted by default; enable preserveSymbols to keep them.

Options価格は€50🎉。
Default価格(NOUN) / は(PARTICLE) / €(OTHER) / 50(NOUN) / 🎉(OTHER)
preserveSymbols: true価格(NOUN) / は(PARTICLE) / €(OTHER) / 50(NOUN) / 🎉(OTHER) / 。(SYMBOL)

Copula Negation

After a nominal predicate, Suzume treats じゃ as the copula and ない as the negative auxiliary. An isolated じゃない is ambiguous and may instead be one adjective token, so the nominal host is part of the comparison.

Input本じゃない
MeCab
名詞じゃ助詞ない助動詞
3 tokens
Suzume
名詞NOUNじゃ助動詞AUX→だない助動詞AUX
3 tokens

Causative-Passive

MeCab sometimes merges godan verb 未然形 + causative さ into one token. Suzume normalizes this inconsistency.

Input飲まされた
MeCab
飲まさ動詞動詞・接尾助動詞
3 tokens
Suzume
飲ま動詞VERB→飲む助動詞AUX→す助動詞AUX助動詞AUX
4 tokens

Filler Decomposition

Fixed conversational phrases lexicalized as fillers are decomposed into their grammatical parts.

Inputそうですね
MeCab
そうですねフィラー
1 token
Suzume
そう形容詞ADJです助動詞AUX助詞PARTICLE
3 tokens

Formal Noun ふう

ふうに after a demonstrative determiner is split into its grammatical determiner, formal-noun, and particle units.

Inputそんなふうに
MeCab
そんなふうに副詞
1 token
Suzume
そんな連体詞DETふう名詞NOUN助詞PARTICLE
3 tokens

Indefinite か

The indefinite particle か is split from an interrogative pronoun. A following existential いる is then treated as a main verb.

Inputなにかいる
MeCab
なにかいる
2 tokens
Suzume
なに代名詞PRON助詞PARTICLEいる動詞VERB
3 tokens

Constraints

These are known limitations arising from Suzume's feature-based architecture.

Cannot Split Merged Compounds

Suzume cannot infer arbitrary lexical boundaries inside an otherwise unknown same-script compound. It can still split boundaries licensed by grammatical rules or compact-dictionary entries.

Input東京都庁前
MeCab
東京都庁
3 tokens
Suzume
東京都庁前名詞NOUN
1 token

Suzume cannot determine the internal boundaries; MeCab splits them from its dictionary

Workaround: Use the runtime-loading examples in the user-dictionary guide to register boundaries required by your application. That page covers JavaScript, Python, Go, C++, C, and the native CLI.

When to Use Which

Use CaseRecommendation
Browser / client-side appsSuzume — no server required
Search indexing / tag extractionSuzume — compound merging is often desirable
Compatibility with a particular MeCab dictionary/corpusMeCab — preserves that dictionary's boundaries and taxonomy
Real-time UI (input-as-you-type)Suzume — fast, no network latency
Dictionary-defined compound word splittingMeCab — boundaries come from the selected dictionary
Pattern candidates for words absent from the dictionarySuzume — can analyze character sequences without a lexical entry