Japanese Furigana, JLPT Level & Counter Checker
Pricing
from $0.50 / 1,000 furigana results
Japanese Furigana, JLPT Level & Counter Checker
Add furigana to Japanese text, estimate its JLPT level (N5-N1) and check counter words (猫が三個 → 三匹). Offline kuromoji/IPADIC analysis, no API key.
Three offline tools for Japanese text, in one Actor:
- Furigana: adds readings to kanji as ruby HTML (
<ruby>友達<rt>ともだち</rt></ruby>), plus a per-token list with reading, dictionary form, part of speech and character offsets. - JLPT level estimate: estimates the JLPT level (N5–N1) of a text and lists the words and kanji that are harder than your learner's target level.
- Counter checker: finds number + counter words (三本, 二匹, 五個…), gives their correct reading (さんぼん, にひき, ごこ) and flags a counter that doesn't fit the noun (猫が三個 → 三匹), with a corrected text.
Use it for graded readers and learning apps, checking LLM-generated Japanese, or adding furigana to a dataset of texts. Runs fully offline with the kuromoji analyzer and the IPADIC dictionary: no API key and no calls to external services; texts are processed inside the Actor run.
Input
| Field | Default | Meaning |
|---|---|---|
texts | (required) | List of Japanese texts (sentences or short passages) |
tools | all three | Any of furigana, jlptLevel, counters |
jlptTarget | N4 | Learner level for aboveTarget (N5–N1) |
includeTokens | true | Include the per-token list in furigana results |
maxCharsPerText | 1000 | Longer texts are skipped and not charged (max 5,000) |
maxTexts | 100 | Texts beyond this are skipped and not charged (max 10,000) |
Example: {"texts": ["猫が三個いる。", "昨日、友達と三本の映画を見ました。"]}. More in listing/input-examples.md.
Output
One dataset item per text per tool, with inputIndex, tool, text and a credit line.
furigana:html(ruby markup),tokens[](surface,reading,base,pos,start,end,segments)jlptLevel:estimatedLevel,target,coverage[]per level,words[],kanji[],aboveTarget.words/kanji,stats,notescounters:ok,items[](number, counter, what it counts, correctreadings, the noun it counts,issues),issues[],correctedText
Full example output for the input above: listing/output-example.json.
A SUMMARY record in the key-value store gives counts, skipped texts and peak memory.
Pricing (pay per event)
| Event | Price |
|---|---|
| Furigana result (one text) | $0.0005 |
| JLPT level result (one text) | $0.001 |
| Counter check result (one text) | $0.001 |
| Actor start (Apify standard, once per run) | $0.0003 |
All three tools on 1,000 texts cost $2.50 (plus $0.0003 per run). Skipped texts and failed runs are not charged. The run stops cleanly when your maximum charge per run is reached.
Limits and accuracy (please read)
- JLPT levels are unofficial. The JLPT has not published word or kanji lists since 2010. Levels come from community lists (see credits) and the result is an estimate, most useful for passages of a few sentences or more. For one short sentence a single kanji can move the level (e.g. 個 is listed at N2, so 「猫が三個いる。」 grades N2).
- Readings come from a dictionary-based analyzer (IPADIC, 2007). It picks one reading per word by context, so rare readings, names and new words can be wrong. Proper nouns may get a common reading.
- Counter checks cover common counters and common noun–counter pairs. A text with no issue found is not proof that every counter is right, and unusual but valid choices may be flagged.
- Up to 5,000 characters per text. Japanese only; other languages pass through without readings.
- Memory: the dictionary needs about 300–380 MB, so the Actor runs at 512 MB (the default and the minimum). More memory does not make it faster.
Data sources and credit
- Morphological analysis: kuromoji.js (Apache-2.0) with mecab-ipadic 2.7.0 (© NAIST / ICOT; notice in NOTICE-kuromoji-ipadic.md).
- JLPT vocabulary levels: open-anki-jlpt-decks (MIT, © Jamie Sinclair), based on Jonathan Waller's JLPT lists at tanos.co.uk (CC BY).
- Kanji levels: kanji-data (MIT, © David Gouveia), also from Waller's lists.
- Details and the share-alike note on the derived level file: LICENSES.md.
No warranty
This Actor is provided as is, without warranty of any kind. Readings, levels and counter suggestions are automatic estimates and can be wrong. Check important output (teaching material, published text) yourself. The JLPT (Japanese-Language Proficiency Test) is run by the Japan Foundation and JEES; this Actor is not affiliated with or endorsed by them.