Skip to content

Presets

Presets bundle codec, bitrate, quality, and container settings for common delivery targets. Use them with the Export builder.

Using presets

typescript
await ffmpeg.exportVideo()
  .input("raw.mp4")
  .preset("youtube_1080p")
  .faststart()
  .output("youtube.mp4")
  .execute();

Available presets

YouTube

PresetResolutionVideoAudioNotes
youtube_4k3840×2160H.264, CRF 18AAC 320kHigh quality 4K
youtube_1080p1920×1080H.264, CRF 18AAC 192kStandard HD upload
youtube_720p1280×720H.264, CRF 20AAC 192kSmaller HD
youtube_shorts1080×1920H.264, CRF 20AAC 192kVertical short

Social media

PresetResolutionVideoAudioNotes
instagram_square1080×1080H.264, CRF 22AAC 128kSquare post
instagram_story1080×1920H.264, CRF 22AAC 128kStory/Reel
twitter_landscape1280×720H.264, CRF 22AAC 128kTwitter/X
tiktok1080×1920H.264, CRF 20AAC 128kTikTok vertical

Web

PresetNotes
web_h264H.264 + AAC, faststart, broad compatibility
web_h265H.265 + AAC, better compression, less compatible
web_av1AV1, best compression for modern browsers

Archive

PresetNotes
archive_losslessFFV1 + FLAC, frame-accurate lossless
archive_proresProRes 422 HQ, editing-friendly

Overriding preset settings

Preset values can be overridden by chaining methods after .preset():

typescript
await ffmpeg.exportVideo()
  .input("raw.mp4")
  .preset("youtube_1080p")
  .crf(22)          // override CRF from preset's 18
  .audioBitrate("128k")  // override audio bitrate
  .output("output.mp4")
  .execute();

Custom encoding without presets

typescript
await ffmpeg.exportVideo()
  .input("raw.mp4")
  .videoCodec("h264")
  .crf(20)
  .videoBitrate("4M")
  .audioCodec("aac")
  .audioBitrate("192k")
  .pixelFormat("yuv420p")
  .output("custom.mp4")
  .execute();

Released under the MIT License.