π΅ VTT Editor Pro v3.1
π Try it online β https://rdtvlokip.github.io/vtt-editor-pro/vtt-editor-pro-v3.1.html
A modern, lightweight, and powerful WebVTT subtitle editor that runs entirely in your browser. No installation, no signup, no cloud dependencies β just one HTML file.
Clean starting point:

In action with live preview:

β¨ Features
π¨ Modern Interface
- Clean, themed UI with 5 color themes
- Color-coded regions for easy organization
- Real-time waveform visualization
- Responsive timeline with zoom controls
- Minimap for global timeline overview
- Enhanced visual resize handles with real-time tooltips
β‘ Powerful Editing
- Drag & Drop: Move and resize regions directly on the timeline
- Visual Resize Handles: See exact timestamps while resizing regions
- Snap-to-Grid: Align regions precisely with configurable intervals (10ms to 1s)
- Split & Merge: Divide cues or combine consecutive ones
- Shift All Timings: Offset all cues by Β±X seconds
- Batch Text Editing: Transform multiple cues at once with Find & Replace
- Anti-overlap Enforcement: Optional feature to prevent subtitle collisions
- Live Preview: Scrolling lyrics display synchronized with playback
- Auto-save: Your work is saved every 5 seconds (localStorage)
π― Workflow Optimized
- Import MP3/audio files directly
- Import/Export VTT, SRT, ASS, SBV, DFXP, JSON formats
- Real-time cue search and filtering
- Keyboard shortcuts for rapid editing
- Precise timestamp control with snap-to-grid
- Visual waveform for accurate timing
- Undo/Redo with 20-step history
π Technical Highlights
- 7200+ lines of vanilla JavaScript β no frameworks
- ~200 MB RAM usage
- Offline-first: Works without internet connection
- Single file: Just download and open in your browser
- Zero external dependencies (except WaveSurfer.js CDN)
- Support for 1000+ cues and markers without lag
π What's New in v3.1
π Copy / Paste Cues
Duplicate a cue in seconds.
Features:
- Copy the selected cue with
Ctrl+C - Paste it at the playhead with
Ctrl+V(keeps text, color and duration) - Overlap-aware: respects the Allow Overlap setting
β±οΈ Go to Time
Jump straight to a precise timestamp.
Features:
- Accepts
MM:SS.mmm,HH:MM:SS.mmmor raw seconds - Press
Gto focus the field instantly
β¨οΈ Customizable Keyboard Shortcuts
Make the editor yours.
Features:
- New
β¨οΈ Shortcutspanel listing every action - Click a shortcut, then press the new key combo to rebind it
- Duplicate-binding protection and one-click Reset to defaults
- Saved to
localStorageacross sessions
ποΈ Batch Export β All Tracks at Once
Export every track in a single click.
Features:
- New
All Tracks (.zip)entry in the Export menu - Bundles one
.vttper non-empty track into a single.zip - Built-in ZIP writer β no extra dependency, fully offline
π Ctrl + Scroll Zoom
Zoom the waveform naturally with Ctrl + mouse wheel β no more hunting for the zoom buttons.
βΈοΈ Auto-Pause on Edit
Playback pauses automatically when you start editing a cue, so the audio doesn't run away while you type. Toggle it from the top bar.
π Looking for older releases (v3.0, v2.2, v2.1)? See the full CHANGELOG.md.
π¦ Installation
Option 1: Direct Download (Recommended)
- Download
vtt-editor-pro-v3.1.html - Double-click to open in your browser
- Start editing!
Option 2: Use Online Version
Visit: https://rdtvlokip.github.io/vtt-editor-pro/vtt-editor-pro-v3.1.html
Option 3: Local Server
# Clone the repository
git clone https://github.com/RDTvlokip/vtt-editor-pro.git
cd vtt-editor-pro
# Open with a local server (optional)
python -m http.server 8000
# Navigate to http://localhost:8000/vtt-editor-pro-v3.1.html
π― Quick Start
- Import Audio: Click
π Import MP3to load your audio file - Add Regions: Click
β Add Regionor drag on the timeline - Enable Snap Grid (optional): Toggle
π§² Snap Gridand select interval - Edit Text: Type your subtitles in the text field
- Adjust Timing: Drag region edges or use Start/End fields
- Use Search: Find specific cues with the search box
- Check Stats: Click
π Statsto view validation - Choose Theme: Select your preferred color theme
- Export: Click
πΎ Exportand choose your format
β¨οΈ Keyboard Shortcuts
π‘ All shortcuts are customizable β open the
β¨οΈ Shortcutspanel to rebind any of them. Defaults below.
| Shortcut | Action |
|---|---|
Space |
Play/Pause audio |
β |
Jump back 1 second |
β |
Jump forward 1 second |
Ctrl+S |
Mark Start time |
Ctrl+B |
Mark End time |
Ctrl+C |
Copy selected cue |
Ctrl+V |
Paste cue at playhead |
Ctrl+Enter |
Add/Update Cue |
Ctrl+Z |
Undo (20-step history) |
Ctrl+Y |
Redo |
Ctrl+F |
Focus search box |
G |
Focus go-to-time |
M |
Add Marker |
Delete |
Delete selected region |
π±οΈ Tip: Hold
Ctrland scroll over the waveform to zoom in/out.
π¨ Usage Tips
Working with Multiple Tracks
- Create new track: Click
π¬ Tracks - Name your track (EN, FR, Music, etc)
- Edit independently
- Export all tracks at once with
πΎ Export β ποΈ All Tracks (.zip) - Merge tracks in final video editor
Using the Validation System
- Click
π Statsto open statistics panel - Review validation warnings and errors
- Click on any issue to jump to that cue
- Fix timing or text issues
- Re-check until all green
Efficient Editing Workflow
- Import audio and create rough cues
- Use Shift All Timings to sync with audio
- Use Split Cue for long segments
- Use Merge Cues for fragmented text
- Run validation check
- Export in desired format
Using Search Effectively
- Type in the search box to filter cues
- See highlighted matches
- Click cue to jump and edit
- Clear search to see all cues
π Advanced Features
Multi-Track Management
- Independent timelines per track
- Sync control to keep tracks aligned
- Track visibility toggle
- Export flexibility (individual or combined)
Marker System
- Visual bookmarks on waveform
- Custom labels for organization
- Color coding for different marker types
- Quick navigation between markers
- Performance optimized for 1000+ markers
Format Support
| Format | Import | Export | Notes |
|---|---|---|---|
| VTT | β | β | Full WebVTT with color metadata |
| SRT | β | β | SubRip with timing conversion |
| ASS | β | β | Styling stripped on import |
| SBV | β | β | YouTube format |
| DFXP | β | β | TTML/Netflix standard |
| JSON | β | β | Complete project backup |
Auto-save System
- Saves every 5 seconds to
localStorage - Restores on page reload with confirmation prompt
- Works offline β no cloud required
- Clear with browser cache if needed
Undo/Redo System
- 20-step history
- Works with all operations (add, edit, delete, batch, shift, split, merge)
- Keyboard shortcuts:
Ctrl+Z(undo),Ctrl+Y(redo) - Visual button feedback (disabled when at history limit)
πΊοΈ Roadmap
β v2.1 (Released)
- [x] Visual resize handles with tooltips
- [x] Snap-to-grid alignment
- [x] Batch text editing
β v2.2 (Released)
- [x] Multi-Track Subtitle Support
- [x] Waveform Markers/Bookmarks
- [x] SRT Export/Import
- [x] Current Time Update
- [x] VTT Import Validation
- [x] Keyboard Shortcut Conflict Resolution
- [x] Waveform Color Update
- [x] Color Persistence in VTT
β v3.0 (Released)
- [x] Export to ASS, SBV, DFXP, JSON formats
- [x] Import from ASS, SBV, DFXP, JSON formats
- [x] Theme system (5 themes)
- [x] Advanced editing (Split, Merge, Shift)
- [x] Real-time cue search
- [x] Statistics panel with validation
- [x] Editable markers with labels
- [x] Minimap timeline view
- [x] Enhanced dropdown UI
β v3.1 (Released)
- [x] Copy/Paste cues (Ctrl+C / Ctrl+V)
- [x] Go to time β Jump to precise timestamp
- [x] Customizable keyboard shortcuts UI
- [x] Batch export β all tracks at once (single
.zip) - [x] Ctrl+Scroll waveform zoom
- [x] Auto-pause on edit
v3.2 (Planned)
- [ ] Loop a region β repeat a segment on loop to nail the timing (highly requested)
- [ ] Insert-cue shortcut β add a cue at the current position without using the button
- [ ] Video preview β accept MP4 video alongside MP3, with subtitles overlaid on the video
Future Ideas (Under Consideration)
- [ ] Whisper API integration for auto-transcription
- [ ] Electron app with offline Whisper
- [ ] Local model support (tiny/base/small/medium)
- [ ] Native FFMPEG integration
- [ ] GPU acceleration for faster processing
π€ Contributing
Contributions are welcome! This project is actively maintained.
How to Contribute
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Development Guidelines
- Keep it vanilla JS (no frameworks)
- Maintain single-file architecture
- Write clear comments for complex logic
- Test in Chrome, Firefox, and Safari
- Follow existing code style
Reporting Issues
Found a bug or have a suggestion? Open an issue
Please include:
- Browser version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
π§ Technical Details
Architecture
- Single HTML file: All CSS, JS, and HTML in one file (7200+ lines)
- Vanilla JavaScript: No build tools, no frameworks
- WaveSurfer.js v7: Waveform visualization and audio playback
- localStorage: Client-side persistence
Performance
- Load time: <5ms (scripting only)
- Memory usage: ~200 MB (depends on audio file size)
- Max cues tested: 1000+ without performance issues
- Max markers tested: 1000+ without lag
- Audio formats: MP3, WAV, OGG, M4A, AAC
Browser Compatibility
| Browser | Version | Status |
|---|---|---|
| Chrome | 90+ | β Fully supported |
| Firefox | 88+ | β Fully supported |
| Safari | 14+ | β Fully supported |
| Edge | 90+ | β Fully supported |
π License
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0) - see the LICENSE.md file for details.
You are free to:
- β Share: Copy and redistribute in any medium or format
- β Adapt: Remix, transform, and build upon the material
Under these terms:
- π Attribution: Give appropriate credit to the original author
- π« NonCommercial: Not for commercial use without permission
Commercial use requires explicit permission. Contact me for licensing inquiries.
π Acknowledgments
- WaveSurfer.js - Audio waveform visualization library
- Inspired by Aegisub, but built for the modern web
- Community feedback from subtitle editors and content creators
π€ Author
RDTvlokip (ThΓ©o)
- 𧬠Creator of AG-BPE (Attention-Guided Byte Pair Encoding)
- π€ Developer of InfiniGPT model family
- π TSSR Student specializing in Network Administration
- π GitHub: @RDTvlokip
β Support
If VTT Editor Pro helps you, consider supporting the project:
Your support helps maintain and improve this tool!
π Stats
Built with β€οΈ using vanilla JavaScript
π Report Bug β’ β¨ Request Feature β’ π Documentation
π Star History
If you find this project useful, please consider giving it a β on GitHub!
Made with passion for subtitle editors worldwide π
No ads β’ No tracking β’ No subscriptions β’ Just pure functionality