Fast, tiny, fully native media conversion for Windows 11. ⚡
TransCoda converts video and audio files with FFmpeg behind a clean, native WinUI 3 interface. No Electron, no web runtime, no bundled browser — it looks, feels, and performs like it belongs on your PC: Mica backdrop, Fluent controls, dark/light theme awareness, drag & drop straight from File Explorer. 🪟✨
🔍 Looking for the macOS app? See TransCoda4Mac — an independent repository with the same architecture built natively on SwiftUI.
A media converter spends its resources on one thing: encoding. The UI should cost almost nothing. Design goals, in order:
- 📦 Minimal footprint. Idle RAM in the tens of megabytes, near-zero idle CPU, small binary. Every resource the app doesn't use is a resource FFmpeg can.
- 🎨 Platform integration. Follows the Windows 11 design language (Fluent, Mica) instead of shipping a lowest-common-denominator UI.
- 🔧 Simple, honest engine. The app is a thin native shell around FFmpeg. You can read the exact command each conversion runs.
- 📋 Batch conversion queue with per-file progress, cancel, and reveal in File Explorer.
- 🎞️ Video containers: MP4, MKV, MOV, WebM.
- 🎥 Video codecs: H.264/AVC, H.265/HEVC, AV1, VP9.
- 🎵 Audio-only output: M4A (AAC), MP3, FLAC, Opus, WAV.
- 🎚️ Quality control with a CRF-style slider, resolution limiting, audio bitrate selection.
- 🚀 Hardware-accelerated encoding, auto-detected from the local FFmpeg build: NVIDIA NVENC, Intel Quick Sync, AMD AMF — picked in that order per codec.
- 📊 Accurate progress from FFmpeg's machine-readable
-progressstream. - 📁 Output next to the source file or to a folder you choose; never overwrites existing files.
┌─────────────────────────────┐
│ WinUI 3 (Mica, Fluent) │ queue list, drag & drop, settings pane
├─────────────────────────────┤
│ JobQueue │ ordered processing, one encode at a time
│ FfmpegCommandBuilder │ settings → argument list (no shell involved)
│ TranscodeEngine │ spawns ffmpeg, parses -progress, cancellation
│ HardwareCapabilities │ parses `ffmpeg -encoders` once at startup
│ Ffprobe │ duration probe for progress percentage
│ FfmpegLocator │ app folder → known paths → PATH
└─────────────────────────────┘
│
▼
ffmpeg.exe / ffprobe.exe (external processes)
FFmpeg binaries are not committed to this repository. The app looks for
them in this order: next to TransCoda.exe (or in an ffmpeg\ subfolder),
C:\ffmpeg\bin, then PATH.
winget install Gyan.FFmpegor download a build from gyan.dev and
drop ffmpeg.exe and ffprobe.exe next to TransCoda.exe. AV1 software
encoding uses libsvtav1, included in the standard Gyan.dev build.
Requirements: Windows 11 (or Windows 10 19041+), Visual Studio 2022 with the .NET desktop development and Windows App SDK workloads — or just the .NET 8 SDK on the command line.
dotnet build TransCoda.slnOr open TransCoda.sln in Visual Studio and press F5. The app runs unpackaged
(WindowsPackageType=None) with the Windows App SDK self-contained, so no
MSIX deployment step is needed during development.
TransCoda.sln
TransCoda/
App.xaml(.cs) app entry point
MainWindow.xaml(.cs) queue window, settings pane, drag & drop
Models/ formats, codecs, settings, job model
Core/ locator, prober, command builder, engine, queue
- 💾 Presets (save/load named conversion profiles)
- 📝 Subtitle pass-through and burn-in
- 🌈 HDR metadata pass-through
- ✂️ Trim / clip range selection
- 📦 Signed MSIX releases
See CONTRIBUTING.md. This project follows the Contributor Covenant code of conduct and uses Conventional Commits.