_____ __ _____ __ __ ______
/ ___/__ __/ /_ / ___/____________ __/ /_ / / / / _/
\__ \/ / / / __ \\__ \/ ___/ ___/ / / / __ \/ / / // /
___/ / /_/ / /_/ /__/ / /__/ / / /_/ / /_/ / /_/ // /
/____/\__,_/_.___/____/\___/_/ \__,_/_.___/\____/___/
A graphical subtitle management tool for your media library
SubScrubUI helps you organize subtitle files in your media library with an intuitive dark-themed GUI. Automatically archive non-preferred language subtitles while keeping your chosen language files in place.
Perfect for Plex, Jellyfin, Emby, or any media server!
💡 Looking for automation? Check out SubScrub - the command-line version perfect for scheduled tasks and batch processing.
Dark theme GUI with real-time progress tracking and visual controls
| Feature | SubScrubUI (This) | SubScrub (CLI) |
|---|---|---|
| Interface | ✅ Dark theme GUI | 📝 Interactive prompts |
| Visual Progress | ✅ Progress bar + real-time log | ✅ Console output |
| Pause/Resume | ✅ Full control during operation | ❌ Run to completion |
| CSV Reports | ✅ Detailed 7-column reports | ✅ Text-based logs |
| Automation | ❌ GUI requires interaction | ✅ Perfect for scheduled tasks |
| Best For | Visual users, one-time cleanups | Power users, automation |
TL;DR: Use SubScrubUI for a GUI experience, or SubScrub CLI for automation.
✅ Dark Theme GUI - Modern, easy-on-the-eyes interface with visual controls
✅ Multi-Language Support - Keep English, Spanish, French, German, and 20+ more languages
✅ Safe Archiving - Moves unwanted subs to timestamped backups (never deletes)
✅ Dry Run Mode - Preview changes before committing
✅ CSV Reports - Detailed 7-column logs of all operations
✅ Empty Folder Cleanup - Automatically remove empty directories
✅ Pause/Resume/Stop - Full control during operations
✅ Real-Time Progress - Live status updates and progress bar
✅ Network Path Support - Works with UNC paths (\\server\share)
✅ Depth Limiting - Control scan depth for large network shares
✅ Duplicate Detection - Finds and archives duplicate language files
✅ Flexible Language Codes - Supports 12+ built-in languages + custom codes
Supported Formats: .srt, .vtt, .ass, .sub, .ssa
- Download the latest release
- Extract the ZIP file
- Double-click
SubScrubUI.exe - Configure your preferences in the GUI
- Choose Dry Run for your first time
- Clone this repository
- Run
BUILD-UI.bat - Launch
SubScrubUI.exe
Beginner-Friendly (Recommended):
📦 Download SubScrubUI.exe from Releases
✅ No installation required - just run the .exe
Power Users:
📦 Clone the repository and build from source
- Windows 10/11
- PowerShell 5.1+ (included with Windows)
- Admin rights (for PS2EXE module during build only)
SubScrubUI includes built-in mappings for 12+ languages:
| Code | Language | Code | Language | Code | Language |
|---|---|---|---|---|---|
| eng | English | spa | Spanish | fre | French |
| ger | German | ita | Italian | por | Portuguese |
| jpn | Japanese | chi | Chinese | kor | Korean |
| rus | Russian | dut | Dutch | pol | Polish |
Don't see your language? No problem! Enter any language code in the "Additional Language Codes" field.
You have a library with Spanish content and want to keep Spanish subs:
GUI Steps:
- Source:
D:\Movies - Language:
Spanish - Check "Dry Run" for preview
- Click "Start"
Result: Shows what would be kept vs. archived
Keeps: spanish, spa, es, es-mx, es-es
Archives: All other languages
You want to keep BOTH English and Spanish:
GUI Steps:
- Source:
\\NAS\Media\TV Shows - Language:
English - Additional codes:
spa, spanish, es - Max depth:
10 levels - Check "Generate CSV report"
- Click "Start"
Result: Keeps English + Spanish, archives everything else
GUI Steps:
- Source:
D:\Anime - Language:
Japanese - Check "Clean up empty folders"
- Click "Start"
Keeps: japanese, jpn, ja, ja-jp
Archives: All other languages
- Scans your media directory for subtitle files
- Analyzes filenames for language codes
- Detects duplicate subtitles
- Keeps subtitles matching your language preference
- Archives all other subtitles to a backup folder (structure preserved)
- Cleans empty folders (optional)
- Logs everything in detailed CSV reports
KEPT:
movie.eng.srt ✅ (English selected)
movie.en.srt ✅ (Matches eng)
movie.english.srt ✅ (Matches eng)
show.s01e01.en-US.srt ✅ (Matches eng)
ARCHIVED:
movie.spa.srt 📦 (Spanish - not selected)
movie.fre.srt 📦 (French - not selected)
movie.ger.srt 📦 (German - not selected)
show.s01e01.es-MX.srt 📦 (Spanish - not selected)
After running SubScrubUI, you'll find:
In Source Directory:
SubScrub_Report_YYYYMMDD_HHMMSS.csv- Detailed operation log- Only your preferred language subtitle files remain
In Backup Location:
Backup_YYYYMMDD_HHMMSS/- Timestamped folder with archived files- Original folder structure preserved
- Easy to restore if needed
SubScrubUI generates detailed CSV reports for audit trails:
Location: [Source]\SubScrub_Report_YYYYMMDD_HHMMSS.csv
Columns:
- FileName
- FilePath
- SizeKB
- DetectedLanguage
- Action (Kept / Archived / Would Archive)
- Extension
- LastModified
Example:
FileName,FilePath,SizeKB,DetectedLanguage,Action
Movie.eng.srt,D:\Movies,25.3,eng,Kept
Movie.spa.srt,D:\Movies,23.1,spa,Archived
Movie.fre.srt,D:\Movies,24.8,fre,Archived✅ Never Deletes - Files are moved to timestamped backup folders
✅ Dry Run Mode - Preview before committing any changes
✅ Original Structure - Folder hierarchy preserved in backups
✅ Detailed Logs - CSV reports track every operation
✅ Excluded Folders - Skips system folders ($RECYCLE.BIN, @eaDir, etc.)
✅ Pause/Resume - Full control during processing
✅ Minimum File Size - Ignores tiny files (prevents false positives)
Source Directory:
- Browse button or type path directly
- Supports UNC paths:
\\server\share
Language Selection:
- Dropdown: 12 built-in languages
- Additional codes: Comma-separated custom codes
Max Folder Depth:
- Unlimited (default)
- 3 / 5 / 10 levels
- Helps with large network shares
Options:
- ☑️ Dry Run (preview only)
- ☑️ Clean up empty folders
- ☑️ Generate CSV report
During Operation:
- Pause - Temporarily halt processing
- Resume - Continue from paused position
- Stop - Abort operation (changes made remain)
Visual Feedback:
- Real-time progress bar
- Live status updates
- Scrolling log output
- Color-coded buttons
Cause: PowerShell-compiled .exe files sometimes trigger false positives
Solution: Add exception to antivirus, or run the .ps1 script directly
Check: Filename must contain language code (e.g., movie.eng.srt)
Solution: Add alternative codes in "Additional Language Codes" field
Note: Normal on network drives - Windows holds file handles briefly
Solution: Script includes multiple cleanup passes. Delete manually if needed.
- Navigate to backup folder
- Find timestamped backup (e.g.,
Backup_20241215_153217) - Copy files back to original locations (check CSV report for paths)
Create the .exe:
BUILD-UI.batThis will:
- Install PS2EXE module (if needed)
- Compile
SubScrubUI-v1.1.ps1→SubScrubUI.exe - Embed icon (if
SubScrub.icopresent) - Verify compilation
Requirements:
- PowerShell 5.1+
- PS2EXE module (auto-installed by build script)
Manual Compilation:
Install-Module ps2exe -Scope CurrentUser -Force
Invoke-ps2exe -InputFile "SubScrubUI-v1.1.ps1" `
-OutputFile "SubScrubUI.exe" `
-noConsole `
-iconFile "SubScrub.ico" `
-title "SubScrubUI v1.1"✨ NEW: CSV report generation
✨ NEW: Empty folder cleanup
✅ Dark theme GUI
✅ Pause/Resume/Stop controls
✅ Real-time progress updates
✅ Depth limiting
✅ Network path support
✅ Initial GUI release
✅ Multi-language filtering
✅ Safe backup system
✅ Dry run mode
Contributions are welcome! Please feel free to submit a Pull Request.
- Additional language mappings
- UI/UX improvements
- Performance optimizations
- Bug fixes
- Documentation improvements
- 🐛 Issues: GitHub Issues
- 💡 Feature Requests: GitHub Discussions
- 📖 Documentation: See
QUICK-START.mdand other docs in repo
If SubScrubUI helped organize your media library, please consider:
- ⭐ Starring this repository
- 🍴 Forking and contributing
- 📢 Sharing with others
- 🐛 Reporting bugs or suggesting features
SubScrub - Command-line version
Perfect for automation, scheduled tasks, and server environments.
Same core logic, different interface.
Made with ❤️ for media enthusiasts everywhere
Dark theme GUI with real-time progress tracking and visual controls
