A keyboard-friendly, frame-accurate lossless video cutter for Windows, Linux and macOS. Trim segments out of long recordings without re-encoding — cuts are lossless (stream copy via ffmpeg) so a 5-second clip of a 4K HDR file finishes in seconds and the output is bit-identical to the source.
Built on Avalonia 12 / .NET 10 with libmpv embedded directly for smooth, frame-accurate scrubbing.
- Frame-accurate scrubbing — drag the timeline, jump 1 frame at a time with
,/. - Multi-segment cuts — mark several in/out points; queue runs them as separate output files (or merged into one)
- Custom timeline with thumbnail strip, hover preview, zoom + pan, audio waveform overlay, and per-segment color bands
- Queue with persistence — cuts survive app restarts; failed jobs keep their error reason
- Open from folder — bulk-load a directory of videos as a playlist with size / sort filters
- Plugin system — extend output-path routing, settings, status badges and file-picker filtering without touching core. See Plugins/README.md.
- Configurable — auto-mute, auto-delete source after cut, low-priority cutting (so it doesn't fight foreground apps), shutdown PC when queue is done
Download the matching archive for your OS from the latest release:
| OS | File |
|---|---|
| Windows x64 | Yalc-win-x64.zip |
| Linux x64 | Yalc-linux-x64.tar.gz |
| Linux arm64 | Yalc-linux-arm64.tar.gz |
| macOS Intel | Yalc-osx-x64.tar.gz |
| macOS Apple Silicon | Yalc-osx-arm64.tar.gz |
Releases are self-contained — no .NET runtime required.
- Unzip
Yalc-win-x64.zipanywhere - Double-click
Yalc.exe - On first run Yalc detects that
libmpv-2.dlland the FFmpeg shared libraries are missing and offers to download them (~80 MB, one-time). They're placed next toYalc.exe— your system PATH isn't touched. Yalc restarts itself once the download is done.
If you'd rather install manually, drop libmpv-2.dll (from the
shinchiro mpv-dev archive)
and the FFmpeg shared DLLs (from BtbN)
next to Yalc.exe and skip the first-run prompt.
- Extract:
tar xzf Yalc-linux-x64.tar.gz - Install runtime dependencies via your package manager:
- Debian / Ubuntu:
sudo apt install libmpv2 ffmpeg - Fedora:
sudo dnf install mpv-libs ffmpeg - Arch:
sudo pacman -S mpv ffmpeg
- Debian / Ubuntu:
- Run:
./Yalc
Optional desktop integration: copy yalc.desktop to ~/.local/share/applications/ and
the bundled icon to ~/.local/share/icons/.
Status: macOS bundles are experimental. Video playback uses libmpv's render API path; please file an issue if you hit problems on your hardware.
-
Install Homebrew if you don't have it:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Then follow the post-install hint to add
brewto your shellPATH. -
Install dependencies:
brew install mpv ffmpeg -
Extract the bundle:
tar xzf Yalc-osx-arm64.tar.gz(use thex64variant on Intel Macs). -
Bypass Gatekeeper. Yalc is ad-hoc signed (no paid Apple Developer ID), so macOS blocks first launch with "Apple could not verify that 'Yalc' is free of malware". Pick one of the following:
- Strip the quarantine attribute, then open normally:
xattr -dr com.apple.quarantine /path/to/Yalc.app open /path/to/Yalc.app
- Manual override: double-click the bundle, dismiss the warning, then go to System Settings → Privacy & Security, scroll to the bottom, and click "Open Anyway" next to the Yalc entry. This whitelists the specific bundle on the specific machine.
- Strip the quarantine attribute, then open normally:
| Key | Action |
|---|---|
| Space | Play / pause |
| ← / → | Seek 1 second |
, / . |
Step one frame back / forward |
S / E |
Set in / out point on most-recent segment |
A |
Add a 5-second segment at the playhead |
Ctrl + scroll |
Zoom timeline (cursor pivots) |
Shift + scroll |
Pan timeline |
| Middle-drag | Pan timeline |
| Scroll | Seek (60s by default) |
| Drag-and-drop files | Load as playlist |
Prerequisites: .NET 10 SDK.
git clone https://github.com/<you>/Yet-Another-Lossless-Cutter.git
cd Yet-Another-Lossless-Cutter
dotnet build Yalc.slnFor development you'll also need libmpv and ffmpeg locally — see Yalc/native/ for placement (the csproj copies them into the build output if present).
YALC ships with no opinion about output-path routing or workflow-specific filters —
those live in plugins under Plugins/. Drop a sibling .csproj and it gets
auto-included via a glob in the main project. Compile-time linked, NativeAOT-clean —
see Plugins/README.md for the contract and a minimal example.
GPL-3.0. Yalc dynamically links to libmpv and FFmpeg at runtime
(via the first-run auto-download). The pre-built libmpv binaries from
shinchiro and the FFmpeg
gpl-shared builds from BtbN include
GPL-licensed components, so the combined work is GPL.
If you need to embed Yalc in a non-GPL pipeline, you'd need to fork it, swap
the downloader to LGPL builds (BtbN ships lgpl-shared variants; an LGPL
libmpv would have to be self-built), and re-license your fork accordingly.