Open-source project
birchill/10ten-ja-reader avatar
birchill/10ten-ja-reader

10ten Japanese Reader: hover lookup with pitch accent and a real dictionary

A browser extension to translate Japanese by hovering over words.

762 stars63 forksTypeScriptGPL-3.0

At a glance

What is it?
10ten Japanese Reader, formerly Rikaichamp, is a browser extension that shows a dictionary entry when you hover or tap a Japanese word, with pitch accent, grammatical form handling and converters for era years and floor areas. It is a serious reading tool for Japanese study, distributed for Firefox, Chrome, Edge, Safari and Thunderbird.
Who is it for?
Use 10ten Japanese Reader if you read Japanese on the web and want word level lookup with pitch accent, form detection and a dictionary that updates itself, and you want it in Firefox, Chrome, Edge, Safari or Thunderbird.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

From Rikaichamp to a reading tool with its own name

10ten Japanese Reader is a browser extension that lets you look up Japanese words with the hover of a mouse or a tap on a screen. The README opens with a greeting to fellow Japanese readers and the note that it was formerly known as Rikaichamp.

The project is published by Birchill, Inc., the license is GPL-3.0-or-later, the primary language is TypeScript, and the homepage is 10ten.life. The repository topics list rikaichamp, rikaichan and rikaikun alongside web-extension and dictionary, and the package manifest keywords repeat that lineage, so the lineage is part of the project's identity rather than a footnote.

What distinguishes this line of extensions from a general translation service is the granularity. The extension works on the word under your pointer, so a page of Japanese text becomes a page of individually readable words, each with a definition, and reading stops being a linear process of copying text into another tab.

The packaging is wide. The extension is published for Firefox Add-ons, the Chrome Web Store, the Edge Web Store, the Safari App Store and Thunderbird, which makes it one of the few Japanese reading extensions that covers both the major Chromium browsers and the Gecko one, plus a mail client.

The repository structure is a modern JavaScript project: a pnpm workspace, rspack for bundling, vitest for tests, changesets for releases, react-cosmos for component work, a manifest.json.src template and per-target build scripts.

Three dictionaries and a twice-weekly update

The dictionary system has three parts, and the README describes the switching between them as a single key press. The keyboard table lists switch dictionary, words to kanji to names, bound to Shift or Enter.

The features list names the behaviour that makes the lookup useful beyond a plain word list. Dictionaries update automatically twice a week by fetching just the updated entries, rather than downloading the whole dictionary each time. Entries are grouped by part of speech for readability. Common matches are prioritised, so the word you probably meant appears first. There is an automatic preview of name entries when there is a better match in the name dictionary, which is the cross-reference behaviour that shows 小池百合子 being looked up from the names dictionary. Romaji display is supported for entries that need it.

Non-English dictionaries are supported, and the README shows a German translation as the example, so a learner who wants definitions in their own language is not forced into English.

The kanji side is separate and substantial. The kanji view includes data for Kanji kentei, Conning references and updated educational levels, along with heavily reworked kanji components. The two are complementary rather than alternatives, which is why the extension treats switching between them as a first-class action rather than a setting buried in an options page.

The dictionaries are also localised. The interface is available in Japanese and Simplified Chinese, and the README phrases the Japanese localisation as a deliberate feature, so that you can study Japanese while you study Japanese.

The form recognition that decides whether a lookup works

The most technically interesting part of the feature list is the handling of grammatical forms, because a dictionary that cannot see the conjugated form is useless in running text.

The README lists a wide range of forms that are recognised. Irregular inflections of suru verbs such as 罰せられる, irregular verbs such as いらっしゃいます, continuous forms such as 食べてた, ん used as a negative form as in 分からん and 知らん, words with a long vowel mark such as じーちゃん, 頑張ろー and そーゆー, ぬ verbs, forms like とく and どく as in 買っとく, causative passive forms, and させる for verbs ending in す as in 起こさせる.

That list is the difference between an extension that works on isolated vocabulary and one that works on a novel. A learner hovering over 買っとく needs the dictionary of 買う, and a tool that does not fold the form will show nothing.

Character handling is the other half. The extension handles a wide range of characters including enclosed ones such as ㋕ and ㌀, composed characters such as 𠏹沢, halfwidth forms such as 8月 and B級グルメ, and katakana such as オーサカ. The README shows 弾道㋯㋚㋑㋸防衛 being recognised as 弾道ミサイル防衛, and the composed character ㍿ being resolved to 株式会社.

Two rendering cases are called out explicitly, and they are the ones that break naive text segmentation: support for vertical text and text inside SVG images, and handling of ruby text in YouTube. Ruby in video pages is a real problem because the furigana and the base text are separate nodes, and a tool that picks the wrong one returns the wrong word.

Era years and floor areas, the two conversions that are not dictionary lookups

Two features on the list have nothing to do with reading words, and they are the ones a reader of older Japanese actually needs.

