SRT to 3D Subtitles
Convert standard .srt subtitles into .ass format, offset so they display correctly in 3D video playback.
The Problem
When watching 3D movies (Side-by-Side, Over-Under, Anaglyph), centered subtitles get split between the left and right eye views, making them disorienting to read. This tool converts standard .srt subtitles into a 3D-compatible .ass format that keeps each eye's subtitles in the correct position.
Features
- SBS (Side-by-Side) — subtitles split left/right for each eye
- OU (Over-Under) — subtitles split top/bottom for each eye
- Anaglyph (Red/Green) — subtitles offset with red/green color channels
- CLI — full command-line interface with configurable options
- GUI — lightweight Windows interface for easier mode selection
- Formatting support — converts HTML tags (
<b>,<i>,<u>,<font color>) to ASS format codes - Resolution scaling — adjusts subtitle positioning based on target resolution
Usage
The application runs in two modes — GUI (no arguments) and CLI (with arguments).
GUI
- Launch
ConvertSRTto3DASS.exe(or the Linux/macOS binary) - Select your
.srtinput file - Choose your 3D mode (SBS, OU, or Anaglyph)
- Adjust settings as needed
- Click Convert
Note: The GUI is experimental. Feedback and bug reports are welcome!
Command Line
The CLI runs on Windows, Linux, and macOS.
Drag and drop:
- Drag and drop an
.srtfile ontoConvertSRTto3DASS- Uses default settings (SBS mode, 1280x720)
- The resulting
.assfile will be saved in the same directory as the.srt
Command line:
ConvertSRTto3DASS.exe input.srt [options]
Available options:
--mode sbs|ou|rg 3D mode (default: sbs)
--resx <number> Output width
--resy <number> Output height
--baseresx <number> Scaling reference width (default: 1280)
--baseresy <number> Scaling reference height (default: 720)
--fontsize <number> Font size (default: 16)
--offsetx <number> RG eye separation
--bottomoffset <number> RG bottom offset
--sbssidemargin <number> SBS side margin
--outopmargin <number> OU top subtitle margin
--verticalmargin <number> General vertical margin
--output <path> Output file path
--help, -h, /? Show help
Examples:
ConvertSRTto3DASS.exe movie.srt --mode sbs
ConvertSRTto3DASS.exe movie.srt --mode ou --resx 1920 --resy 1080
ConvertSRTto3DASS.exe movie.srt --mode rg --offsetx 6 --bottomoffset 24
Known Issues
- Subtitle positional data from
.srtfiles is stripped during conversion.
Requirements
- .NET 8 SDK — required to build
- Windows — the GUI runs on Windows
- Linux/macOS — the CLI runs cross-platform
Building
# Build all projects
dotnet build
# Publish CLI (self-contained)
## Linux x64
dotnet publish ConvertSRTto3DASS.Cli -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
## OSX x64
dotnet publish ConvertSRTto3DASS.Cli -c Release -r osx-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
## OSX arm64
dotnet publish ConvertSRTto3DASS.Cli -c Release -r osx-arm64 --self-contained false -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
## Windows x64
dotnet publish ConvertSRTto3DASS.Cli -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
# Publish GUI (Windows x64 only, self-contained)
dotnet publish ConvertSRTto3DASS.Gui -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
Each publish produces a single .exe with no .dll sidecars.
License
MIT License — Copyright © imrayya 2021-2026
Contributing
Contributions are welcome. Please open an issue or submit a pull request.
Contributors
- imrayya — project owner
- jae0815
- fabio-noga
- kaiju466
Disclaimer
This is a personal hobby project. The codebase is functional but not production-grade — minimal comments, no tests, and some rough edges. Use at your own discretion.