Common video chores — cropping, trimming, joining, and compressing — in one window.
Croppy is a desktop app for everyday video chores — cropping, trimming, joining, and compressing — turning the ffmpeg flags nobody wants to type into a point-and-click window: draw on a frame, pick a quality, and click Add Job to Queue.
Tip
Full documentation: roald-arboel.com/croppy
Croppy is organised into a few tabs that share one Encoding panel design and one progress strip along the bottom you can watch and cancel from:
- 🎬 Clip — draw crop boxes and/or set time ranges (trims) on a video and get one file per combination.
- 🗜️ Compress — re-encode any number of videos smaller in one go.
- 🔗 Combine — join videos, in the order you choose, into one file.
▶️ Jobs — everything you've staged from any tab; start, cancel, and clear from here.- ⚙️ Settings — the default encoding every tab starts from.
- 📥 Stage, then run. Each tab's Add Job to Queue button stages work on the Jobs tab; you assemble a batch and fire it off when you're ready. A slim strip at the bottom always shows what's happening, from whichever tab you're on.
- 🎛️ Encoding is per item. The Settings tab holds the default; everything you queue carries its own copy, so you can queue the same video twice with small differences and compare. By default Croppy encodes on your graphics card when it can — which is much faster — and on the CPU otherwise.
- ✅ Apply only what you mean to. Every encoding setting can be applied or left to inherit from the source instead of being forced.
- 🏷️ You name the output. Every tab shows a sensible default name and lets you change it.
Croppy is on conda-forge, so install it as a global command-line app with Pixi in one line:
pixi global install croppyNote
Don't have Pixi? Install it first — it's a one-liner.
Once installed, launch Croppy from your Start menu / Applications folder / app menu, or run it from a terminal:
croppy # opens on the Clip tab — drop a video or click to browse
croppy path/to/clip.mp4 # opens straight into the Clip editor with that clipUpdate with pixi global update croppy, or remove it with pixi global uninstall croppy.
The codebase is small and meant to stay readable. Layout:
src/croppy/ffmpeg/ # subprocess wrappers around ffmpeg / ffprobe (no Qt here):
# encoder.py (GPU/CPU args), clip.py, compress.py, combine.py
src/croppy/gui/ # PySide6 widgets: one tab per operation + shared
# CompressionPanel, VideoList, OutputFolderPicker, StatusStrip
src/croppy/jobs/ # job queue + per-job QProcess worker; Job has clip/compress/combine variants
src/croppy/models.py # CropRegion, Trim, EncodeSettings — plain dataclasses
To set up a working copy — Pixi handles everything, including ffmpeg:
git clone https://github.com/roaldarbol/croppy
cd croppy
pixi run croppy # launch the app from source
pixi run -e dev install-hooks # one-time: wire lefthook pre-commit hooks
pixi run -e dev test
pixi run -e dev lint
pixi run -e dev formatPre-commit hooks (via lefthook) run ruff check --fix and ruff format on staged Python files automatically.
MIT — see LICENSE.