The first is automatic translation of Japanese era years into Gregorian years, with the examples 昭和56年, 令和元年 and 平成三十一年, and a screenshot showing 明治四十二年 translated into 1909年. Era dates appear constantly in older documents, and converting them mentally is slow enough that a reader skims past the number instead.

The second is automatic translation between 畳 and 帖 measurements and square meters, with the examples 四畳半, 12.6 帖, 25 平米 and 6m2, and a screenshot of 四畳半 becoming 7.29 square meters. Apartment sizes in Japanese are given in tatami, and the conversion factor is the sort of thing that has to be looked up once and then remembered.

Both of these work without a lookup, which means they apply as you read, not when you ask.

Two smaller quality-of-life features fit the same pattern. The popup positions itself intelligently so it does not cover the word you are reading, and the styles are isolated so that the popup always looks correct regardless of the styling of the host page, which is a real problem for an extension that injects UI into arbitrary sites. Memory usage is described as minimal, and a copy feature lets you select which entry and in what format to copy to the clipboard.

Keyboard control, copy mode and the toolbar button

The extension is designed for people who read a lot, and the key bindings reflect that.

By default you enable it by pressing the toolbar button, which in some browsers you have to add to the toolbar yourself, by pressing Alt and R, or by choosing to enable it from the context menu. Many users, the README notes, prefer to have the extension permanently enabled but configured to show the popup only when either Alt or Ctrl is held, so the reading page is not littered with popups.

The rest of the bindings are listed in a table. Shift switches dictionary, with a separate Shift-only binding to show kanji results, disabled by default. The d key toggles display of definitions, also disabled by default. The j and k keys move the popup up and down, disabled by default. The c key enters copy mode, and inside copy mode e copies the entry, y copies tab-separated fields, w copies the word or kanji, and c selects the next entry.

The copy mode deserves attention because it is aimed at study rather than at reading. Being able to copy entries as tab-separated fields is exactly what you need to build a vocabulary list, and the extension does it without the user hand-typing anything.

There is also an intuitive settings window for configuration.

Building a release: rspack targets, react-cosmos and changesets

The README documents how to build a release from source, and the package manifest shows what that involves.

Each target has its own build script, because the extension is not a single bundle but a per-browser build with different manifests and APIs:

json
  "scripts": {
    "build:chrome": "rspack --env target=chrome",
    "build:firefox": "rspack",

The full set covers chrome, chrome-electron, edge, firefox, safari and thunderbird, with a matching package script for each that adds the package flag, and separate packaging variants for the store builds. The bundler is rspack, configured through rspack.config.js, with a separate rspack.config.cosmos.js, and the manifest itself is generated from manifest.json.src.

The project also has a component workbench. The cosmos scripts run react-cosmos through a cosmos-import.js shim, which is a development convenience for iterating on the popup in isolation from a web page.

Quality tooling is present in the manifest rather than only in prose. There is a lint script that runs web-ext lint and then oxlint over the source, a check-keys script, and knip.ts at the repository root for detecting unused exports. Releases are managed with changesets, and the changeset-version script runs the changelog post-processing and syncs the release version. The repository uses pnpm with a lock file, husky for git hooks, nano-staged for staging, and a postinstall hook that installs husky only for release builds.

The release history is regular: 1.27.1 and 1.27.2 in May 2026, and 1.28.0 on 2026-09-02, with the last push on 2026-10-22.

Editorial conclusion

Use 10ten Japanese Reader if you read Japanese on the web and want word level lookup with pitch accent, form detection and a dictionary that updates itself, and you want it in Firefox, Chrome, Edge, Safari or Thunderbird. Do not adopt it as a translation tool, because it is a dictionary lookup that works on the word under the pointer rather than a service that translates passages, and do not expect an offline copy, since the dictionaries are fetched as updated entries twice a week. Before you install it, pick the dictionary order you want with Shift and Enter, because switching between the words, kanji and names dictionaries is a key press, and check the release channel you are on, with the latest version being 1.28.0 from 2026-09-02 and the last push on 2026-10-22.

Frequently asked questions

What is 10ten Japanese Reader and what does it do?

10ten Japanese Reader is a browser extension, formerly known as Rikaichamp, that looks up Japanese words with the hover of a mouse or a tap on a screen. It shows dictionary entries grouped by part of speech, with pitch accent information and optional romaji.

Which browsers does 10ten Japanese Reader support?

The README lists install locations for Firefox Add-ons, the Chrome Web Store, the Edge Web Store, the Safari App Store and Thunderbird. The repository also carries separate build scripts for chrome, chrome-electron, edge, firefox, safari and thunderbird targets.

How do the dictionaries stay up to date?

The dictionaries update automatically twice a week by fetching just the updated entries rather than the whole dictionary. There are separate word, kanji and name dictionaries, and the key bindings allow switching between them.

What is the licence of 10ten Japanese Reader?

The package manifest declares GPL-3.0-or-later, and the repository carries a LICENSE file at its root.

Official sources

  1. birchill/10ten-ja-reader on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/birchill-10ten-ja-reader.svg)](https://hysenlabs.com/projects/birchill-10ten-ja-reader)

Was this useful?