A portable Electron app that compresses any video down to a target file size in MB — built primarily for sending clips in Discord, where the free tier caps uploads around 10-20 MB. You drop a video, tell it how big the result should be, and it figures out the bitrate needed to land there, then re-encodes with bundled FFmpeg.
- Compresses video to an exact target size, not just a quality level
- GPU encode via NVENC or CPU 2-pass encode, three codecs each
- Clips a segment with a timeline before compressing
- Picks audio tracks, removes or keeps original sound, exports audio-only
- Shows detailed logs and a final size report
Drop a video on the card or click to browse. You get one card with all the quick settings:
- Size — target output in megabytes.
- Resolution — output resolution,
Keep Originalkeeps source size. - FPS — output frame rate, or tick
Match Source FPSin Settings to pull it from the loaded file. - Audio —
Removestrips sound,Audio Onlyexports MP3, or pick a bitrate 96–320 kbps. - Compress — starts the job; shows progress and elapsed time while running.
- Save Location — where the result lands, plus
Show in folderafter finish.
Trim a segment before rendering. You can scrub the timeline, drag the range, and:
- Play / Pause and frame-step buttons under the player
- Zoom badge — current zoom level; scroll the mouse wheel over the timeline to zoom in/out
- Ctrl + scroll wheel — step frame-by-frame without moving the cursor
- Trim left / Trim right — snap the selection to the playhead
- Compress on the toolbar renders only the selected range
Fine-grained encoding options for the current run. These are applied to the next compression you start, not as app defaults:
- Encoding Device —
GPUuses your graphics card for speed,CPUis slower but works everywhere. CPU also hits the target size more precisely — its 2-pass encode analyses the video first, then encodes with a tighter bitrate budget than the single-pass GPU path. - Video Codec —
H.264for maximum compatibility,H.265saves more size,AV1gives the best quality per megabyte but encodes slower and needs a modern player (AV1 hardware encoding requires RTX 40-series+). - Quality Bias —
Smaller Size,BalancedorBetter Quality: how much to trade encode time vs picture quality at the same target size. - Audio Mode —
Compressre-encodes sound to your chosen bitrate,Keep Originalpasses it through untouched. - Match Source FPS — read FPS from the loaded video instead of typing it.
- Padding — pads the file with zero bytes to hit exactly the target size
- Size Tolerance MB — acceptable
-/+range around the target; leaveAnyto accept whatever the encoder produces.
Startup defaults for new files. Changes here are saved to compressor_settings.json and used the next time the app opens — while Settings applies only to the current run.
Pick which source audio tracks go into the output. Useful for files with multiple language or comment tracks — uncheck what you don't need.
Everything the encoder says: detected duration, bitrate, retries, final size and full FFmpeg output. Copy Logs copies it for bug reports.
Two ways to use it:
From source — needs Node.js:
setup.bat :: installs Node.js (if missing) and deps
run.bat :: visible console
run_hidden.vbs :: no console windowPortable build — already compiled VCompress.exe in VCompress-Portable, just drop a ffmpeg.exe next to it (or it ships one under resources/).
- Windows 10/11
- Node.js (setup.bat installs it via winget if missing)
- FFmpeg binary — put
ffmpeg.exeintoffmpeg/bin/for source, or intoresources/ffmpeg/for the portable build. Static Windows builds are available on gyan.dev or gpl/ffmpeg.org mirrors.
- For Discord's ~20 MB limit, pick
Size = 20andAudio = 96 kbps— the app handles the bitrate math and retries until it fits the size tolerance. - AV1 needs a recent GPU (or
libsvtav1on CPU) — H.265 is a safer pick if you're not sure. - Output never exceeds your target size: if the first encode lands over the limit, the app recalculates bitrate and re-encodes automatically.