Mirror of git@github.com:asbplayer/asbplayer.git (auto-pull every 8h)
  • TypeScript 98.4%
  • Go 0.5%
  • JavaScript 0.3%
  • CSS 0.3%
  • Shell 0.2%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-01 22:54:35 -05:00
.github Fix agentic workflows failing due to compiler upgrade (#1397) 2026-10-27 13:02:19 +09:00
client Add project.json for repo wide defaults (#1378) 2026-10-25 10:14:13 -04:00
common Fix HBO Max seeking and update site url regex (#1413) 2026-11-01 22:37:55 -05:00
docs Fix HBO Max seeking and update site url regex (#1413) 2026-11-01 22:37:55 -05:00
extension fix recording stop when no subtitles are loaded (#1414) 2026-11-01 22:54:35 -05:00
loc feat: webp-animated-recordings (#1383) 2026-10-24 13:30:00 +09:00
patches Dev/migrate to pnpm (#1167) 2026-09-26 02:15:06 -07:00
plugins/anki Add project.json for repo wide defaults (#1378) 2026-10-25 10:14:13 -04:00
scripts Bump github.com/labstack/echo/v4 in /scripts/web-socket-server (#1389) 2026-10-29 00:51:40 -04:00
.envrc dev: add nix flake and python tooling 2026-08-29 22:00:33 -07:00
.gitattributes Initial attempt at agentic workflow 2026-08-27 01:01:23 +09:00
.gitignore Dev/migrate to pnpm (#1167) 2026-09-26 02:15:06 -07:00
.nvmrc bump nvm and go versions (#1376) 2026-10-22 13:29:09 -04:00
.prettierignore WXT Migration (#707) 2025-05-24 17:48:12 -07:00
.prettierrc.json Vite migration (#650) 2025-02-09 05:17:20 -08:00
CONTRIBUTING.md Add project.json for repo wide defaults (#1378) 2026-10-25 10:14:13 -04:00
CONTRIBUTORS Avoid document.body mutation for token overlays (#1398) 2026-11-01 19:14:17 -05:00
eslint.config.js Better logging and type imports (#1121) 2026-08-18 21:38:31 -04:00
flake.lock Pin nixos-unstable branch (#1379) 2026-10-22 17:23:52 -07:00
flake.nix Pin nixos-unstable branch (#1379) 2026-10-22 17:23:52 -07:00
LICENSE LICENSE 2026-09-23 15:45:12 -04:00
package.json Add project.json for repo wide defaults (#1378) 2026-10-25 10:14:13 -04:00
pnpm-lock.yaml Add Recipes: customizable and shareable presets for playback (#1331) 2026-10-25 09:53:08 -04:00
pnpm-workspace.yaml Dev/migrate to pnpm (#1167) 2026-09-26 02:15:06 -07:00
project.json Add project.json for repo wide defaults (#1378) 2026-10-25 10:14:13 -04:00
README.md Add Recipes: customizable and shareable presets for playback (#1331) 2026-10-25 09:53:08 -04:00

asbplayer

GitHub Workflow Status (with event) Github All Releases GitHub License Discord

asbplayer

asbplayer is a browser-based media player and Chrome extension developed for language learners who learn their target language through subtitled media. With asbplayer, you can:

  • Easily create high-quality, multimedia flashcards out of subtitled videos.
  • Load text-selectable subtitles onto most video sources, including streaming sources. You can use auto-detected subtitles on popular streaming services like Netflix and YouTube, or your own subtitle files. A generic fallback subtitle detection algorithm allows asbplayer to detect subtitles on 85% of all other streaming services.
  • Seek through subtitles using a navigable subtitle list.
  • Utilize customizable keyboard shortcuts to access most of asbplayer's features.
  • Optimize language acquisition with playback modes like:
    • Condensed playback: Skip unsubtitled sections of video.
    • Fast-forward playback: Fast-forward through unsubtitled sections of video.
    • Auto-pause: Automatically pause at the beginning or end of every subtitle.
    • Repeat: Automatically repeat subtitles indefinitely or for a specified number of times.
  • Use customizable recipes to create and import immersion presets with asbplayer's rich playback features.
  • Annotate subtitles with the help of tools such as Yomitan
    • Word styling (color/underline/outline, etc.) based on a word's status (uncollected/unknown/learning, etc.) synced from Anki, WaniKani, and/or tracked locally in asbplayer.
    • Reading annotation for reading displayed above each word or based on status.
    • Accent annotation such as pitch accent.
    • Frequency annotation for rank-based frequency displayed below each word or based on status.
    • Glossary annotation for a short definition or explanation of the word.
    • Statistics and Comprehension on your known words for the current media.
    • Adaptive Playback that uses playback modes and the annotation data to optimize your learning experience.
    • Word browser to manage local and view words synced from external sources.
    • Many more features for future releases! Some planned features include:
      • Auto mining on uncollected/unknown/learning words.
      • Rich Anki Card Creation for generating high-quality flashcards from annotated subtitles.
      • Statistics and Comprehension on your known words across media.

Thanks

Thank you to everyone who has sponsored the project:

@vivekchoksi, @nzarbayezid, @ManuJapan, AdamM, realgoodsmiley, Alex, @m4eko, Simon, Attenius, medyas, @zaerald, Suna, @tony7253, @voothi, kibo, @genericdave, Daniel, Cristian, Joey Potter, @InteractiveNinja, @agloo, @Venous771, @Viterkim, Julian, DanglingSabSuu, @nikkovc, @ganqqwerty, @mathiaslovnes, @MF-Billings, @festivity9139, Phos, AstralDice, @east825, @Astr0ddity, @NirDafnai, @henryfl, トム, Peter, @825i, ags, Vannde3, Champ, marcman3001, @vladysor, @Otto-Deviant1904, @Ayase-the-Dark, shiki, kansha-gratitude

and to those who have donated privately.

Thank you to all those who have contributed to asbplayer:

@Renji-XD, @MatiasIslaA, @cyphar, @alexbofa, @Zyphdoz, @artjomsR, @iam6lake, @bpwhelan, @pooky-programs, @m-edlund, @nekorushi, @Viterkim, @s-cork, @shekhirin, @ShanaryS, @kayden1940, @eltociear, @MarvNC, @mcgrizzz, @mwojick, @kowasaur, @NirDafnai, @miroshQa, @RicBent, @fuyuka1d3su, @SpazzTL, @mseh1128, @LuqueDaniel, @agloo, @Bennycopter, @extremq, @iamllama, @danthemango, @L-M-Sherlock, @Hit2Skill, @khajiitvaper2017, @saifkaral, @xwxb, @yqmmm, @jprostko, @rodrigo-suarezmajor, @Roka20012, @RonzyOnGIT, @Dr-TNineS, @thntx, @Otto-Deviant1904, @Ayase-the-Dark, @aramrw, @steckums, @eXaminator, @rajpiskala, @gpressutto5, @chadzimmerman

Thank you to all those who have translated asbplayer:

Mana Tsutsumi (Japanese, initial translation), Kai Böse (German), Triline, @nekorushi (Polish), NeverWinterSwor (Simplified Chinese), @AkihaZhang (Simplified Chinese), senorli (Simplified Chinese), Yagxter, @chatterine (Brazilian Portuguese), Leo Gonzalez (Spanish), @NovaKing007 (Spanish), Yuri (@ganqqwerty) (Russian), Kellen (kputuhuk) (Russian), Vladislav Kochetkov (vakochetkov) (Russian), @825i (Finnish), @Jaybird1291 (French), Tigerbabe aka Gyaru Jinsei Juku (Korean), yaacha (Indonesian), @NeriSal (Italian)

If you are a non-English native, and would like to help translate asbplayer, join the Crowdin project. If your language isn't there, feel free to create an issue to add it on the issues page.

Contributing

Before contributing, please read the contribution guidelines.

User guide

asbplayer's complete user guide is here.

Getting Started

Note

asbplayer is both a subtitle control and flashcard creation tool. If you are not interested in flashcards, and only want to use asbplayer's subtitle features, just follow step 5.

  1. Install and set up a dictionary tool for your target language that allows you to do instant lookups such as Yomitan.

  2. Install Anki, and create a deck and note type. More details on Refold's guide.

  3. Install the AnkiConnect plugin for Anki.

  4. Configure asbplayer to create cards via AnkiConnect using your deck and note type.

  5. Enhance a video using asbplayer and subtitle files.

    • For streaming video: After installing the browser extension, drag-and-drop a subtitle file into the streaming video you want to mine.
    • For local files: Drag-and-drop media/subtitle files into the asbplayer website.

    You may have to adjust the subtitle offset to get the subtitles in sync.

  6. When a subtitle appears that you want to mine, use Ctrl + Shift + X to open the flashcard creator.

  7. Fill in the definition and word fields and then export the card. To fill in the definition field you may use the dictionary you installed in step 1.

Contact

Submit bugs or feature requests from the issues page. Join the Discord server to talk with me and other language learners.

Notes for AMO source code reviewers

Environment

  • node 24.22.1
  • pnpm 11.27.0

Building

# Install dependencies
pnpm install

# Builds Firefox extension to extension/.output/asbplayer-<version>-firefox.zip
pnpm --filter @project/extension exec wxt zip -b firefox

# Builds Firefox for Android extension to extension/.output/asbplayer-<version>-firefox-android.zip
pnpm --filter @project/extension exec wxt zip -b firefox-android --mv2

License

asbplayer is licensed under the GNU Affero General Public License version 3 or later (AGPL-3.0-or-later). Portions of this software are licensed under the MIT License.