AV1
37c3317fd058; modified for Encode Wiki · CC BY-SA 4.0AV1 is a video coding format from the Alliance for Open Media (AOMedia), a consortium founded in 2015 by Google, Mozilla, Cisco, Netflix, Amazon, Microsoft, Intel and others. It grew out of Google’s VP9/VP10 work, with tools contributed from Mozilla’s Daala and Cisco’s Thor. The bitstream was frozen in 2018 (v1.0.0 in June 2018, Errata 1 in January 2019) and has not changed since, so files from early encoders still play on current decoders.
AV1 is the default choice for royalty-free delivery today. At the same visual quality it typically needs noticeably less bitrate than VP9 and HEVC, YouTube and Netflix stream it to capable devices, and Chrome and Firefox decode it on any platform, in software where there is no hardware decoder. The costs are slower software encoding than x264/x265 at comparable effort, and a decode load that older phones and PCs without AV1 hardware handle in software.
When to use AV1
Section titled “When to use AV1”- Web and streaming delivery, with an H.264 fallback for devices without AV1 decode.
- Personal encodes and archive copies where file size matters and the playback devices are known. Encoding 8-bit sources to 10-bit AV1 is common practice: it reduces banding at little or no bitrate cost.
- Low-bitrate and screen content, where AV1’s screen-content tools (palette, intra block copy) help.
- Not for editing intermediates or long-lived masters you plan to re-encode; use a lossless or intermediate codec instead.
Profiles and levels
Section titled “Profiles and levels”| Profile | Bit depth | Chroma |
|---|---|---|
| Main (0) | 8, 10 | 4:2:0, monochrome |
| High (1) | 8, 10 | Adds 4:4:4 |
| Professional (2) | 8, 10, 12 | Adds 4:2:2 at 8/10-bit, and 4:2:0/4:2:2/4:4:4 at 12-bit |
10-bit is part of Main, so unlike H.264 High 10, a 10-bit 4:2:0 AV1 stream plays on any AV1 decoder, hardware included. High and Professional are another matter: almost no consumer hardware decodes 4:4:4, 4:2:2 or 12-bit AV1.
Levels set limits on picture size, sample rate, bitrate and tile count. The syntax reserves values from 2.0 to 7.3, but the specification only defines 14 of them: 2.0, 2.1, 3.0, 3.1, 4.0, 4.1 and 5.0–6.3. For example, level 4.0 covers 1080p30, 5.1 covers 2160p60 and 6.0 covers 4320p30. Main tier exists at every level; High tier, which raises the bitrate limit, can only be signalled at level 4.0 and above. Encoders pick the level automatically unless you override it.
Coding tools
Section titled “Coding tools”AV1 is a conventional block-based hybrid codec, but with a much larger toolbox than VP9 or HEVC. The ones worth knowing about as an encoder user:
Block structure. Frames are split into 64×64 or 128×128 superblocks, then recursively partitioned down to 4×4 using ten partition types, including T-shaped and 4:1 rectangular splits.
Intra prediction.
- 8 directional modes, each with 7 angle offsets in 3° steps, giving 56 prediction angles (VP9 has 8).
- Smooth (vertical, horizontal, both) and Paeth modes for gradients; Paeth replaces VP9’s TrueMotion predictor.
- Chroma from luma (CfL), from Daala, predicts chroma as a linear function of the reconstructed luma.
- Palette mode (2–8 colours per block) and intra block copy, which copies an already-decoded block of the same frame. Both target screen content such as text, UI and games. Intra block copy is only allowed in intra frames and switches off the in-loop filters for that frame.
- Recursive filter-intra modes for blocks with smooth texture.
Inter prediction.
- Up to 7 references per frame, chosen from 8 stored frames, in any combination of past and future.
- Global and local warped motion: affine models for camera zoom, rotation and shake, either per frame or per block.
- Overlapped block motion compensation (OBMC) blends a block’s prediction with its neighbours’ motion to soften block edges.
- Compound prediction with averaged, distance-weighted, difference-weighted and wedge (shaped mask) blending, plus inter-intra blending.
- Separate horizontal and vertical interpolation filters (“dual filter”) at up to 1/8-pel precision.
Transforms and quantisation. Square and rectangular transforms from 4×4 to 64×64; each 1-D direction picks DCT, ADST, flipped ADST or identity, giving up to 16 combinations on small blocks (fewer on large ones). For 64-point transforms only the low-frequency 32×32 coefficients are coded. Quantisation supports per-superblock delta-q, 8 segments with their own quantiser and filter strength, and quantisation matrices.
Entropy coding. A multi-symbol adaptive arithmetic coder derived from Daala codes up to 16 values per symbol, instead of the binary CABAC used by H.264 and HEVC.
In-loop filtering. Three stages run in order: a deblocking filter with separate luma and chroma strengths; CDEF, a directional deringing filter combining Daala’s deringing filter with Thor’s low-pass filter; and loop restoration, which selects a Wiener or self-guided filter per region. An optional super-resolution mode codes frames at reduced width and upscales them in-loop before restoration.
Film grain synthesis. The encoder can denoise the source, estimate the grain, and send a compact grain model in the frame header. The decoder regenerates matching grain on output, after reconstruction; synthesised grain never enters the reference frames. This saves a large amount of bitrate on grainy film. Use it carefully: strong denoising removes real detail, the grain model does not fit every kind of noise, and synthesised grain lowers full-reference metric scores (PSNR, SSIM, VMAF, SSIMULACRA2) even when it looks right, so compare grain-synth encodes by eye. Encoder controls: SVT-AV1 --film-grain (strength 1–50; the encoded picture is only denoised with --film-grain-denoise 1), aomenc --denoise-noise-level, and rav1e --photon-noise, which adds synthetic grain without analysing or denoising the source. All three can also load a grain table file.
Bitstream structure. An AV1 stream is a sequence of OBUs (open bitstream units), the counterpart to H.264/HEVC NAL units. Frames can be split into tiles for parallel encoding and decoding, and the OBU extension header carries temporal and spatial layer IDs for scalable (SVC) coding in realtime use.
For a deeper walkthrough with mode and partition tables, see Qu Pengfei’s Technical Overview of AV1, which the original version of this page reproduced, or the specification itself.
Encoders
Section titled “Encoders”| Relationship | Project or format | Evidence and scope | Status |
|---|---|---|---|
| Implements by | libaom / aomenc v3.14.1 | libaom is AOMedia's reference AV1 implementation and includes aomenc and aomdec.Scope: Encoder Decoder · Sources: libaom v3.14.1 changelog | Normative |
| Implements by | rav1e v0.8.1 | rav1e is an AV1 encoder with a Rust API, C API, and command-line application.Scope: Encoder · Sources: rav1e v0.8.1 release | Documented |
| Implements by | SVT-AV1 v4.2.0 | SVT-AV1 is an AV1-compliant encoder library with standalone and FFmpeg interfaces.Scope: Encoder · Sources: SVT-AV1 v4.2.0 documentation | Documented |
| Implements by | SVT-AV1-PSY v3.0.2 | SVT-AV1-PSY is the sunset original perceptual AV1 encoder fork in this SVT lineage.Scope: Encoder · Sources: SVT-AV1-PSY repository and sunset notice | Documented |
| Implements by | SVT-AV1-PSYEX v3.0.2-B | SVT-AV1-PSYEX is an experimental AV1 encoder fork with distinct perceptual defaults and controls.Scope: Encoder · Sources: SVT-AV1-PSYEX repository | Project Claimed |
| Implements by | SVT-AV1-HDR pgo-build-2026-09-01-0033340 | SVT-AV1-HDR is an AV1 encoder fork for perceptual SDR/HDR work and optional metadata integrations.Scope: Encoder · Sources: SVT-AV1-HDR September 1 PGO build and source revision | Project Claimed |
| Implements by | 5fish/SVT-AV1 v2.3.260819 | 5fish/SVT-AV1 is an AV1 encoder fork with simplified controls and a 2D-content focus.Scope: Encoder · Sources: 5fish/SVT-AV1 repository | Project Claimed |
| Implements by | SVT-AV1-Essential v4.0.1-Essential | SVT-AV1-Essential is an AV1 encoder fork with opinionated defaults and integrated workflow features.Scope: Encoder · Sources: SVT-AV1-Essential repository | Project Claimed |
| Implements by | dav1d 1.5.4 | dav1d 1.5.4 decodes AV1 in software; it is a CPU decoder, separate from browser or hardware AV1 decoding.Scope: Software Decoder · Sources: dav1d 1.5.4 tagged documentation, AV1 Bitstream & Decoding Process Specification | Documented |
- SVT-AV1 is the usual choice: fast, scales across many cores, and has good psychovisual tuning in recent releases. It only accepts 4:2:0 input, so use another encoder for 4:2:2 or 4:4:4. See AV1 with SVT-AV1.
- aomenc (libaom) is the reference encoder. It is slower but supports every profile, all-intra and still-picture use (it is libavif’s usual AV1 backend), and fine-grained tuning.
- rav1e is a Rust encoder with 4:2:0/4:2:2/4:4:4 support and a Rust/C API; in most community comparisons it trails SVT-AV1 and aomenc in efficiency.
- Community forks such as SVT-AV1-HDR, SVT-AV1-Essential and the aomenc forks change defaults and add perceptual tuning. Their options look like mainline’s but do not always mean the same thing; read each fork’s documentation.
- Hardware encoders (NVENC on RTX 40 and later, Quick Sync on Intel Arc and Core Ultra integrated graphics, AMF on RX 7000 and later) are fast enough for live streaming and recording, but need more bitrate than slow software presets for the same quality.
Av1an splits a video into scenes and runs several encoder instances in parallel, which is how many people get good throughput out of aomenc and rav1e.
Decoders and playback support
Section titled “Decoders and playback support”Software: dav1d is the fast, widely used software decoder (FFmpeg, VLC, mpv, Chrome and Firefox all use it). libaom also decodes, but slower.
Hardware decode for Main profile 8/10-bit is available on:
| Vendor | AV1 decode from |
|---|---|
| NVIDIA | GeForce RTX 30 (Ampere) |
| AMD | Radeon RX 6000 (RDNA 2), except the RX 6400/6500 XT (Navi 24) |
| Intel | Xe graphics (11th-gen Core) and Arc |
| Apple | A17 Pro and M3 |
| Android SoCs | MediaTek Dimensity 1000 (2020), Google Tensor, Snapdragon 8 Gen 2 |
Hardware encoders are listed under encoders above.
Browsers: Chrome and Firefox play AV1 in software or hardware. Safari supports AV1 only on Apple devices with AV1 hardware decode. See video codec support for codec strings and probes.
Containers and HDR
Section titled “Containers and HDR”| Relationship | Project or format | Evidence and scope | Status |
|---|---|---|---|
| Carried By | ISO Base Media File Format | Uses the av01 sample entry and av1C configuration box.Scope: Container Mapping · Sources: AV1 Codec ISO Media File Format Binding | Normative |
| Carried By | Matroska | Uses the V_AV1 Codec ID and an AV1CodecConfigurationRecord in CodecPrivate.Scope: Container Mapping · Sources: Matroska codec mappings | Normative |
| Carried By | WebM | AV1-in-WebM is implemented in common tools, but the current public WebM codec list does not document it.Scope: Container Mapping · Sources: WebM container guidelines, Matroska codec mappings | Common Implementation |
- MP4/ISOBMFF:
av01sample entry with anav1Cconfiguration box, per AOMedia’s ISOBMFF binding. - Matroska: codec ID
V_AV1. WebM: AV1 in WebM is widely supported by browsers and muxers, although the WebM container guidelines still only list VP8 and VP9. - IVF and raw OBU (
.obu) files are what standalone encoders write; remux them into MP4 or MKV for playback.
AV1 signals colour with the standard CICP values (primaries, transfer, matrix, range) in the sequence header and carries HDR10 mastering-display and content-light metadata in metadata OBUs. HDR10+ uses ITU-T T.35 metadata OBUs (AOMedia spec), and Dolby Vision has an AV1-based profile (profile 10). HLG needs only the transfer characteristic.
| Relationship | Project or format | Evidence and scope | Status |
|---|---|---|---|
| Signals | HDR10 | AV1 carries CICP color signaling plus mastering-display and content-light metadata.Scope: Bitstream · Sources: AV1 Bitstream & Decoding Process Specification | Normative |
| Signals | HDR10+ | HDR10+ metadata is carried in an AV1 ITU-T T.35 Metadata OBU.Scope: Bitstream · Sources: HDR10+ Metadata Handling Specification for AV1 | Normative |
| Signals | Hybrid Log-Gamma | HLG can be identified through CICP transfer characteristic 18; application support is separate.Scope: Bitstream · Sources: AV1 Bitstream & Decoding Process Specification | Normative |
Licensing
Section titled “Licensing”AV1 is licensed royalty-free under the AOMedia patent license, which every AOMedia member grants for its essential patents. Third parties dispute that this covers everything: Sisvel has run an AV1 (and VP9) patent pool for device makers since 2019, and Avanci Video, launched in 2023, licenses streaming services for AV1 among other codecs. A European Commission antitrust inquiry into AOMedia’s licensing policy was closed in 2023 without a decision against it.
Pitfalls
Section titled “Pitfalls”- Grain and dark scenes. Low-bitrate AV1 encodes tend to smear fine grain and texture and band in dark gradients. Encode at 10-bit, use the encoder’s psychovisual tuning, and consider film grain synthesis for grainy sources.
- Metrics with grain synthesis. Disable grain synthesis when comparing encoders with metrics, or compare by eye.
- 4:2:2/4:4:4 output needs aomenc or rav1e, and will usually only play in software.
- Software decode on weak devices. 4K or high-frame-rate 10-bit AV1 can stutter on older phones and laptops without AV1 hardware; keep an H.264 or HEVC rendition for them.