

Master Instagram video specs for Reels, Stories, Feed, and IGTV. Learn optimal resolution, format, aspect ratio, and file size limits to maximize quality.
How to Convert Videos for Instagram: Complete Guide
Instagram has specific video requirements that can make or break your content quality. Upload the wrong format, and your video gets compressed into a blurry mess. This guide shows you exactly how to format videos for every Instagram feature in 2025.
Quick Reference: Instagram Video Specs (2025)
| Feature | Resolution | Aspect Ratio | Max Length | Max Size | Format |
|---|---|---|---|---|---|
| Reels | 1080×1920 | 9:16 (vertical) | 90 sec | 4 GB | MP4/MOV |
| Stories | 1080×1920 | 9:16 (vertical) | 60 sec | 4 GB | MP4/MOV |
| Feed (Portrait) | 1080×1350 | 4:5 | 60 sec | 4 GB | MP4/MOV |
| Feed (Square) | 1080×1080 | 1:1 | 60 sec | 4 GB | MP4/MOV |
| Feed (Landscape) | 1080×608 | 16:9 | 60 sec | 4 GB | MP4/MOV |
| IGTV | 1080×1920 | 9:16 or 16:9 | 60 min | 5.4 GB | MP4/MOV |
Instagram Reels: Optimal Settings
Reels are Instagram's priority format in 2025. Here's how to maximize quality:
Recommended Specifications
Resolution: 1080×1920 (Full HD vertical)
Aspect Ratio: 9:16
Frame Rate: 30 fps (or 24 fps for cinematic)
Codec: H.264
Audio: AAC, 128 kbps, 48 kHz
Bitrate: 8-12 Mbps
File Size: < 200 MB (for fast upload)
Duration: 15-90 seconds
Why These Settings?
- 1080×1920: Native Instagram display resolution
- 30 fps: Smooth motion without large file size
- H.264: Universal compatibility, fast Instagram processing
- 8-12 Mbps: Sweet spot for quality vs file size
FFmpeg Command for Reels
# Perfect Reels conversion
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1" \
-c:v libx264 \
-preset slow \
-crf 23 \
-maxrate 12M \
-bufsize 18M \
-pix_fmt yuv420p \
-r 30 \
-c:a aac \
-b:a 128k \
-ar 48000 \
-movflags +faststart \
instagram_reel.mp4
What this does:
- Scales to 1080×1920, adding black bars if needed
- Limits bitrate to 12 Mbps
- 30 fps for smooth playback
- AAC audio at 128 kbps
- Fast start for streaming
Aspect Ratio Conversion
Horizontal to Vertical (16:9 → 9:16):
# Option 1: Crop to vertical
ffmpeg -i input.mp4 \
-vf "crop=ih*9/16:ih" \
-c:v libx264 -crf 23 \
output_vertical.mp4
# Option 2: Add blur background
ffmpeg -i input.mp4 \
-filter_complex "[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,boxblur=20:5[bg]; \
[0:v]scale=1080:-1[fg]; \
[bg][fg]overlay=(W-w)/2:(H-h)/2" \
-c:v libx264 -crf 23 \
output_blurred_bg.mp4
# Option 3: Add black bars (pillarbox)
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black" \
-c:v libx264 -crf 23 \
output_pillarbox.mp4
Which to choose?
- Crop: Best for close-up content, action shots
- Blur background: Popular for landscape footage, maintains context
- Black bars: Simple, but less engaging
Instagram Stories: Optimal Settings
Stories are temporary but crucial for engagement.
Recommended Specifications
Resolution: 1080×1920
Aspect Ratio: 9:16
Frame Rate: 30 fps
Codec: H.264
Audio: AAC, 128 kbps
Bitrate: 5-8 Mbps (lower than Reels for faster upload)
Duration: 15 sec per story (60 sec max)
File Size: < 100 MB
Stories Optimization Tips
Lower bitrate than Reels
- Stories are temporary, viewers are less critical
- Faster upload = better UX
- 5-8 Mbps is plenty
Keep file size small
- Target 50-100 MB for 60-second story
- Mobile uploads appreciate smaller files
Optimize for quick consumption
- First 3 seconds are critical
- Front-load important content
- Keep text large and readable
FFmpeg Command for Stories
# Optimized for Stories (smaller file size)
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-preset fast \
-crf 26 \
-maxrate 8M \
-bufsize 12M \
-pix_fmt yuv420p \
-r 30 \
-c:a aac \
-b:a 96k \
-movflags +faststart \
instagram_story.mp4
Differences from Reels:
- CRF 26 instead of 23 (more compression)
- Audio 96 kbps instead of 128 kbps
- Faster preset for quicker encoding
Instagram Feed: Optimal Settings
Feed posts support multiple aspect ratios. Here's the breakdown:
Portrait (4:5) - Most Popular
Best for vertical content that's not full-screen.
Resolution: 1080×1350
Aspect Ratio: 4:5
Frame Rate: 30 fps
Codec: H.264
Bitrate: 8-10 Mbps
Duration: 3-60 seconds
FFmpeg command:
ffmpeg -i input.mp4 \
-vf "scale=1080:1350:force_original_aspect_ratio=decrease,pad=1080:1350:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 23 -maxrate 10M -bufsize 15M \
-c:a aac -b:a 128k \
-movflags +faststart \
feed_portrait.mp4
Square (1:1) - Universal
Works well for all content types, especially product demos.
Resolution: 1080×1080
Aspect Ratio: 1:1
Frame Rate: 30 fps
FFmpeg command:
ffmpeg -i input.mp4 \
-vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 23 -maxrate 10M \
-c:a aac -b:a 128k \
-movflags +faststart \
feed_square.mp4
Landscape (16:9) - Least Common
Only use for content that must be horizontal.
Resolution: 1080×608
Aspect Ratio: 16:9 (actually 1.91:1 for Instagram)
FFmpeg command:
ffmpeg -i input.mp4 \
-vf "scale=1080:608:force_original_aspect_ratio=decrease,pad=1080:608:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 23 -maxrate 10M \
-c:a aac -b:a 128k \
-movflags +faststart \
feed_landscape.mp4
IGTV / Long-Form Video
IGTV is now integrated into the main feed for long-form content.
Recommended Specifications
Resolution: 1080×1920 (vertical) or 1920×1080 (horizontal)
Aspect Ratio: 9:16 or 16:9
Frame Rate: 30 fps
Codec: H.264
Bitrate: 8-15 Mbps
Duration: 1-60 minutes
Max File Size: 5.4 GB
Note: Vertical (9:16) gets better visibility in feed.
FFmpeg Command for IGTV
# Long-form vertical video
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-preset slow \
-crf 21 \
-maxrate 15M \
-bufsize 22M \
-pix_fmt yuv420p \
-c:a aac \
-b:a 192k \
-movflags +faststart \
igtv_video.mp4
Higher quality settings:
- CRF 21 (better quality for longer viewing)
- Audio 192 kbps (important for long content)
- Slower preset (worth it for long-form)
Common Conversion Scenarios
Scenario 1: iPhone Video to Instagram Reels
Problem: iPhone records at 1920×1080 (landscape) or 1080×1920 (portrait), but files are huge.
Solution:
# Compress iPhone video for Reels
ffmpeg -i iphone_video.mov \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-crf 23 \
-preset slow \
-pix_fmt yuv420p \
-c:a aac \
-b:a 128k \
-movflags +faststart \
reel_ready.mp4
Result:
- 200 MB iPhone video → 25 MB Instagram-ready
- 87% file size reduction
- No visible quality loss
Scenario 2: 4K Video to Instagram
Problem: 4K (3840×2160) is way too large for Instagram.
Solution:
# Downscale 4K to 1080p
ffmpeg -i 4k_video.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-crf 22 \
-preset slow \
-c:a aac -b:a 128k \
-movflags +faststart \
instagram_1080p.mp4
Result:
- 800 MB 4K video → 45 MB 1080p
- 94% reduction
- Instagram won't display 4K anyway
Scenario 3: Landscape Vlog to Reels
Problem: 16:9 landscape vlog needs to become 9:16 vertical.
Solution (blur background):
ffmpeg -i landscape.mp4 \
-filter_complex "[0:v]scale=1920:-1,boxblur=20:5,scale=1080:1920[bg]; \
[0:v]scale=-1:1920[fg]; \
[bg][fg]overlay=(W-w)/2:(H-h)/2:shortest=1" \
-c:v libx264 -crf 23 -preset slow \
-c:a aac -b:a 128k \
-movflags +faststart \
reel_with_blur.mp4
Result:
- Maintains horizontal video
- Adds aesthetic blurred background
- No black bars
Scenario 4: GoPro/Action Cam to Instagram
Problem: GoPro footage is 2.7K or 4K, high bitrate, often 60fps.
Solution:
# Convert GoPro to Instagram Reels
ffmpeg -i gopro.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,fps=30" \
-c:v libx264 \
-crf 23 \
-preset slow \
-c:a aac -b:a 128k \
-movflags +faststart \
gopro_reel.mp4
Key: fps=30 reduces frame rate from 60fps to 30fps (smaller file, sufficient for Instagram).
Batch Conversion Scripts
Convert Multiple Videos for Reels
#!/bin/bash
# batch_convert_reels.sh
for video in *.mp4 *.mov; do
[ -f "$video" ] || continue
output="reel_${video%.*}.mp4"
echo "Converting: $video → $output"
ffmpeg -i "$video" \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -preset slow -crf 23 -maxrate 12M -bufsize 18M \
-pix_fmt yuv420p -r 30 \
-c:a aac -b:a 128k -ar 48000 \
-movflags +faststart \
"$output"
echo "✓ Done: $output"
done
echo "All videos converted!"
Convert to All Instagram Formats
#!/bin/bash
# convert_all_instagram.sh
INPUT="$1"
if [ ! -f "$INPUT" ]; then
echo "Usage: $0 input_video.mp4"
exit 1
fi
BASE="${INPUT%.*}"
# Reels (9:16)
ffmpeg -i "$INPUT" \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 23 -maxrate 12M -c:a aac -b:a 128k -movflags +faststart \
"${BASE}_reel.mp4"
# Feed Portrait (4:5)
ffmpeg -i "$INPUT" \
-vf "scale=1080:1350:force_original_aspect_ratio=decrease,pad=1080:1350:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 23 -maxrate 10M -c:a aac -b:a 128k -movflags +faststart \
"${BASE}_feed_portrait.mp4"
# Feed Square (1:1)
ffmpeg -i "$INPUT" \
-vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 23 -maxrate 10M -c:a aac -b:a 128k -movflags +faststart \
"${BASE}_feed_square.mp4"
echo "Created 3 versions:"
echo " - ${BASE}_reel.mp4 (9:16 for Reels/Stories)"
echo " - ${BASE}_feed_portrait.mp4 (4:5 for Feed)"
echo " - ${BASE}_feed_square.mp4 (1:1 for Feed)"
Quality vs File Size Optimization
Target File Sizes
| Duration | Reels/Stories | Feed | IGTV |
|---|---|---|---|
| 15 sec | 10-20 MB | 8-15 MB | - |
| 30 sec | 20-35 MB | 15-25 MB | - |
| 60 sec | 35-60 MB | 25-45 MB | 50-80 MB |
| 5 min | - | - | 150-250 MB |
| 10 min | - | - | 250-400 MB |
CRF Quality Guide
| CRF Value | Quality | Use Case | File Size (60s) |
|---|---|---|---|
| 18 | Excellent | IGTV, important content | 80-100 MB |
| 21 | Very Good | Premium Reels | 50-70 MB |
| 23 | Good (recommended) | Standard Reels, Feed | 35-50 MB |
| 26 | Acceptable | Stories, quick posts | 20-30 MB |
| 28 | Fair | Low-priority Stories | 15-20 MB |
Sweet spot: CRF 23 for most Instagram content.
Common Problems & Solutions
Problem 1: "Video is too large"
Solution 1: Increase compression
# More aggressive compression
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -crf 26 -maxrate 8M \
-c:a aac -b:a 96k \
output.mp4
Solution 2: Reduce frame rate
# 30 fps → 24 fps (20% smaller)
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,fps=24" \
-c:v libx264 -crf 23 \
-c:a aac -b:a 128k \
output.mp4
Solution 3: Trim video
# Cut to 60 seconds
ffmpeg -i input.mp4 -t 60 \
-c:v libx264 -crf 23 \
-c:a aac -b:a 128k \
output.mp4
Problem 2: "Video looks blurry on Instagram"
Causes:
- Uploaded wrong resolution
- Instagram re-compressed low-quality source
- Used too high CRF value
Solution:
# High-quality upload
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-preset slow \
-crf 21 \
-maxrate 15M \
-pix_fmt yuv420p \
-c:a aac -b:a 192k \
-movflags +faststart \
high_quality.mp4
Problem 3: "Instagram crops my video weird"
Cause: Uploaded wrong aspect ratio.
Solution: Always verify aspect ratio before upload.
# Check video dimensions
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height \
-of csv=s=x:p=0 video.mp4
Expected outputs:
- Reels/Stories: 1080x1920
- Feed Portrait: 1080x1350
- Feed Square: 1080x1080
Problem 4: "Upload stuck or fails"
Causes:
- File too large
- Unstable connection
- Wrong codec
Solution:
# Create ultra-compatible Instagram video
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-profile:v main \
-level 4.0 \
-crf 24 \
-maxrate 10M \
-pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 48000 \
-movflags +faststart \
compatible.mp4
Mobile App Recommendations
If you prefer mobile editing:
iOS Apps
InShot (Free with watermark)
- Easy aspect ratio conversion
- Instagram presets
- Basic editing
CapCut (Free)
- Instagram export presets
- Advanced editing
- No watermark
Adobe Premiere Rush ($9.99/mo)
- Professional quality
- Cloud sync
- Instagram templates
Android Apps
InShot (Free)
- Same as iOS
- Works great on Android
KineMaster (Free/$4.99/mo)
- Professional editing
- Instagram presets
- Multi-layer support
Best Practices Checklist
Before uploading to Instagram:
☑ Resolution matches format
- Reels/Stories: 1080×1920
- Feed Portrait: 1080×1350
- Feed Square: 1080×1080
☑ File size reasonable
- < 100 MB for Stories
- < 200 MB for Reels
- < 500 MB for IGTV
☑ Codec is H.264
- Not H.265/HEVC
- Not ProRes or other professional codecs
☑ Audio is AAC
- 128 kbps for Reels
- 48 kHz sample rate
☑ Frame rate is 24-30 fps
- Not 60 fps (unless you want slow-mo effect)
☑ Pixel format is yuv420p
- Most compatible format
☑ Faststart enabled
- For smooth playback
☑ Video tested before upload
- Watch full video
- Check audio sync
- Verify no quality issues
Conclusion: Instagram Video Checklist
For Reels (most important in 2025):
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -preset slow -crf 23 -maxrate 12M \
-c:a aac -b:a 128k -movflags +faststart \
perfect_reel.mp4
Quick wins:
- Always upload at native resolution (1080×1920 for Reels)
- Use CRF 23 for quality/size balance
- Keep file size < 200 MB
- Test on your phone before publishing
Remember: Instagram will re-compress your video. Starting with optimized settings minimizes quality loss.
Need to convert videos for Instagram? Use our free video converter with Instagram presets for Reels, Stories, and Feed. Perfect settings every time!
About the Author

1CONVERTER Technical Team
Official TeamFile Format Specialists
Our technical team specializes in file format technologies and conversion algorithms. With combined expertise spanning document processing, media encoding, and archive formats, we ensure accurate and efficient conversions across 243+ supported formats.
📬 Get More Tips & Guides
Join 10,000+ readers who get our weekly newsletter with file conversion tips, tricks, and exclusive tutorials.
🔒 We respect your privacy. Unsubscribe at any time. No spam, ever.