How to compress a video to instagram feed size limits
- Step 1Drop your oversized clip — Open instagram-feed-formatter and drop the file. FFmpeg.wasm reads it locally — nothing uploads. Free tier accepts a single file up to 1 GB; a heavy 4K export can approach that, so trim or transcode first if it's over.
- Step 2Pick the feed ratio — Set Ratio to
1:1or4:5. Choosing a feed ratio downscales an oversized source to 1350×1350 or 1080×1350 — the resolution cap that drives most of the size reduction. - Step 3Run the re-encode — The CRF 20 pass re-encodes to lean H.264. There is no size field — quality is fixed and the file lands wherever CRF 20 puts it (usually a few MB for a short clip). The size readout shows input → output bytes.
- Step 4Check the output size — Read the before/after byte count in the result. For the Instagram feed this is almost always small enough. If you specifically need a number under, say, 25 MB for another platform, see the next step.
- Step 5For a hard size target, use a size-aware tool — This tool can't target an exact size. To force a clip under a fixed ceiling, run it through discord-compressor (25 MB), whatsapp-compressor (16 MB), or set an explicit bitrate with video-bitrate-set.
- Step 6Download and upload to the feed — The lean MP4 is ready for Instagram. Because it already matches feed spec at CRF 20, Instagram's own re-encode has little work to do and the visible quality holds up.
Where the size reduction comes from
The three levers the IG formatter pulls that shrink a file — none of them is a size target.
| Lever | Effect on size | Set by |
|---|---|---|
| Resolution cap | Biggest win — 4K/1440p source downscaled to 1350×1350 or 1080×1350 | Ratio choice (fixed output height 1350) |
| CRF 20 re-encode | Strips excess bitrate from over-encoded sources to constant quality | Fixed — no slider |
| yuv420p 8-bit | 10-bit → 8-bit reduces chroma data | Fixed |
| AAC 128k audio | Caps audio bitrate | Fixed |
| 60-second trim | Removes length-driven bloat from over-long clips | Fixed (-t 60) |
This tool vs a size-target compressor
When CRF 20 re-encoding is enough vs when you need an exact byte budget.
| Need | Use this tool? | Better tool |
|---|---|---|
| Feed-ready, just not bloated | Yes — CRF 20 + resolution cap | — |
| Under a strict 25 MB (Discord) | No — no size target | discord-compressor |
| Under 16 MB (WhatsApp status) | No | whatsapp-compressor |
| Under an email attachment limit | No | email-compressor |
| Exact bitrate / two-pass control | No | video-bitrate-set |
| Web/streaming faststart optimisation only | Partly (adds faststart) | web-optimizer |
Cookbook
Real size outcomes. CRF 20 is constant-quality, so output bytes vary with motion and detail — these are typical ranges, not guarantees.
Bloated 4K export → lean feed MP4
A 30-second 4K (3840×2160) clip exported at a high bitrate weighs in around 300 MB. The 1:1 pass downscales to 1350×1350 and re-encodes at CRF 20 — the resolution cap alone collapses the size dramatically.
Input: 3840x2160, 30s, ~300 MB (over-encoded) Ratio: 1:1 Downscale to 1350x1350 + CRF 20 re-encode Typical output: a few MB (often 3–8 MB for 30s) No size field was set — CRF 20 + resolution cap did the work.
High-motion clip stays larger (CRF is quality, not size)
A 60-second clip full of motion and fine detail (confetti, foliage) at CRF 20 produces more bits than a static talking-head — because CRF holds quality constant. It's still feed-fine, just not as tiny.
Input: 1080x1080, 60s, high motion Ratio: 1:1, CRF 20 Output larger than a static clip of the same length — CRF spends bits to keep motion clean. Need it under a hard ceiling anyway? → whatsapp-compressor / discord-compressor (size-targeted)
Already-feed-sized clip you want smaller — wrong tool
A clip already at 1080×1350 H.264. Re-running the formatter re-encodes at CRF 20 but won't necessarily shrink it much (it's already lean) and adds a compression generation. For a smaller file, target a size directly.
Input: 1080x1350 H.264, already feed-spec, 12 MB Ratio: 4:5 (re-encode only, no downscale) Result: ~similar size + one extra compression generation. To actually shrink it: video-bitrate-set → pick a lower bitrate, OR discord-compressor → target a size.
Long source: trim then re-encode for the smallest feed clip
A 5-minute source. The formatter trims to 60s, but trimming first to the exact highlight avoids carrying the whole file through decode and gives a smaller, sharper result.
Input: 300s, 1920x1080, 400 MB Goal: small 1:1 feed clip of the 2:00–3:00 minute 1. lossless-trimmer → cut 120–180s (stream-copy, instant) 2. instagram-feed-formatter → Ratio 1:1, CRF 20 → 1350x1350, a few MB
Need an exact size for a cross-post — chain a compressor
You want the same clip on the feed AND under Discord's 25 MB. Format for the feed first (ratio + CRF 20), then push the feed MP4 through a size-target compressor for the 25 MB version.
Goal: feed post + a <25 MB copy for Discord 1. instagram-feed-formatter → Ratio 1:1 → feed MP4 (CRF 20) 2. discord-compressor → target 25 MB on that MP4 Feed gets the clean CRF 20 version; Discord gets the size-targeted copy.
Edge cases and what actually happens
No size target available
By designThis tool has no "compress to N MB" field and no bitrate slider — the only control is Ratio, and quality is locked to CRF 20. Output size is whatever CRF 20 produces. For a hard ceiling, use discord-compressor, whatsapp-compressor, or video-bitrate-set.
High-motion clip doesn't shrink much
ExpectedCRF 20 is constant-quality: a busy, high-detail clip needs more bits than a static one, so it stays larger. That's correct behaviour (quality is held, not size). If the result is too big for your need, switch to a size-targeted compressor rather than expecting CRF to cap it.
Already-small source comes out larger
ExpectedRe-encoding a heavily-compressed source at CRF 20 can produce a slightly larger file, because CRF 20 may be higher quality than the source's existing bitrate. The formatter optimises for quality, not minimum size. Don't re-format an already-lean clip just to shrink it.
Source exceeds the free-tier 1 GB limit
Tier limitA long 4K export can exceed 1 GB, the free-tier per-file cap. The tool prompts to upgrade rather than processing. Trim the clip with lossless-trimmer first, transcode it down with video-transcoder, or upgrade (Pro 10 GB, Pro + Media 100 GB).
Resolution already at or below feed spec
ExpectedIf the source is already 1080-something, the formatter may upscale to 1350 (for 1:1) — which can increase size, not reduce it. The resolution-cap size win only applies to oversized (1440p/4K) sources. For sub-spec sources wanting a smaller file, target a bitrate instead.
Could not determine video dimensions
ErrorIf FFmpeg.wasm can't probe the file's dimensions, the pass throws before encoding — so no size reduction happens. Re-mux with web-optimizer or transcode with video-transcoder, then retry.
10-bit HDR source shrinks but shifts colour
ExpectedConverting 10-bit to yuv420p 8-bit reduces data (helping size) but drops HDR tone mapping, so colour can shift. That's a quality trade for size and compatibility; grade to SDR first if the look matters.
Audio dominates a short silent-video file
ExpectedOn a very short clip, the AAC 128k audio track can be a meaningful share of the output. The formatter always encodes audio at 128k (no audio-bitrate control). If audio size matters, strip or reduce it with audio-track-extractor first, or compress with a size-target tool.
Expecting compression to also crop for free
SupportedThe pass crops to feed ratio as part of the same encode, so you get cropping and size reduction together — but the crop is centred and fixed. If the size reduction is the only thing you want and you need to keep the original aspect, this tool will still crop; use video-resizer or video-bitrate-set to shrink without forcing a feed ratio.
Clip over 60 seconds is trimmed before encoding
By designThe -t 60 trim runs as part of the pass, so an over-length clip is both shortened and re-encoded — which reduces size further. If you need the full length, this isn't the tool; use a size-target compressor that doesn't enforce the feed length cap.
Frequently asked questions
Can I compress a video to a specific size for Instagram with this tool?
Not to an exact number — this is a constant-quality re-encoder (CRF 20), not a size-target compressor. There's no "compress to N MB" field. It does shrink most bloated files to a few MB via resolution capping and CRF 20, which is plenty for the feed. For a strict ceiling, use discord-compressor, whatsapp-compressor, or video-bitrate-set.
What's Instagram's feed video size limit?
The feed's practical limits are generous and the bigger real concern is double-compression, not hitting a wall. The point of pre-encoding isn't to squeak under a number — it's to avoid uploading a bloated file that Instagram then recompresses heavily. A CRF 20 feed-spec MP4 gives Instagram clean source and survives its re-encode better than a giant export.
Why does pre-compressing improve quality on Instagram?
Instagram re-encodes every upload. If you upload a huge, over-bitrate file, its encoder recompresses already-heavy footage — two lossy passes stacked. A lean CRF 20 file at feed resolution is close to what Instagram targets anyway, so its re-encode changes far less and the visible result is cleaner.
How small will my file get?
It depends on the source and content. The biggest win is the resolution cap (4K/1440p → 1350×1350 or 1080×1350). A 30-second clip commonly lands in the low single-digit MB. High-motion footage stays larger because CRF holds quality. There's no size guarantee — CRF 20 produces whatever quality 20 requires.
Is there a bitrate or quality slider?
No. The only control is Ratio (1:1 or 4:5); quality is fixed at CRF 20. For explicit bitrate or two-pass size control, use video-bitrate-set or a size-targeted compressor instead.
My clip got bigger after running it — why?
Two common causes: the source was already small/heavily compressed (so CRF 20 is higher quality than its existing bitrate), or the source was below feed resolution and got upscaled to 1350. This tool optimises for quality, not minimum size — don't re-run an already-lean clip expecting it to shrink.
Does it upload my file to compress it?
No. The entire re-encode runs in your browser through FFmpeg.wasm. The file never leaves the tab. Signed-in users have only a single processed counter recorded server-side, with no content.
Can I keep the original aspect ratio and just shrink it?
Not with this tool — it always crops to a feed ratio (1:1 or 4:5) as part of the encode. To reduce size while keeping the original aspect, use video-resizer (scale down) or video-bitrate-set (lower bitrate), neither of which forces a feed crop.
Does it trim my clip while compressing?
Yes — clips over 60 seconds are trimmed to the first minute (-t 60) as part of the pass, which also reduces size. If you need the full length, use a size-target compressor that doesn't enforce the feed cap, or trim the exact window first with lossless-trimmer.
What if my source is over the 1 GB free-tier limit?
The tool prompts to upgrade rather than truncating. Trim the clip first with lossless-trimmer, transcode it down with video-transcoder, or upgrade (Pro 10 GB / 5 files; Pro + Media 100 GB / 50 files; Developer 100 GB / unlimited).
Can I compress for the feed AND a strict cross-post limit?
Chain two passes: format for the feed here (Ratio + CRF 20), then run the resulting MP4 through discord-compressor (25 MB) or whatsapp-compressor (16 MB) for the size-capped copy. The feed gets the clean version; the other platform gets the targeted one.
Is there a watermark or sign-in requirement?
No watermark, and free tier works without an account. Signing in only raises size/batch limits and enables dashboard stats.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.