{
  "schemaVersion": 1,
  "contentVersion": "ca42e61ede0a24f789d7287a0001244ad22f4abf",
  "id": "docs/tools/software-encoders/uvg266",
  "collection": "docs",
  "title": "uvg266",
  "description": "uvg266 is Ultra Video Group's BSD-licensed H.266 / VVC encoder, derived from Kvazaar, with x264-style presets and a simple command line.",
  "canonicalUrl": "https://encode.wiki/tools/software-encoders/uvg266/",
  "apiUrl": "https://encode.wiki/api/v1/documents/docs/tools/software-encoders/uvg266.json",
  "markdownUrl": "https://encode.wiki/api/v1/markdown/docs/tools/software-encoders/uvg266.md",
  "status": "current",
  "tags": [
    "migrated"
  ],
  "license": "CC BY-SA 4.0",
  "dates": {
    "lastVerified": "2026-10-08T00:00:00.000Z"
  },
  "authors": [],
  "sources": [
    {
      "title": "uvg266 repository and README (master)",
      "url": "https://github.com/ultravideo/uvg266",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "uvg266 v0.8.1 release",
      "url": "https://github.com/ultravideo/uvg266/releases/tag/v0.8.1",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "uvg266 build options (CMakeLists.txt, master)",
      "url": "https://github.com/ultravideo/uvg266/blob/master/CMakeLists.txt",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    }
  ],
  "provenance": {
    "originUrl": "https://github.com/av1-community-contributors/codec-wiki/blob/37c3317fd058b23c71a87679bed5619a98f77752/docs/encoders/uvg266.mdx",
    "originCommit": "37c3317fd058b23c71a87679bed5619a98f77752",
    "migratedAt": "2026-08-21T00:00:00.000Z",
    "modified": true,
    "originPath": "docs/encoders/uvg266.mdx"
  },
  "headings": [
    {
      "depth": 2,
      "text": "Get it",
      "anchor": "get-it"
    },
    {
      "depth": 2,
      "text": "Encode",
      "anchor": "encode"
    },
    {
      "depth": 2,
      "text": "Options that matter",
      "anchor": "options-that-matter"
    }
  ],
  "sections": [
    {
      "id": "_preamble",
      "title": "Page introduction",
      "depth": 0,
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uvg266/",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/_preamble.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/_preamble.md",
      "checksum": "9d3cadfd940c4295e7dc3693fbe36c74ef3a388802330183254ae348ba68abf7",
      "bytes": 923
    },
    {
      "id": "get-it",
      "title": "Get it",
      "depth": 2,
      "anchor": "get-it",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uvg266/#get-it",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/get-it.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/get-it.md",
      "checksum": "276b1a55251727255e0e08ed2f42eb114c035bd2719d842913be5d7480caf69d",
      "bytes": 672
    },
    {
      "id": "encode",
      "title": "Encode",
      "depth": 2,
      "anchor": "encode",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uvg266/#encode",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/encode.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/encode.md",
      "checksum": "414bbdb87aaea5a5165768a750204ecad162dd5604c5bb51e5ae79c6baef86e3",
      "bytes": 872
    },
    {
      "id": "options-that-matter",
      "title": "Options that matter",
      "depth": 2,
      "anchor": "options-that-matter",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uvg266/#options-that-matter",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/options-that-matter.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uvg266/options-that-matter.md",
      "checksum": "3a5462894e12fc4d06a9ed9f1e17a9657b25fcf84f0867a1f503c0aacf642bdc",
      "bytes": 1233
    }
  ],
  "outboundReferences": [
    "/codecs/video/vvc/",
    "/tools/software-encoders/kvazaar/",
    "/tools/software-encoders/vvenc/",
    "/tools/utilities/mp4box/",
    "https://github.com/fraunhoferhhi/vvdec",
    "https://github.com/ultravideo/uvg266",
    "https://github.com/ultravideo/uvg266/releases/tag/v0.8.1",
    "https://ultravideo.fi/"
  ],
  "checksum": "98a0d1246d3927cbc0ca0163880bf5b06645aa2ea5dc31badf90e7c8f1422cc2",
  "contentFormat": "markdown",
  "markdown": "> **Repository:** [ultravideo/uvg266](https://github.com/ultravideo/uvg266). An open-source VVC encoder based on Kvazaar. Latest release: [v0.8.1](https://github.com/ultravideo/uvg266/releases/tag/v0.8.1), Jul 1, 2024. Last commit: Apr 24, 2026. License: BSD-3-Clause. Stars: 296.\n\n[uvg266](https://github.com/ultravideo/uvg266) is an open-source C encoder for [H.266 / VVC](/codecs/video/vvc/) from Tampere University's [Ultra Video Group](https://ultravideo.fi/). It is derived from their HEVC encoder [Kvazaar](/tools/software-encoders/kvazaar/), uses x264-style preset names, and is BSD-3-Clause licensed. The README still describes it as under development with speed and rate-distortion performance improving.\n\nFor serious VVC work [VVenC](/tools/software-encoders/vvenc/) is the encoder with FFmpeg integration and perceptual optimisation, but uvg266 is a quick, simple alternative with a Kvazaar-style command line.\n\n## Get it\n\nThere are no official binaries. The last tagged release is v0.8.1 (July 2024), but `master` has had newer work, including a rewritten CMake build in April 2026. Build from `master` unless you need the tag:\n\n```sh\ngit clone https://github.com/ultravideo/uvg266.git\ncmake -S uvg266 -B uvg266/build -DCMAKE_BUILD_TYPE=Release\ncmake --build uvg266/build --parallel\n```\n\nThe binary is `uvg266/build/bin/uvg266`.\n\n> **Caution.**\n>\n> The default build is **8-bit only**. Passing `--input-bitdepth 10` to it fails with a usage error. For 10-bit input and output, configure with `-DUVG_BIT_DEPTH=10`; that build then codes everything, 8-bit sources included, as 10-bit.\n## Encode\n\n```sh\nuvg266 -i input.y4m --preset medium --qp 30 -o output.266\n```\n\nY4M input carries its own resolution and frame rate. Raw YUV needs `--input-res=1920x1080 --input-fps 24` (and `--input-bitdepth 10` on a 10-bit build). To feed it from FFmpeg:\n\n```sh\nffmpeg -i input.mkv -f yuv4mpegpipe - | uvg266 -i - --input-file-format y4m -o output.266\n```\n\nFor 10-bit sources, use `-pix_fmt yuv420p10le -strict -1` in FFmpeg (it refuses to write 10-bit Y4M otherwise) and add `--input-bitdepth 10`. uvg266 ignores the bit depth in the Y4M header: without that option a 10-bit build reads 10-bit input as 8-bit and silently encodes garbage.\n\nThe output is a bare VVC stream. Wrap it with `ffmpeg -framerate 24 -i output.266 -c copy output.mp4` or [MP4Box](/tools/utilities/mp4box/), and decode with FFmpeg 7.1 or newer or [VVdeC](https://github.com/fraunhoferhhi/vvdec).\n\n## Options that matter\n\n| Option           | Default      | Notes                                                                                      |\n| ---------------- | ------------ | ------------------------------------------------------------------------------------------ |\n| `--preset`       | `medium`     | `ultrafast` … `veryslow`, `placebo`, as in x264. The README has the per-preset tool table. |\n| `-q`, `--qp`     | `22`         | Fixed quantizer. There is no CRF mode; the rate–quality trade-off is set by QP.            |\n| `--bitrate`      | `0` (off)    | Target bits per second; enables rate control. `--rc-algorithm` picks `lambda` or `oba`.    |\n| `-p`, `--period` | `64`         | Intra period in frames (`0` = first frame only, `1` = all intra).                          |\n| `--gop`          | preset-based | `8` or `16` for B-frame pyramids, or `lp-…` for low-delay structures.                      |\n| `-r`, `--ref`    | preset-based | Reference frames, 1–15.                                                                    |\n| `--threads`      | auto         | Number of encoder threads.                                                                 |\n\nRun `uvg266 --help` for the full list.\n"
}
