{"id":921,"date":"2026-04-14T10:20:20","date_gmt":"2026-04-14T03:20:20","guid":{"rendered":"https:\/\/liveapi.com\/blog\/vp9-codec\/"},"modified":"2026-04-14T16:23:54","modified_gmt":"2026-04-14T09:23:54","slug":"vp9-codec","status":"publish","type":"post","link":"https:\/\/liveapi.com\/blog\/vp9-codec\/","title":{"rendered":"VP9 Codec: What It Is, How It Works, and When to Use It"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">12<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>YouTube delivers more than 500 hours of video every minute. A large share of that traffic runs on VP9 \u2014 Google&#8217;s open-source codec that cuts bandwidth by up to 43% compared to H.264 at the same perceptual quality.<\/p>\n<p>If you&#8217;re building a streaming app, OTT platform, or any product that delivers video at scale, understanding the VP9 codec matters. It affects your storage costs, your CDN bills, your viewer experience, and which devices your content reaches.<\/p>\n<p>This guide covers what VP9 is, how it encodes video, how it compares to H.264, H.265, and AV1, and when it makes sense to use it in your stack.<\/p>\n<h2>What Is the VP9 Codec?<\/h2>\n<p>The VP9 codec is a royalty-free, open-source video compression format developed by Google. Released in 2013, it was designed as a direct alternative to H.265 (HEVC) \u2014 delivering comparable compression efficiency without licensing fees.<\/p>\n<p>A <a href=\"https:\/\/liveapi.com\/blog\/what-is-video-codec\/\" target=\"_blank\" rel=\"noopener\">video codec<\/a> is a standard that defines how raw video data is encoded into a compressed bitstream for storage or transmission, and then decoded back into frames for playback. VP9 is Google&#8217;s ninth generation in the VP codec family, building on the VP8 codec it open-sourced in 2010.<\/p>\n<p>VP9 is a codec, not a container format. For web delivery, it&#8217;s typically paired with the <a href=\"https:\/\/liveapi.com\/blog\/what-is-webm\/\" target=\"_blank\" rel=\"noopener\">WebM container format<\/a> (`.webm` file extension), though it also works inside Matroska (`.mkv`) containers and fragmented MP4 for MPEG-DASH streaming.<\/p>\n<p><strong>In plain terms:<\/strong> VP9 is an open-source video codec that delivers 30\u201350% better compression than H.264 at equivalent quality, making it a cost-effective choice for web video delivery, 4K streaming, and adaptive bitrate pipelines.<\/p>\n<h2>A Brief History of VP9<\/h2>\n<p>VP9&#8217;s origins trace back to Google&#8217;s acquisition of On2 Technologies in February 2010 for <a href=\"https:\/\/en.wikipedia.org\/wiki\/VP9\" target=\"_blank\" rel=\"nofollow noopener\">$124.6 million<\/a>. On2 had developed the VP3 through VP8 codec lineage. After the acquisition, Google open-sourced VP8 and began work on what became VP9.<\/p>\n<p>Development started in late 2011 under the internal codename &#8220;NGOV&#8221; (Next Generation Open Video). Google released VP9 publicly on June 17, 2013, with initial support in Chrome 29.<\/p>\n<p>YouTube adopted VP9 in 2014\u20132015 as its primary codec for 4K content. The scale of that deployment \u2014 billions of VP9 streams per day \u2014 helped establish VP9 as a production-ready standard rather than an experimental format.<\/p>\n<p>In September 2015, Google co-founded the Alliance for Open Media (AOM) alongside Amazon, Netflix, Microsoft, Mozilla, and others. AOM went on to develop AV1 as VP9&#8217;s official successor. VP9 is now in maintenance mode, but it remains widely deployed across YouTube, Netflix, Twitch, and Meta.<\/p>\n<h2>How VP9 Encoding Works<\/h2>\n<p>VP9 uses a block-based hybrid coding approach \u2014 the same general family as H.264 and H.265 \u2014 but with larger maximum block sizes and more advanced prediction tools.<\/p>\n<p>Understanding how <a href=\"https:\/\/liveapi.com\/blog\/what-is-video-encoding\/\" target=\"_blank\" rel=\"noopener\">video encoding<\/a> works at this level helps you make better decisions about encoder settings, quality profiles, and when VP9 is worth the compute cost.<\/p>\n<h3>Superblocks and Block Partitioning<\/h3>\n<p>VP9 divides each frame into <strong>superblocks<\/strong> \u2014 64\u00d764 pixel regions that can be recursively split into smaller blocks down to 4\u00d74 pixels. Larger blocks handle flat, uniform areas efficiently. Smaller blocks handle fine detail and sharp edges. This adaptive partitioning lets the encoder allocate bits where the visual complexity actually is.<\/p>\n<h3>Prediction Modes<\/h3>\n<p>VP9 reduces redundancy through two types of prediction:<\/p>\n<ul>\n<li><strong>Intra prediction<\/strong> \u2014 predicts a block&#8217;s content from adjacent blocks within the same frame, using 10 directional modes (vs. 9 in H.264)<\/li>\n<li><strong>Inter prediction<\/strong> \u2014 predicts blocks by referencing up to 3 previously decoded frames, tracking object movement using motion vectors<\/li>\n<\/ul>\n<p>Inter prediction accounts for the majority of compression gains. Describing &#8220;this block moved 12 pixels to the right&#8221; takes far fewer bits than re-encoding the same pixel data in every frame.<\/p>\n<h3>Transform and Quantization<\/h3>\n<p>The difference between the predicted block and the actual pixel data \u2014 the <strong>residual<\/strong> \u2014 is transformed using discrete cosine transform (DCT) or an asymmetric discrete sine transform (ADST). The result is then quantized: rounded to fewer precise values. This step discards perceptually invisible detail, which is how VP9 achieves its compression ratios.<\/p>\n<h3>Loop Filter<\/h3>\n<p>After decoding each frame, VP9 applies a deblocking loop filter to smooth block boundary artifacts \u2014 a common side effect of block-based coding at lower bitrates. The filter adapts based on coded block signals, smoothing flat regions while preserving edges.<\/p>\n<h3>Bitrate Control Modes<\/h3>\n<p>VP9 supports several bitrate modes suited to different use cases:<\/p>\n<table>\n<thead>\n<tr>\n<th>Mode<\/th>\n<th>Description<\/th>\n<th>Best For<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>CRF (Constant Rate Factor)<\/td>\n<td>Quality-driven, variable bitrate<\/td>\n<td>VOD encoding<\/td>\n<\/tr>\n<tr>\n<td>CBR (Constant Bitrate)<\/td>\n<td>Fixed output bitrate<\/td>\n<td>Live streaming<\/td>\n<\/tr>\n<tr>\n<td>VBR (Variable Bitrate)<\/td>\n<td>Target bitrate with allowed variation<\/td>\n<td>General delivery<\/td>\n<\/tr>\n<tr>\n<td>CQ (Constrained Quality)<\/td>\n<td>Quality floor with bitrate ceiling<\/td>\n<td>Adaptive streaming<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For live streaming, CBR is the right choice \u2014 it prevents encoder queue buildup and keeps latency predictable. For VOD, CRF mode (value of 33 is a good starting point) gives a solid quality-to-size ratio.<\/p>\n<h2>VP9 Codec Profiles<\/h2>\n<p>VP9 defines four encoding profiles that control color depth and chroma subsampling configuration:<\/p>\n<table>\n<thead>\n<tr>\n<th>Profile<\/th>\n<th>Bit Depth<\/th>\n<th>Chroma Subsampling<\/th>\n<th>Use Case<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Profile 0<\/td>\n<td>8-bit<\/td>\n<td>4:2:0<\/td>\n<td>Standard web video<\/td>\n<\/tr>\n<tr>\n<td>Profile 1<\/td>\n<td>8-bit<\/td>\n<td>4:2:2 or 4:4:4<\/td>\n<td>Professional production<\/td>\n<\/tr>\n<tr>\n<td>Profile 2<\/td>\n<td>10\/12-bit<\/td>\n<td>4:2:0<\/td>\n<td>HDR content<\/td>\n<\/tr>\n<tr>\n<td>Profile 3<\/td>\n<td>10\/12-bit<\/td>\n<td>4:2:2 or 4:4:4<\/td>\n<td>HDR professional<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Most streaming deployments \u2014 including YouTube and Netflix \u2014 use Profile 0 for standard dynamic range content. Profile 2 is used for HDR streams requiring 10-bit color depth and wide color gamut support.<\/p>\n<p>VP9 also specifies 14 encoding levels (1.0 through 6.2) that cap maximum resolution, frame rate, and bitrate. Level 5.1 supports 4K at 60fps with a maximum bitrate of 120 Mbps \u2014 the level used for YouTube&#8217;s 4K streams.<\/p>\n<h2>VP9 vs H.264: Compression Compared<\/h2>\n<p>H.264 (AVC) is the most widely deployed codec on the internet. VP9 was built to outperform it on compression while staying patent-free.<\/p>\n<p>YouTube&#8217;s own testing showed VP9 delivered:<\/p>\n<ul>\n<li><strong>43% lower data rate<\/strong> for 1080p at equivalent quality<\/li>\n<li><strong>35% lower data rate<\/strong> for 720p at equivalent quality<\/li>\n<\/ul>\n<p>Independent testing with modern encoders consistently shows VP9 achieving 30\u201350% better compression than <a href=\"https:\/\/liveapi.com\/blog\/av1-vs-h264\/\" target=\"_blank\" rel=\"noopener\">H.264 at equivalent quality<\/a>, when both are encoded at comparable effort levels.<\/p>\n<table>\n<thead>\n<tr>\n<th>Factor<\/th>\n<th>H.264<\/th>\n<th>VP9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Compression efficiency<\/td>\n<td>Baseline<\/td>\n<td>30\u201350% better<\/td>\n<\/tr>\n<tr>\n<td>Royalty-free<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Browser support<\/td>\n<td>~100%<\/td>\n<td>~96%<\/td>\n<\/tr>\n<tr>\n<td>Encoding speed<\/td>\n<td>Fast<\/td>\n<td>10\u201320x slower<\/td>\n<\/tr>\n<tr>\n<td>Hardware encode<\/td>\n<td>Universal<\/td>\n<td>Post-2016 GPUs<\/td>\n<\/tr>\n<tr>\n<td>Max resolution<\/td>\n<td>4K<\/td>\n<td>65,536 \u00d7 65,536 px<\/td>\n<\/tr>\n<tr>\n<td>WebRTC support<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>When to use H.264 over VP9:<\/strong> Real-time live encoding on constrained hardware without GPU acceleration, targeting older devices, or when your encoder stack doesn&#8217;t support VP9 well. H.264 also makes sense when encoding latency is more important than bandwidth savings.<\/p>\n<p><strong>When VP9 wins:<\/strong> Bandwidth-constrained delivery, 4K streaming, high-volume VOD pipelines where encoding cost is amortized against CDN savings.<\/p>\n<h2>VP9 vs H.265 (HEVC): Open-Source vs. Patented<\/h2>\n<p>H.265 (HEVC) and VP9 were designed for the same generation of video compression. Both deliver roughly 40\u201350% better compression than H.264.<\/p>\n<p>The critical difference is licensing. <a href=\"https:\/\/liveapi.com\/blog\/hevc-video-format\/\" target=\"_blank\" rel=\"noopener\">H.265\/HEVC<\/a> has fragmented patent pools \u2014 MPEG LA, HEVC Advance, and Velos Media each assert their own terms \u2014 which created significant uncertainty around royalties and slowed web adoption. VP9 is fully royalty-free.<\/p>\n<table>\n<thead>\n<tr>\n<th>Factor<\/th>\n<th>H.265 \/ HEVC<\/th>\n<th>VP9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Compression vs H.264<\/td>\n<td>~40\u201350% better<\/td>\n<td>~30\u201350% better<\/td>\n<\/tr>\n<tr>\n<td>Licensing<\/td>\n<td>Patent royalties<\/td>\n<td>Royalty-free<\/td>\n<\/tr>\n<tr>\n<td>Browser support<\/td>\n<td>Limited (Safari-focused)<\/td>\n<td>96%+<\/td>\n<\/tr>\n<tr>\n<td>Hardware encode<\/td>\n<td>Widely available<\/td>\n<td>Post-2016 GPUs<\/td>\n<\/tr>\n<tr>\n<td>Primary container<\/td>\n<td>HLS, DASH<\/td>\n<td>WebM, DASH<\/td>\n<\/tr>\n<tr>\n<td>Apple ecosystem<\/td>\n<td>Native hardware<\/td>\n<td>Software decode<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For web delivery, VP9 has a clear advantage in browser reach. H.265 still wins in the Apple ecosystem \u2014 iPhones and Macs accelerate HEVC natively \u2014 and for broadcast workflows where HEVC tooling is mature.<\/p>\n<p>For a fuller look at how HEVC stacks up against older codecs, see our <a href=\"https:\/\/liveapi.com\/blog\/hevc-vs-h264\/\" target=\"_blank\" rel=\"noopener\">H.265 vs H.264<\/a> comparison.<\/p>\n<h2>VP9 vs AV1: The Next Generation<\/h2>\n<p>AV1 is VP9&#8217;s successor, developed by the Alliance for Open Media (AOM) with contributions from Google, Amazon, Netflix, Microsoft, Mozilla, and Apple. Released in 2018, it was explicitly built to beat VP9 on compression.<\/p>\n<p>AV1 delivers around 30% better compression than VP9 at equivalent quality \u2014 enough of a gain that YouTube and Netflix are actively migrating content to AV1 for mobile delivery.<\/p>\n<table>\n<thead>\n<tr>\n<th>Factor<\/th>\n<th>VP9<\/th>\n<th>AV1<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Compression vs H.264<\/td>\n<td>~30\u201350% better<\/td>\n<td>~50% better<\/td>\n<\/tr>\n<tr>\n<td>Royalty-free<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Browser support<\/td>\n<td>~96%<\/td>\n<td>~90%+<\/td>\n<\/tr>\n<tr>\n<td>Software encoding speed<\/td>\n<td>Moderate<\/td>\n<td>Very slow<\/td>\n<\/tr>\n<tr>\n<td>Hardware encode<\/td>\n<td>Post-2016 GPUs<\/td>\n<td>Post-2021 (RTX 40 series+)<\/td>\n<\/tr>\n<tr>\n<td>Hardware decode<\/td>\n<td>Widespread<\/td>\n<td>Growing<\/td>\n<\/tr>\n<tr>\n<td>Live streaming readiness<\/td>\n<td>Yes<\/td>\n<td>Limited<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The <a href=\"https:\/\/liveapi.com\/blog\/av1-codec\/\" target=\"_blank\" rel=\"noopener\">AV1 codec<\/a> has a real compression advantage, but hardware encoder support is still catching up. For live streaming today, VP9 with hardware acceleration on modern server GPUs is more practical than software AV1 encoding.<\/p>\n<p>For a detailed look at how AV1 compares to the prior generation, see <a href=\"https:\/\/liveapi.com\/blog\/av1-vs-h265\/\" target=\"_blank\" rel=\"noopener\">AV1 vs H.265<\/a>.<\/p>\n<p><strong>General rule:<\/strong> Use AV1 for new VOD pipelines where encoding time isn&#8217;t a bottleneck. Use VP9 where AV1 hardware encoding isn&#8217;t available, or where you need solid legacy device coverage.<\/p>\n<h2>Advantages of VP9<\/h2>\n<h3>30\u201350% Bandwidth Savings vs H.264<\/h3>\n<p>VP9&#8217;s core value is compression efficiency. At the same perceptual quality, VP9 uses 30\u201350% less <a href=\"https:\/\/liveapi.com\/blog\/video-bitrate\/\" target=\"_blank\" rel=\"noopener\">video bitrate<\/a> than H.264. For a platform serving millions of views per day, this directly reduces CDN costs and improves buffering rates on slower connections.<\/p>\n<h3>Royalty-Free and Open-Source<\/h3>\n<p>VP9 carries no licensing fees. Google&#8217;s patents covering VP9 are available royalty-free under a license that remains free as long as you don&#8217;t sue other VP9 users for VP9-related patent infringement. This eliminates the licensing risk that complicated HEVC adoption and makes VP9 safe to deploy at any scale.<\/p>\n<h3>Wide Browser and Platform Support<\/h3>\n<p>VP9 is natively supported in Chrome, Firefox, Edge, and Opera. Safari added VP9 support in iOS 14 and macOS Big Sur in 2020. Current global browser coverage for VP9 is approximately <a href=\"https:\/\/caniuse.com\/vp9\" target=\"_blank\" rel=\"nofollow noopener\">96%<\/a> \u2014 close enough to H.264&#8217;s near-universal support that it&#8217;s no longer a meaningful obstacle for most web deployments.<\/p>\n<h3>Proven at Scale<\/h3>\n<p>VP9 powers a significant portion of YouTube&#8217;s 4K traffic. Netflix, Twitch, and Meta have all deployed VP9 in production at scale. This history means the encoding tools, decoder implementations, and platform behaviors around VP9 are mature and well-understood.<\/p>\n<h3>Hardware Acceleration<\/h3>\n<p>VP9 hardware decoding is standard on GPUs and SoCs manufactured after 2016. Intel Kaby Lake (7th gen), AMD Polaris, Nvidia Maxwell 2nd gen, and Qualcomm Snapdragon 800 series all support VP9 hardware decode. This means modern mobile devices play VP9 without the battery drain of software decoding.<\/p>\n<p>For encoding, hardware VP9 encode is available on Intel Quick Sync (8th gen+), Nvidia NVENC (Turing+), and AMD VCE\/VCN (Vega+) \u2014 making real-time VP9 encoding practical on current server hardware.<\/p>\n<h3>HDR and Wide Color Gamut<\/h3>\n<p>VP9 Profile 2 and Profile 3 support 10-bit and 12-bit color depth with HDR metadata, covering HDR10 and HLG. This gives platforms a royalty-free path to HDR streaming without HEVC&#8217;s licensing complexity.<\/p>\n<h2>Disadvantages of VP9<\/h2>\n<h3>Encoding Is 10\u201320x Slower Than H.264<\/h3>\n<p>VP9 software encoding with libvpx is significantly slower than H.264 encoding with x264. A 1-hour 1080p video that takes 10 minutes to encode as H.264 can take 2\u20133 hours as VP9 at high quality settings. This matters for transcoding pipelines with large backlogs or tight publishing deadlines.<\/p>\n<p>Hardware encoders close that gap considerably, but software-only VP9 encoding is a real constraint for teams with high-volume workflows. <a href=\"https:\/\/liveapi.com\/blog\/cloud-based-video-encoding\/\" target=\"_blank\" rel=\"noopener\">Cloud-based video encoding<\/a> platforms that manage large encoder fleets at scale can help you absorb that compute cost without building your own infrastructure.<\/p>\n<h3>Being Phased Out by AV1<\/h3>\n<p>VP9 is in maintenance mode. Google&#8217;s codec development focus shifted to AV1 after contributing to the AOM. For new long-term infrastructure decisions, AV1 offers better compression and has a clear roadmap for growing hardware support. VP9 will remain in production for years, but if you&#8217;re designing a new codec pipeline today, AV1 is the forward-looking choice for VOD.<\/p>\n<h3>Higher CPU Load for Software Decoding<\/h3>\n<p>On devices without VP9 hardware decode, software decoding VP9 uses more CPU than H.264 \u2014 sometimes noticeably so on older Android devices (4.4\u20135.x era). This is a diminishing concern as post-2016 devices dominate the market, but it&#8217;s worth considering if your audience includes budget devices or embedded systems.<\/p>\n<h3>Patent Pool Ambiguity<\/h3>\n<p>While Google&#8217;s VP9 patents are royalty-free, the Sisvel licensing pool has asserted that additional third-party patents may cover VP9 implementations. For most deployments, this hasn&#8217;t resulted in real legal exposure, but it&#8217;s a relevant consideration for organizations in industries with aggressive patent enforcement.<\/p>\n<hr \/>\n<p>The trade-offs above make more sense in practice once you see VP9 alongside real encoding configurations. Here&#8217;s how to put it to work.<\/p>\n<hr \/>\n<h2>VP9 Browser and Hardware Support<\/h2>\n<h3>Browser Compatibility<\/h3>\n<table>\n<thead>\n<tr>\n<th>Browser<\/th>\n<th>VP9 Support<\/th>\n<th>Available Since<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Chrome<\/td>\n<td>Yes<\/td>\n<td>v29 (2013)<\/td>\n<\/tr>\n<tr>\n<td>Firefox<\/td>\n<td>Yes<\/td>\n<td>v28 (2014)<\/td>\n<\/tr>\n<tr>\n<td>Edge<\/td>\n<td>Yes<\/td>\n<td>Chromium-based<\/td>\n<\/tr>\n<tr>\n<td>Opera<\/td>\n<td>Yes<\/td>\n<td>v16 (2013)<\/td>\n<\/tr>\n<tr>\n<td>Safari<\/td>\n<td>Yes<\/td>\n<td>iOS 14, macOS Big Sur (2020)<\/td>\n<\/tr>\n<tr>\n<td>Samsung Internet<\/td>\n<td>Yes<\/td>\n<td>v4<\/td>\n<\/tr>\n<tr>\n<td>Internet Explorer 11<\/td>\n<td>No<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Hardware Decode Support<\/h3>\n<table>\n<thead>\n<tr>\n<th>Platform<\/th>\n<th>VP9 Hardware Decode<\/th>\n<th>Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Intel 7th gen Kaby Lake+<\/td>\n<td>Yes<\/td>\n<td>Intel Quick Sync<\/td>\n<\/tr>\n<tr>\n<td>AMD Polaris+<\/td>\n<td>Yes<\/td>\n<td>VCE\/VCN<\/td>\n<\/tr>\n<tr>\n<td>Nvidia Maxwell 2nd gen+<\/td>\n<td>Yes<\/td>\n<td>NVDEC<\/td>\n<\/tr>\n<tr>\n<td>Apple A9 chip+<\/td>\n<td>Yes<\/td>\n<td>Hardware decode<\/td>\n<\/tr>\n<tr>\n<td>Qualcomm Snapdragon 800+<\/td>\n<td>Yes<\/td>\n<td>Adreno 430+<\/td>\n<\/tr>\n<tr>\n<td>Android 4.4 KitKat<\/td>\n<td>Software only<\/td>\n<td>Hardware post-2016<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For live streaming targets, hardware VP9 decoding is the norm for any device made after 2016. If a segment of your audience uses older Android (4.4\u20135.x) or pre-2020 Safari, factor in software decode limitations.<\/p>\n<h2>How to Encode Video with VP9 Using FFmpeg<\/h2>\n<p>FFmpeg with libvpx-vp9 is the standard open-source path to VP9 encoding. Here are working commands for the most common scenarios, based on <a href=\"https:\/\/developers.google.com\/media\/vp9\" target=\"_blank\" rel=\"nofollow noopener\">Google&#8217;s VP9 encoding guidelines<\/a>.<\/p>\n<h3>VOD Encoding (Two-Pass CRF)<\/h3>\n<p>Two-pass encoding produces the best quality for VOD content:<\/p>\n<pre><code># First pass \u2014 analyze the source\r\nffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 33 -pass 1 -an -f null \/dev\/null<\/code><\/pre>\n<p># Second pass \u2014 encode with quality data from pass 1 ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 33 -pass 2 \\ -c:a libopus -b:a 128k output.webm<\/p>\n<pre><code><\/code><\/pre>\n<p>`-b:v 0` with `-crf 33` sets constrained quality mode \u2014 quality-driven encoding with no bitrate ceiling. Lower CRF values (e.g., 15) produce higher quality at the cost of larger file size. CRF 63 is the lowest quality extreme, suitable only for aggressive file size reduction.<\/p>\n<h3>Live Streaming Encoding (CBR)<\/h3>\n<p>For real-time live encoding, use CBR mode with speed settings tuned for throughput:<\/p>\n<pre><code>ffmpeg -i rtmp:\/\/input\/live\/stream_key \\\r\n  -c:v libvpx-vp9 \\\r\n  -b:v 2500k -minrate 2500k -maxrate 2500k \\\r\n  -deadline realtime -cpu-used 8 \\\r\n  -c:a libopus -b:a 128k \\\r\n  -f webm rtmp:\/\/output\/live\/stream_key<\/code><\/pre>\n<p>`-deadline realtime -cpu-used 8` selects the fastest encode mode, trading compression efficiency for real-time throughput. For higher quality at the cost of more CPU, use `-deadline good -cpu-used 2`.<\/p>\n<h3>4K HDR Encoding (VP9 Profile 2)<\/h3>\n<pre><code>ffmpeg -i input_4k_hdr.mp4 \\\r\n  -c:v libvpx-vp9 -profile:v 2 \\\r\n  -b:v 0 -crf 18 \\\r\n  -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc \\\r\n  -pix_fmt yuv420p10le \\\r\n  -c:a libopus -b:a 320k \\\r\n  output_4k_hdr.webm<\/code><\/pre>\n<p>`-profile:v 2` activates 10-bit encoding. `-color_primaries bt2020` and `-color_trc smpte2084` set the HDR10 color metadata required for proper display on HDR screens.<\/p>\n<h3>Tile-Based Multi-Threading<\/h3>\n<p>On multi-core systems, tile columns and row multi-threading significantly speed up encoding:<\/p>\n<pre><code>ffmpeg -i input.mp4 -c:v libvpx-vp9 \\\r\n  -b:v 0 -crf 33 \\\r\n  -tile-columns 2 -row-mt 1 \\\r\n  -threads 8 \\\r\n  -c:a libopus -b:a 128k output.webm<\/code><\/pre>\n<p>`-tile-columns 2` splits each frame into 4 vertical tiles encoded in parallel. `-row-mt 1` enables row-based multi-threading within each tile. On an 8-core server, this can cut encode time by 40\u201360% compared to single-threaded VP9.<\/p>\n<p>If you&#8217;d rather not manage FFmpeg configurations yourself, <a href=\"https:\/\/liveapi.com\/blog\/video-transcoding-api\/\" target=\"_blank\" rel=\"noopener\">video transcoding APIs<\/a> handle codec selection, quality profiles, and encoder scaling for you \u2014 you submit a video and get back an optimized output.<\/p>\n<h2>VP9 Use Cases<\/h2>\n<h3>Web Video and OTT Delivery<\/h3>\n<p>VP9 is the default codec for <a href=\"https:\/\/liveapi.com\/blog\/adaptive-bitrate-streaming\/\" target=\"_blank\" rel=\"noopener\">adaptive bitrate streaming<\/a> on YouTube. When you upload a 1080p video, YouTube transcodes and serves it as VP9 by default for Chrome and Android users. For OTT platforms targeting web and modern Android, VP9 is a strong codec choice for the quality ladder.<\/p>\n<h3>4K and HDR Streaming<\/h3>\n<p>VP9 Level 5.1 supports 4K at 60fps. Its Profile 2\/3 support for 10-bit color and HDR metadata makes it one of the accessible royalty-free options for HDR streaming. Netflix has used VP9 alongside HEVC for HDR content on Android devices.<\/p>\n<h3>WebRTC Video Conferencing<\/h3>\n<p><a href=\"https:\/\/liveapi.com\/blog\/what-is-webrtc\/\" target=\"_blank\" rel=\"noopener\">WebRTC<\/a> supports VP9 as one of its mandatory-to-implement codecs alongside H.264. In Chrome-to-Chrome sessions, VP9 is often selected for its bandwidth efficiency. If you&#8217;re building a video conferencing or real-time collaboration app, your media server likely supports VP9 codec negotiation already.<\/p>\n<h3>MPEG-DASH Streaming<\/h3>\n<p>VP9 packages cleanly into <a href=\"https:\/\/liveapi.com\/blog\/hls-vs-dash\/\" target=\"_blank\" rel=\"noopener\">HLS and DASH<\/a> delivery pipelines. In MPEG-DASH streams, VP9 is delivered in WebM segments or fragmented MP4 containers, with quality levels selected dynamically based on viewer bandwidth through adaptive bitrate logic.<\/p>\n<h2>Is VP9 Right for Your Project?<\/h2>\n<p><strong>Use VP9 if:<\/strong><\/p>\n<ul>\n<li>Your primary delivery targets are Chrome, Firefox, Edge, and modern Android<\/li>\n<li>You&#8217;re building a VOD platform and can afford longer encode times in exchange for lower CDN costs<\/li>\n<li>You need a royalty-free codec with better compression than H.264<\/li>\n<li>You&#8217;re implementing WebRTC video and want highest quality per bit<\/li>\n<li>Your CDN and player stack already supports VP9\/WebM<\/li>\n<\/ul>\n<p><strong>Stick with H.264 if:<\/strong><\/p>\n<ul>\n<li>You&#8217;re doing real-time live encoding on constrained hardware without GPU acceleration<\/li>\n<li>A significant share of your audience uses older iOS (pre-iOS 14) or legacy Android<\/li>\n<li>Your media players or CDN don&#8217;t support VP9 yet<\/li>\n<\/ul>\n<p><strong>Consider AV1 instead if:<\/strong><\/p>\n<ul>\n<li>You&#8217;re starting a new VOD pipeline and can accept longer encode times<\/li>\n<li>You&#8217;re targeting mobile-first delivery with aggressive bandwidth optimization<\/li>\n<li>Your encoder hardware supports AV1 (Nvidia RTX 4000 series, Intel Arc, AMD RDNA 3+)<\/li>\n<\/ul>\n<p>For teams building on top of a <a href=\"https:\/\/liveapi.com\/live-streaming-api\/\" target=\"_blank\" rel=\"noopener\">live streaming API<\/a>, codec selection happens at the infrastructure layer \u2014 you configure a quality profile, and the platform handles encoding into the right format for each device. That keeps your application code clean while the encoding pipeline handles delivery.<\/p>\n<h2>VP9 Codec FAQ<\/h2>\n<p><strong>What is the VP9 codec used for?<\/strong><br \/>\nVP9 is used for web video delivery, 4K streaming, OTT platforms, and WebRTC video calls. YouTube uses it as the primary codec for 4K content, serving billions of VP9 streams per day. Netflix uses it for HD and HDR content on Android. It&#8217;s also the default codec for VP9-capable browsers in WebRTC sessions.<\/p>\n<p><strong>Is VP9 better than H.264?<\/strong><br \/>\nVP9 produces better compression \u2014 roughly 30\u201350% fewer bits for equivalent quality. But H.264 encodes 10\u201320x faster and has near-universal hardware support. For bandwidth-constrained delivery, VP9 wins on efficiency. For real-time encoding or legacy device support, H.264 is often more practical.<\/p>\n<p><strong>Is VP9 better than H.265?<\/strong><br \/>\nVP9 and H.265 offer similar compression. The main difference is licensing: VP9 is royalty-free, H.265 is not. For web delivery, VP9 has wider browser support. H.265 has deeper hardware encoder support and is native to Apple devices. Neither is universally better \u2014 the choice depends on your target platform.<\/p>\n<p><strong>Does VP9 work in all browsers?<\/strong><br \/>\nVP9 works natively in Chrome, Firefox, Edge, Opera, and Samsung Internet. Safari added VP9 support in iOS 14 and macOS Big Sur in 2020. Global browser coverage is approximately 96%. Internet Explorer (under 1% market share) does not support VP9.<\/p>\n<p><strong>How does VP9 compare to AV1?<\/strong><br \/>\nAV1 offers around 30% better compression than VP9 at the same quality level. Both are royalty-free. AV1&#8217;s main limitation is encoding speed \u2014 software AV1 encoding is much slower than VP9 \u2014 and limited hardware encoder support on older GPUs. AV1 is better for new VOD pipelines; VP9 is more practical for live encoding today.<\/p>\n<p><strong>What container format does VP9 use?<\/strong><br \/>\nVP9 is most commonly used with the WebM container (`.webm`) for web delivery. It also works inside Matroska (`.mkv`) containers and can be packaged in fragmented MP4 for MPEG-DASH streaming, though WebM is the standard choice for VP9 web delivery.<\/p>\n<p><strong>Is VP9 royalty-free?<\/strong><br \/>\nYes. Google&#8217;s patents covering VP9 are available royalty-free under a license that stays free as long as you don&#8217;t sue other VP9 users for VP9-related patent infringement. The Sisvel patent pool has asserted additional claims, but this has not resulted in widespread licensing demands for typical deployments.<\/p>\n<p><strong>What bitrate should I use for VP9 encoding?<\/strong><br \/>\nFor 1080p VOD, start with CRF 33 in two-pass mode \u2014 adjust down (e.g., 18\u201325) for higher quality, up (e.g., 40\u201345) for smaller files. For live 1080p streaming, a CBR target of 2,500\u20134,000 Kbps is common. For 4K content, 8,000\u201315,000 Kbps covers most quality requirements. Set minimum bitrate to 50% of target and maximum to 145% for adaptive bitrate profiles.<\/p>\n<h2>Closing<\/h2>\n<p>The VP9 codec earns its place in production video infrastructure through proven compression efficiency and a genuinely patent-free license. It&#8217;s the codec that made 4K streaming practical on bandwidth-constrained networks, and it continues to power a significant share of global video traffic on YouTube, Netflix, and Twitch.<\/p>\n<p>For most web video workloads, VP9 sits in a useful middle ground: better compression than H.264 without HEVC&#8217;s licensing complexity, and more practical for live encoding today than AV1. As hardware AV1 encoders become standard, that balance will shift \u2014 but VP9 remains a well-supported, battle-tested choice for any <a href=\"https:\/\/liveapi.com\/blog\/what-is-hls-streaming\/\" target=\"_blank\" rel=\"noopener\">HLS streaming<\/a> or adaptive delivery pipeline.<\/p>\n<p>If you want to skip codec management entirely, <a href=\"https:\/\/liveapi.com\/\" target=\"_blank\" rel=\"noopener\">LiveAPI<\/a> handles encoding, transcoding, and adaptive delivery for both live and on-demand video \u2014 with multi-CDN delivery through Akamai, Cloudflare, and Fastly built in. Get started and ship your streaming features without building encoder infrastructure from scratch.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">12<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span> YouTube delivers more than 500 hours of video every minute. A large share of that traffic runs on VP9 \u2014 Google&#8217;s open-source codec that cuts bandwidth by up to 43% compared to H.264 at the same perceptual quality. If you&#8217;re building a streaming app, OTT platform, or any product that delivers video at scale, understanding [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"VP9 Codec: What It Is, How It Works, and When to Use It %%sep%% %%sitename%%","_yoast_wpseo_metadesc":"Learn what the VP9 codec is, how it works, how it compares to H.264, H.265, and AV1, and when to use it for web video and live streaming.","inline_featured_image":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codec"],"jetpack_featured_media_url":"https:\/\/liveapi.com\/blog\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-14-at-16.21.48.png","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.6.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<meta name=\"description\" content=\"Learn what the VP9 codec is, how it works, how it compares to H.264, H.265, and AV1, and when to use it for web video and live streaming.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/liveapi.com\/blog\/vp9-codec\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VP9 Codec: What It Is, How It Works, and When to Use It - LiveAPI Blog\" \/>\n<meta property=\"og:description\" content=\"Learn what the VP9 codec is, how it works, how it compares to H.264, H.265, and AV1, and when to use it for web video and live streaming.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liveapi.com\/blog\/vp9-codec\/\" \/>\n<meta property=\"og:site_name\" content=\"LiveAPI Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-14T03:20:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-14T09:23:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liveapi.com\/blog\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-14-at-16.21.48.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1564\" \/>\n\t<meta property=\"og:image:height\" content=\"888\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"17 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/liveapi.com\/blog\/#website\",\"url\":\"https:\/\/liveapi.com\/blog\/\",\"name\":\"LiveAPI Blog\",\"description\":\"Live Video Streaming API Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/liveapi.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/liveapi.com\/blog\/vp9-codec\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/liveapi.com\/blog\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-14-at-16.21.48.png\",\"width\":1564,\"height\":888,\"caption\":\"VP9\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liveapi.com\/blog\/vp9-codec\/#webpage\",\"url\":\"https:\/\/liveapi.com\/blog\/vp9-codec\/\",\"name\":\"VP9 Codec: What It Is, How It Works, and When to Use It - LiveAPI Blog\",\"isPartOf\":{\"@id\":\"https:\/\/liveapi.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/liveapi.com\/blog\/vp9-codec\/#primaryimage\"},\"datePublished\":\"2026-04-14T03:20:20+00:00\",\"dateModified\":\"2026-04-14T09:23:54+00:00\",\"author\":{\"@id\":\"https:\/\/liveapi.com\/blog\/#\/schema\/person\/98f2ee8b3a0bd93351c0d9e8ce490e4a\"},\"description\":\"Learn what the VP9 codec is, how it works, how it compares to H.264, H.265, and AV1, and when to use it for web video and live streaming.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liveapi.com\/blog\/vp9-codec\/\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/liveapi.com\/blog\/#\/schema\/person\/98f2ee8b3a0bd93351c0d9e8ce490e4a\",\"name\":\"govz\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/liveapi.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ab5cbe0543c0a44dc944c720159323bd001fc39a8ba5b1f137cd22e7578e84c9?s=96&d=mm&r=g\",\"caption\":\"govz\"},\"sameAs\":[\"https:\/\/liveapi.com\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/posts\/921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/comments?post=921"}],"version-history":[{"count":2,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/posts\/921\/revisions"}],"predecessor-version":[{"id":932,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/posts\/921\/revisions\/932"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/media\/931"}],"wp:attachment":[{"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/media?parent=921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/categories?post=921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liveapi.com\/blog\/wp-json\/wp\/v2\/tags?post=921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}