Introduction • Features • Screenshots • Download • Support the Project • Development • Contributing • Credits • License
Matroska Batch Flow is a powerful tool for batch processing Matroska (.mkv) files, designed to help you efficiently manage and modify large collections. It features a modern graphical user interface built with WinUI 3 and Uno Platform, and integrates MediaInfo for extracting detailed file information, as well as MKVToolNix's mkvpropedit for fast, direct container property editing.
Whether you're an archivist, home theater enthusiast, or anyone who works with Matroska files, Matroska Batch Flow helps you save time and effort. Quickly perform tasks like fixing language tags, updating track names, or preparing files for media servers such as Jellyfin. The tool is suitable for both small batches and large collections, making repetitive editing tasks efficient and ensuring consistency throughout your library.
Warning
This project is currently under active development with no stable release yet. Expect bugs, incomplete features, and breaking changes with pre-release builds.
Note
Consider supporting the project to help with its continued development.
| Feature | Description |
|---|---|
| Batch Editing | Modify container properties (track names, languages, and more) for multiple files at once |
| Modern GUI | Intuitive interface built with WinUI 3 and Uno Platform |
| Drag-and-Drop | Add files or folders by dragging them into the application |
| Flexible Validation | Three configurable strictness levels for file validation (see Validation Modes) |
| Track Availability Indicators | Visual indicators showing track coverage across files in your batch |
| Themes | Choose between Light, Dark, or System theme |
- Strict Mode — Enforces consistent track counts and properties across all files (default)
- Lenient Mode — Allows files with different track counts, with non-blocking notifications
- Custom Mode — Configure validation severity per track type and property for maximum control
Note
Screenshots show the WinUI 3 (WinAppSDK) Windows build.
View Screenshots
Input Page - Add files for batch processing
Audio Configuration - Edit audio track properties
Matroska Batch Flow is free, open-source software built and maintained in my spare time. I built it to help me reduce the tedious task of spending hours manually fixing track properties across hundreds of files. If this tool has been helpful to you, consider supporting its continued development.
Donations can be made as a one-time donation or a recurring sponsorship. Your support helps cover development time and motivates continued development.
Pre-release builds are available on the Releases page. Currently, only Windows builds are available. Note that these are early builds and are expected to contain bugs or incomplete features.
Follow these instructions to set up the project locally for development and testing.
Warning
The cross-platform Skia target (net10.0-desktop) is currently experimental and unsupported. Expect bugs, missing features, and platform-specific issues.
These prerequisites are required to build the project:
| Requirement | Notes |
|---|---|
| Windows 11 | Required for WinAppSDK target |
| .NET 10 SDK | Required for building and running the application |
| mkvpropedit | Already included in WinAppSDK builds |
| Recommended | Notes |
|---|---|
| Visual Studio 2022 or later | Recommended IDE for development |
| Uno Platform Extension for Visual Studio | Helps with Uno Platform development |
-
Clone the repository:
git clone https://github.com/TimGels/Matroska-Batch-Flow.git cd Matroska-Batch-Flow -
Restore dependencies:
dotnet restore
-
Build and run (see Development for detailed instructions)
The project is organized as follows:
Matroska-Batch-Flow/
├── src/
│ ├── MatroskaBatchFlow.Core/ # Core business logic library
│ ├── MatroskaBatchFlow.Console/ # CLI utility (reserved for future use)
│ └── MatroskaBatchFlow.Uno/ # WinUI 3 / Skia GUI application
└── tests/
├── MatroskaBatchFlow.Core.UnitTests/ # Unit tests for core library
├── MatroskaBatchFlow.Uno.UnitTests/ # Unit tests for GUI application
└── MatroskaBatchFlow.Uno.IntegrationTests/ # Integration tests for GUI application| Project | Purpose |
|---|---|
| MatroskaBatchFlow.Core | Cross-platform core library containing the main business logic of the application |
| MatroskaBatchFlow.Console | Command-line interface (reserved for future use) |
| MatroskaBatchFlow.Uno | The GUI application powered by Uno Platform. Available targets: WinAppSDK (Windows), Skia Desktop (experimental cross-platform) |
To build the application, choose one of the following methods:
- Open
MatroskaBatchFlow.slnin Visual Studio - Set
MatroskaBatchFlow.Unoas the startup project - Select the
net10.0-windows10.0.19041target framework - Press F5 to build and run with debugging
# WinAppSDK (Recommended)
dotnet build src/MatroskaBatchFlow.Uno/MatroskaBatchFlow.Uno.csproj -f net10.0-windows10.0.19041
# Skia Desktop (Experimental)
dotnet build src/MatroskaBatchFlow.Uno/MatroskaBatchFlow.Uno.csproj -f net10.0-desktopdotnet run --project src/MatroskaBatchFlow.Uno/MatroskaBatchFlow.Uno.csproj -f net10.0-windows10.0.19041Tip
dotnet run automatically builds the project if needed.
Tests use Microsoft.Testing.Platform with the .NET 10 SDK, selected in global.json.
# Run all tests
dotnet test
# Run a specific test project. In this example, the core project unit tests.
dotnet test --project tests/MatroskaBatchFlow.Core.UnitTests
# Run a specific test class
dotnet test --filter-class "*BatchConfigurationTests"
# Generate TRX results and Cobertura coverage reports
dotnet test --report-xunit-trx --coverlet --coverlet-output-format coberturaThis is a personal project. While I'm open to contributions, whether one is accepted is up to me. I may decline a contribution even if there's nothing wrong with it, for example if it doesn't fit the project's direction, or for any other reason. When that happens, it isn't a judgment of your work.
I work on this project when I have time and motivation, and there may be periods of inactivity. Please be patient and understanding regarding response times and updates.
If you encounter a bug or have a feature suggestion, you're welcome to open an issue, but please ensure it's detailed and actionable. Low-effort submissions (low quality pull requests, vague reports, duplicate issues, feature requests without context) may be closed without action and without further notice.
Maintainer: I use AI coding assistants to support and speed up development, not to replace my own understanding or judgment. I make the final decisions about the project's direction, design, and what gets included.
Contributors: While you're welcome to use AI tools, I expect you to:
- Review and understand what you submit, including its context and implications, and be able to explain it.
- Check bug reports yourself before submitting them.
- Only submit content you have the right to contribute under the project's license.
Submissions that look like unreviewed AI output fall under the low-effort policy above and may be closed without action. Keep in mind that AI tools are meant to assist, not replace, human judgment and review. Always review and understand the output before submitting it.
The app: Matroska Batch Flow currently contains no AI features.
This section may change as tools and practices evolve.
This project relies on the following tools:
- MediaInfo — Media file analysis library
- MKVToolNix — Matroska tools including
mkvpropedit - Uno Platform — Open-source .NET platform for building cross-platform applications
- Windows App SDK — Modern Windows development platform
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.

