VP9
VP9 is Google’s royalty-free video codec, widely used for web delivery via WebM containers. It offers roughly 30% better compression than H.264 and is natively supported in Chrome, Firefox, Edge, and Android. Transcodely uses the libvpx-vp9 encoder.
Quick Start
{
"type": "webm",
"video": [
{
"codec": "vp9",
"resolution": "1080p",
"quality": "standard"
}
]
}VP9Options Reference
Override defaults by passing the vp9 object on a video variant:
{
"codec": "vp9",
"resolution": "1080p",
"quality": "standard",
"vp9": {
"speed": 4,
"quality": "good",
"crf": 35,
"tile_columns": 2
}
}Key Differences from H.264/H.265
VP9 uses a fundamentally different parameter model than x264/x265:
| Concept | H.264/H.265 | VP9 |
|---|---|---|
| Speed control | preset (string: ultrafast-placebo) | speed (integer: 0-8) |
| Quality mode | tune (string: film, grain…) | quality (string: good, best, realtime) |
| Profiles | Named strings (baseline, main, high) | Numeric (0, 1, 2, 3) |
| Levels | Defined (3.0, 4.1, 5.1…) | Not applicable |
| CRF range | 15-35 (H.264) / 18-35 (H.265) | 15-50 |
| Max bitrate | 240,000 kbps | 150,000 kbps |
Speed Setting
The speed parameter (0-8) controls the encoding speed-to-quality tradeoff. This is VP9’s equivalent of H.264 presets.
| Speed | Encoding Speed | Quality | Recommended For |
|---|---|---|---|
| 0 | Extremely slow | Best | Archival (rarely used) |
| 1 | Very slow | Excellent | Premium mastering |
| 2 | Slow | Very good | High-quality streaming |
| 3 | Below average | Good | Premium tier |
| 4 | Average | Good | Premium tier (default) |
| 5 | Above average | Above average | Standard tier |
| 6 | Fast | Average | Standard tier (default) |
| 7 | Very fast | Below average | Economy tier |
| 8 | Fastest | Lowest | Economy tier (default) |
Default by quality tier:
| Quality Tier | Default Speed | Default CRF |
|---|---|---|
economy | 8 | 50 |
standard | 6 | 40 |
premium | 4 | 30 |
Quality Mode
The quality parameter selects the overall encoding strategy:
| Mode | Description | Use Case |
|---|---|---|
good | Balanced quality and speed (default) | Most production content |
best | Maximum quality, slowest | Archival, mastering |
realtime | Fastest, lower quality | Live streaming (not recommended for VOD) |
For VOD transcoding, good is almost always the right choice. The best mode provides marginal quality improvement at significant encoding time cost.
Profiles
VP9 uses numeric profiles that determine color format and bit depth:
| Profile | Color Format | Bit Depth | Use Case |
|---|---|---|---|
| 0 | 4:2:0 | 8-bit | Maximum compatibility (default, recommended) |
| 1 | 4:2:2 / 4:4:4 | 8-bit | Professional color workflows |
| 2 | 4:2:0 | 10/12-bit | HDR content, wide color gamut |
| 3 | 4:2:2 / 4:4:4 | 10/12-bit | Professional HDR workflows |
Profile 0 is the default and offers the widest playback compatibility. Use Profile 2 for 10-bit content when targeting modern browsers.
CRF (Constant Rate Factor)
Allowed range: 15-50. VP9 uses a different scale than H.264.
| CRF Range | Quality | Use Case |
|---|---|---|
| 15-25 | Very high | Archival, mastering |
| 26-33 | High | Premium streaming |
| 34-40 | Good | Standard streaming (default: 40) |
| 41-45 | Acceptable | Mobile, previews |
| 46-50 | Lower | Low-bandwidth delivery |
Tile Configuration
Tiles divide each frame into independent regions that can be encoded in parallel. More tiles increase encoding speed but slightly reduce compression efficiency.
| Parameter | Range | Default | Description |
|---|---|---|---|
tile_columns | 0-6 | Auto | Number of tile columns (log2 scale) |
tile_rows | 0-2 | Auto | Number of tile rows (log2 scale) |
Tile values are specified in log2: a value of 2 means 2^2 = 4 tile columns.
Recommended tile_columns by resolution:
| Resolution | tile_columns | Actual Columns |
|---|---|---|
| 480p-720p | 0 or 1 | 1 |
| 1080p | 2 | 4 |
| 1440p-2160p | 3 | 8 |
| 4320p | 4 | 16 |
Other Parameters
| Parameter | Range | Default | Description |
|---|---|---|---|
bitrate | 100-150,000 kbps | None (CRF mode) | Target bitrate |
min_bitrate | 100-150,000 kbps | None | Minimum bitrate for VBR |
max_bitrate | 100-150,000 kbps | None | Maximum bitrate for VBR |
keyint | 1-600 frames | 250 | Maximum keyframe interval |
Example: High-Quality Web Delivery
{
"codec": "vp9",
"resolution": "1080p",
"quality": "premium",
"vp9": {
"speed": 2,
"quality": "good",
"crf": 30,
"tile_columns": 2
}
}Example: Fast Economy Encode
{
"codec": "vp9",
"resolution": "720p",
"quality": "economy",
"vp9": {
"speed": 8,
"crf": 45
}
}Container Compatibility
VP9 works with: WebM, MKV, HLS (fMP4 segments), DASH
VP9 does not work with: MP4, MOV, TS