You have a 300 MB screen recording. Discord wants it under 8 MB. Your email won't take more than 20. So you either google "compress video to 8mb" and land on an ad-riddled web converter that uploads your file to someone else's server and stamps a watermark on it — or you open HandBrake and start guessing at CRF values — or you hand-write an ffmpeg command, recompute the bitrate for the fifth time this month, and forget the audio track again.
None of those answer the actual question: "make this ≤ N MB, without me thinking about it."
That's the whole reason if you'd rather not use a package manager at all.
Using it
The headline command — fit a file under an absolute size:
deepshrink big.mp4 --target 8MB
deepshrink talk.wav --target 500KB
Don't want to memorize platform limits? Use a destination preset and DeepShrink applies the right cap:
deepshrink clip.mp4 --for discord # 8 MB
deepshrink clip.mp4 --for email # 20 MB
deepshrink clip.mp4 --for telegram # only recompresses for quality
Built-in presets today: discord, discord-nitro, email, telegram, whatsapp, and web.
Prefer a relative cut instead of a hard ceiling?
deepshrink video.mp4 --reduce 70% # 70% smaller than the source
Audio is a first-class citizen, not an afterthought — great for podcasts, voice memos, and lectures:
deepshrink lecture.wav --target 10MB
lecture.wav stereo 48kHz 58m02s 638.1 MB (PCM)
target 10 MB
plan Opus · ~22 kbps · mono (speech)
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%
✓ lecture.shrink.opus 9.4 MB (−98.5%)
Got a whole folder? Batch it — DeepShrink walks the directory, skips files that are already small or unsupported, and prints a summary instead of dying on the first hiccup:
deepshrink ./recordings --recursive
A few flags worth knowing:
--dry-run— show the plan (chosen bitrate, expected size) without encoding a thing.
--vmaf <n>— hold a quality floor; it won't compress below the VMAF score you ask for.
--codec h265— smaller files at the same quality, when you don't need maximum compatibility.
--json— machine-readable output, for scripts and CI.
--overwrite— replace the original in place (written atomically via a temp file, so an interrupted run won't corrupt your source).
Why bother, over a web converter?
Because DeepShrink is the intersection people actually want: the precision and privacy of native ffmpeg with the simplicity of a web converter — and none of the downsides of either. Your file stays on your disk. You get an exact size, not an approximation. There are no watermarks, no queues, and no "upload your file to continue." It's one static binary that works offline.
Get it
Homebrew:brew install deeplabua/tap/deepshrink
cargo:cargo install deepshrink
Source & releases: github.com/deeplabua/deepshrink
It's open source and free. If it saves you a trip to a sketchy converter even once, consider dropping a ⭐ on the repo — that's what keeps small tools like this alive.
Try it on that 300 MB file you've been avoiding. --target 8MB. Done.
SOCIAL SHARE CARD GENERATOR