Shiori
Shiori

Learn Japanese by actually reading Japanese.

Shiori(栞, “bookmark”)is a desktop reading companion built around comprehensible input: the primary activity is reading real Japanese text, and every other feature exists to support that. Since 0.2.0, installable language packs take the same reader beyond Japanese — Koine Greek first, with ~19 more you can build from Wiktionary.

Free & open source · Windows x86_64 · no accounts, no subscription, no cloud

Reading in Shiori: furigana over unknown words, one click for the dictionary panel, one keypress to learn a word

Import any book. Read it. Click the words you don’t know — Shiori shows the dictionary entry, the usage register, the conjugation explained piece by piece — and one click later the word is in spaced repetition, anchored to the exact sentence you found it in. The app tracks every word you’ve ever met, grades each book in your library against what you know, and tells you what to read next.

Shiori grows beyond Japanese

Language support is data-driven: install a language pack, activate it, and the whole app follows — library, reader, dictionary, reviews, statistics, chat. Nothing mixes across languages.

Installable language packs

Settings → Languages installs a pack from a folder, a zip, or a URL — with optional SHA-256 verification — imports its bundled texts into the library, and activates the language live, no restart.

Koine Greek, corpus-first

Pre-annotated texts derived from MorphGNT carry a lemma, parse, and gloss on every token: interlinear glosses in the furigana slot, parses decoded to prose, stats graded against GNT frequency tiers, and accent-insensitive search that accepts betacode and Greeklish.

Build a pack from Wiktionary

Pick from ~19 languages and Shiori compiles the pack locally from kaikki.org’s Wiktextract dump and hermitdave’s frequency lists. Inflection tables become the grammar, frequency is lemmatized into Top-500/1k/2k/5k tiers, and the gigabyte-class downloads resume instead of restarting.

A reader that knows what you don’t

Furigana appears only over words you haven’t learned — and in its strictest mode, only over the first few occurrences of each word per book: scaffolding that fades as you read deeper. Clicking a conjugated verb selects the whole phrase (読んでいる, not 読) and explains the form component by component.

The reading clock is honest, too: pages you flip through too fast don’t count, and the app pauses itself when you wander off.

The reader with instance-anchored furigana, unknown-word tinting, and the dictionary panel

Conversation practice that doesn’t interrupt

Chat with a native-speaker persona that converses with you and never corrects you mid-conversation. Instead, your messages come back marked up like a paper: red underlines for grammar errors, orange for phrasing a native wouldn’t use, with the explanation one hover away.

Bring your own brain: Anthropic’s API, any local model through Ollama (nothing leaves your machine), or any OpenAI-compatible endpoint.

Production chat: the partner converses while mistakes get paper-style underlines

A dictionary with stroke order built in

Search JMdict by kanji, kana, or any word form. Every kanji in your query gets a card — readings, meanings, school grade, and an animated stroke-order diagram drawn from KanjiVG data, scrubbed stroke by stroke with the scroll wheel — and you can add any hit straight to spaced repetition.

Pack languages get dictionary search too: an inflected query like suis resolves to every candidate lemma — être and suivre — with corpus frequency ranking words within each match tier.

Dictionary view: word entries with prefix matches and a kanji card with an animated stroke-order diagram

Books from the internet, one click away

Search Aozora Bunko’s 17,000+ public-domain works and Japanese Wikisource, then import straight into your library — Shift_JIS, ruby markup and all. Aozora’s catalog is cached after the first fetch, so every search after that runs locally and instantly.

Sources view searching the Aozora Bunko catalog

Numbers that tell you what to read next

Every book is graded against what you actually know, with coverage forecasts, reading velocity, and a JLPT-graded comfortable reading level.

Library with the book info panel: coverage forecast, reading time, most useful unknown words
Per-book analytics & a finish-the-book vocabulary sweep.
Statistics: JLPT level grading, review forecast, reading calendar
Velocity, retention, forecasts, and a reading calendar.

Everything else

FSRS spaced repetition

Cards show the word inside the sentence you found it in, framed by its neighbors, plus examples from your other books.

Anki interop

Export your cards with scheduling, or import an existing deck — SM-2 state seeds FSRS.

Four knowledge statuses

Unknown / learning / known / ignored, so names and noise never pollute your stats.

Opens on a home page

The active language with a quick switcher, cards due today with a time estimate from your measured pace, a continue-reading card with time left and a difficulty verdict, and the reading calendar.

Analysis without an engine

Contractions expand in the reader (au = à + le, components clickable), Germanic packs split unknown compounds against their own dictionary, and a candidate picker re-points any ambiguous occurrence.

Practice in any language

Pack-defined personas — dead languages disclose a synthetic partner and judge against attested usage — plus composition exercises, translation drills from your own reading, and per-language model overrides.

Make it yours

Dark / light / sepia themes, gothic or mincho Japanese fonts, rebindable shortcuts, adjustable typography.

Offline-first

Everything but LLM calls, online search, and language-pack downloads works with no network — installed packs work fully offline. One SQLite file, one-click backup & restore.

Import anything

.txt, .md, .html (Aozora), .epub, .pdf — UTF-8 or Shift_JIS, by dialog or drag-and-drop.

Ready to start reading?

Grab the latest shiori-*-windows-x86_64.zip, unzip, and run shiori.exe. On first launch Shiori downloads its Japanese reference data (~20 MB) and you’re reading. Other languages install as packs from Settings → Languages.