Skip to content

SVT-VP9

currentMigrated from docs/encoders/SVT-VP9.mdx at 37c3317fd058; modified for Encode Wiki · CC BY-SA 4.0

SVT VP9 encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-VP9 encoder, it is possible to spread video encoding processing ac…

Latest release
v0.3.1
Last commit
Stars
249

SVT-VP9 is the VP9 member of Intel’s Scalable Video Technology family, alongside SVT-HEVC and SVT-AV1. Like its siblings, it was built for throughput on many-core servers, and its presets are much faster than libvpx’s good-quality mode. It is limited, though: 8-bit 4:2:0 only (VP9 profile 0), raw YUV input, and fewer rate-control options than libvpx.

The repository is not archived, but it is not under active development. v0.3.1 (December 2025) was the first release since v0.3.0 in 2020. Recent commits are mostly upkeep: rebasing the FFmpeg patch, build fixes and occasional bug fixes. For quality-focused VP9, especially 10-bit, use libvpx. Use SVT-VP9 when you need 8-bit VP9 fast.

Terminal window
git clone --branch v0.3.1 https://github.com/OpenVisualCloud/SVT-VP9.git
cmake -S SVT-VP9 -B SVT-VP9/Build -DCMAKE_BUILD_TYPE=Release
cmake --build SVT-VP9/Build -j"$(nproc)"

The encoder is written to SVT-VP9/Bin/Release/SvtVp9EncApp.

SvtVp9EncApp takes raw 8-bit YUV 4:2:0, so give it the dimensions and frame rate, and pipe from FFmpeg:

Terminal window
ffmpeg -i input.mkv -pix_fmt yuv420p -f rawvideo - | \
SvtVp9EncApp -i stdin -w 1920 -h 1080 -fps 24 -n 1000 -enc-mode 4 -tune 0 -q 40 -b output.ivf

When reading from stdin, set -n to the number of frames. Without it, the encoder can hang at the end of the input. Width and height must both be multiples of 8, so crop or pad sources such as 1920×1036 first (for example -vf crop=1920:1032). The output is IVF; mux it into WebM or MKV with FFmpeg (ffmpeg -i output.ivf -i input.mkv -map 0:v -map 1:a -c:v copy -c:a libopus final.webm).

OptionApp defaultNotes
-enc-mode9Preset, 0 (best quality) to 9 (fastest).
-tune10 = visual quality, 1 = PSNR/SSIM, 2 = VMAF. Use 0 unless you are tuning for a metric.
-rc00 = constant QP, 1 = VBR, 2 = CBR.
-q45QP, 0–63, used with -rc 0. Lower is higher quality.
-tbr7000000Target bitrate in bits per second, for -rc 1/-rc 2.
-intra-period−2 (auto)Keyframe interval in frames, up to 255. −1 means only the first frame is a keyframe.
-lp, -ssall cores, all socketsLogical-processor count and CPU socket, for running several encodes side by side.

FFmpeg does not include SVT-VP9. The repository ships a patch (ffmpeg_plugin/master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch) that adds a libsvt_vp9 encoder when FFmpeg is configured with --enable-libsvtvp9. Its options are -preset (0–9, default 9), -tune (vq, ssim, vmaf; default vq), -rc (cqp, vbr, cbr), -qp (0–51, default 32), -level and -socket, plus FFmpeg’s -b:v and -g:

Terminal window
ffmpeg -i input.mkv -c:v libsvt_vp9 -preset 4 -tune vq -rc cqp -qp 32 -g 240 -c:a libopus output.webm