Transform your YouTube learning experience with word-perfect subtitles that sync naturally with speech
- Subtitles appear exactly when each word is spoken
- Natural speech timing with intelligent pause detection
- No more awkward caption blocks that appear too early or late
- 3-layer caching system: Memory β IndexedDB β Server Cache
- Previously watched videos load subtitles in <50ms
- Smart rate limiting prevents API blocks
- Cloud API (default): Shared subtitle cache for instant loading
- Local yt-dlp server: Extract subtitles on your own machine (see server repo)
- Automatic fallback if one source fails
- All data processing happens locally
- No tracking or analytics
- Optional cloud features (you control it)
- Read our Privacy Policy
- Seamless overlay on YouTube player
- Auto-disable when switching videos
- Customizable subtitle appearance
- One-click enable/disable
-
Clone this repository
git clone https://github.com/aminophen98/vocaminary.git cd vocaminary -
Load the extension in Chrome
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right)
- Click "Load unpacked"
- Select the cloned
vocaminaryfolder
- Open Chrome and go to
-
Optional: Set up the local subtitle server
For privacy and better control, you can run your own subtitle extraction server:
- Visit the vocaminary-subtitle-server repository
- Follow the setup instructions there
- Configure the extension to use your local server in Settings
-
Start using it!
- Go to any YouTube video
- Click "Enable Overlay" when captions are ready
- Enjoy perfectly synced subtitles
Status: Coming soon!
- Navigate to any YouTube video with captions
- Wait for the subtitle overlay button to appear on the player
- Click "Enable Overlay"
- Watch as subtitles appear word-by-word in perfect sync
Tip: The first time you watch a video, it may take 2-5 seconds to fetch subtitles. After that, they're cached instantly!
- Setup Guide - Detailed installation and configuration
- Architecture Overview - How the extension works internally
- Privacy Policy - What data we collect (spoiler: almost nothing)
- Contributing Guide - How to contribute to this project
- Testing Guide - Help us test with first users
| Component | Technology |
|---|---|
| Extension | Vanilla JavaScript (no frameworks) |
| Manifest | Chrome Manifest V3 |
| Storage | Chrome Storage API + IndexedDB |
| Backend | Cloud API or Local Server |
- Event-driven design: Custom EventBus for decoupled components
- Centralized state: StateManager as single source of truth
- Layered caching: Memory β IndexedDB β Server β Source
- Critical load order: Scripts load in precise dependency order
See full architecture details β
- Click any word for instant definitions (coming soon)
- Study natural speech patterns
- Improve listening comprehension
- Better subtitle timing for hard-of-hearing users
- Clearer word boundaries
- Customizable display
- Analyze speech timing in videos
- Study pacing and rhythm
- Create better content
We welcome contributions! Here's how you can help:
- π Report bugs - Open an issue
- π‘ Suggest features - Request a feature
- π§ Submit pull requests - See our Contributing Guide
- π Improve documentation - Help make our docs clearer
- π Translate - Add support for more languages
- Manual (human-created) subtitles don't have word-level timing β displayed as full captions
- YouTube DOM changes may require extension updates
- Rate limiting: Aggressive usage may trigger YouTube blocks (we implement safeguards)
- Browser: Chrome, Edge, or Chromium-based browsers (version 88+)
- Internet: Required for initial subtitle fetching
- Refresh the YouTube page (F5)
- Check if extension is enabled in
chrome://extensions/ - Look for error messages in Chrome DevTools console
- Some videos don't have captions enabled
- Try a different video with auto-generated captions
- Check if subtitles are enabled on YouTube's player
- Go to
chrome://extensions/ - Find "Vocaminary"
- Make sure the toggle is ON
- Click the reload icon β»
Current Version: 1.0.0 (Initial Release)
- Core subtitle overlay functionality
- Multi-layer caching system
- Local server support (separate repository)
- Cloud API integration
- Word-click definitions (in development)
- Chrome Web Store publication (planned)
- Firefox support (planned)
This project is licensed under the MIT License - see the LICENSE file for details.
- yt-dlp - Subtitle extraction (used in subtitle server)
- YouTube - For providing subtitle data
- The open-source community - For inspiration and tools
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- vocaminary-subtitle-server - Local subtitle extraction server (optional)
If this project helped you learn languages or improve your YouTube experience, please give it a star β on GitHub!
Made with β€οΈ for language learners worldwide