_____ __ _____ __ __ ______
/ ___/__ __/ /_ / ___/____________ __/ /_ / / / / _/
\__ \/ / / / __ \\__ \/ ___/ ___/ / / / __ \/ / / // /
___/ / /_/ / /_/ /__/ / /__/ / / /_/ / /_/ / /_/ // /
/____/\__,_/_.___/____/\___/_/ \__,_/_.___/\____/___/
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
