Learn Japanese from the videos you'd like to watch.
Paste a YouTube link and HearnTube turns its subtitles into an interactive transcript. Tap any word to see its reading, dictionary entry, then save the ones worth keeping, along with the clip and audio they came from, straight into a spaced-repetition deck powered by FSRS.
Review them until they stick. Then prove it: in the Versus arena, players pool words from their own decks and race to fill in the blanks.
- Node.js >= 22.5: the app uses the built-in
node:sqlite. - yt-dlp: must be installed.
Subtitles and card audio are fetched by exec on it (
controllers/ytdlp.js). - SQLite >= 3.0.0: needed for controllers in
database.jsanddictionary.js.
- express
- ws
- helment
- cookie-parser
- argon2
- kuromoji
- ts-fsrd
- chart.js
To run, the project needs the dependencies listed in the runtime section. node,
yt-dlp and sqlite3 need to be installed on the local system.
After having cloned the repository, get the jmdict english common dictionary from
here, rename it to
jmdict-eng-common.json and move it to /data.
To install the npm dependencies run the following in the project root:
$ npm install
Then start the service by executing:
$ node server.js
Dictionary content is derived from JMdict, the property of the
EDRDG, used under the CC BY-SA 4.0 licence.
The generated dictionary database (data/dict.db) is a derivative of JMdict
and is therefore also distributed under CC BY-SA 4.0.
The jmdict-eng-common.json source file is the common-entries English build
from scriptin/jmdict-simplified
(conversion tooling also under CC BY-SA 4.0).


