Instagram Reels re-encode from a vertical 9:16 source. H.264 is the only codec Instagram accepts, CRF 25 because Instagram will re-encode anyway (no point over-optimizing), AAC/MP4 per Instagram upload requirements.
| Video Codec | H.264 |
| CRF | 25 |
| Resolution | 1080p |
| Audio | AAC |
| Container | MP4 |
ffmpeg -i input.mp4 -c:v libx264 -crf 25 -vf "scale=1920:1080,setsar=1" -c:a aac -b:a 128k -movflags +faststart output.mp4
Instagram re-encodes every uploaded video regardless of input quality. Uploading at CRF 18 vs CRF 25 produces identical results on the platform but wastes 3-5x the upload bandwidth. The sweet spot is "good enough" quality.
A new FFmpeg encoding puzzle every day. Six tries, in the browser or from your terminal.