Watch anything in the language you're learning — with as many subtitle tracks as you want, mapped honestly.
subweave is a local-first web player built for language learners. Point it at your own video files and subtitle tracks (any languages, any count) and it renders them as synchronized lanes with explicit mapping semantics:
- transcript — the language you're learning, split into word tokens;
- reading — romaji/furigana generated from the transcript, so every word and its reading share a color (true word-level pairing);
- translation — independent sentence-level tracks on their own timing, rendered as subordinate rows: clear about what they are, never pretending to be word-for-word.
Extras that make real-world files work: automatic subtitle↔audio alignment (per-episode offsets computed from speech activity), on-the-fly transcoding of browser-incompatible sources (Hi10p etc.), a subtitle-only reader mode, and a minimal cinema UI that gets out of the way.
The built-in demo (original dialogue, no video needed): Japanese transcript tokenized into words, generated romaji above each word in the same color, and two independent translation tracks below:
Any number of tracks — toggle and reorder them per title:
bun install
bun start # http://localhost:8940A fresh clone opens a built-in demo (an original 12-line dialogue with
Japanese transcript + generated romaji + Ukrainian and English translations)
running on a virtual clock — you can see the whole mapping model without any
video file. Then set MEDIA_DIR to your library and go.
Early. Architecture: see ARCHITECTURE.md.
MIT. The demo dialogue is original content written for this repository. No copyrighted media is included, and the player only opens files you already have on disk.

