Anki add-on: Listen First: Lock Rating Buttons Until Audio Finishes

Train yourself to actually hear every card before rating it. If you study a language (or anything with audio), you've probably caught yourself hitting Again or Good the instant you recognize a card — before the pronunciation, pitch accent, or full sentence has even finished playing. Over thousands of reviews, that habit quietly eats away at your listening ability and weakens long-term recall. This add-on fixes it at the source: rating buttons stay locked until all answer-side audio has played to the end. No clicking past it, no shortcut-key escape hatch. You hear the whole thing, every time. I built this for Japanese study, where catching the full sentence — intonation, particles, the bit at the end you keep missing — matters as much as recognizing the word. It works just as well for any language deck, or any card where audio is the point. What it does Locks Again (and optionally Hard / Good / Easy ) until all answer audio finishes playing Tracks both Anki's built-in audio player and in-card <audio> tags (e.g. {{Word Audio}} , {{Sentence Audio}} ) — every clip must finish Blocks the keyboard shortcuts too, not just the mouse click — pressing 1 , 2 , 3 , 4 , or Space won't sneak you past Shows a quick tooltip when you try to skip ahead, so you know why nothing's happening Resets cleanly between cards Configuration Pick which buttons to lock — Again only, or all four Limit it to specific note types by listing your audio field names (e.g. Word Audio , Sentence Audio ) Or apply globally to every card with answer-side audio Why it works: Anki rewards speed, and your brain will happily optimize for "click fast, move on." This add-on removes that shortcut and forces the rep to include the part you actually came for — the sound. After a couple of weeks, listening through becomes automatic and your retention on audio cards noticeably improves. Requires Anki 2.1.22+ with the V3 scheduler.

GitHub repository: arturkoziara/disable-again-until-audio-ends
Languages: Python