BitShrinker is a desktop GUI app for compressing videos and images to a target file size. It is built with Rust + Iced and uses FFmpeg/FFprobe under the hood.
- Compress videos to a target size (in MB)
- Compress images to a target size (in MB)
- Video options:
- Target FPS
- Video dimensions (e.g.
1280x720) - Audio compression toggle
- Audio bitrate control (kbps)
- Preserve metadata toggle
- Fast mode toggle
- Image options:
- Dimension scaling
- Compression mode:
- Balanced (smaller output, may lose quality)
- Lossless (quality-preserving where supported)
- Automatic metadata prefill after selecting a video:
- FPS field
- Video dimensions field
- Audio bitrate field
mp4,mov,mkv,webm,avi,m4v
png,jpg,jpeg,webp,gif,bmp,tif,tiff
- Rust toolchain (recommended via rustup)
- FFmpeg in
PATH - FFprobe in
PATH
Check your installation:
ffmpeg -version
ffprobe -version
rustc --version
cargo --versioncargo buildFor a release build:
cargo build --releasecargo run- Select an input file (video or image).
- Choose an output path.
- Enter the target size in MB.
- Configure video/image options as needed.
- Start compression.
- FPS applies to video input only.
- Image and video options are shown depending on the selected input type.
- If FFmpeg/FFprobe is missing or returns an error, the app shows a status message in the UI.
src/
main.rs # App logic, UI, FFmpeg/FFprobe integration
application.rs # App state and window/settings defaults
fonts.rs # Font loading helpers
assets/
fonts/
image/
- Rust (Edition 2024)
- Iced (GUI)
- RFD (native file dialogs)
- FFmpeg/FFprobe (media processing)
Install FFmpeg and ensure both ffmpeg and ffprobe are available in your PATH.
Try a different output extension/container that matches your source or codec support in your local FFmpeg build.
BitShrinker aims for the requested size, but exact results can vary depending on media complexity and codec constraints.