{
  "schemaVersion": 1,
  "contentVersion": "ca42e61ede0a24f789d7287a0001244ad22f4abf",
  "id": "docs/codecs/images/heic",
  "collection": "docs",
  "title": "HEIC",
  "description": "HEIC is HEVC-coded images in a HEIF container, the default photo format on Apple devices but patent-encumbered and poorly supported elsewhere.",
  "canonicalUrl": "https://encode.wiki/codecs/images/heic/",
  "apiUrl": "https://encode.wiki/api/v1/documents/docs/codecs/images/heic.json",
  "markdownUrl": "https://encode.wiki/api/v1/markdown/docs/codecs/images/heic.md",
  "status": "current",
  "tags": [
    "migrated"
  ],
  "license": "CC BY-SA 4.0",
  "dates": {
    "lastVerified": "2026-10-08T00:00:00.000Z"
  },
  "authors": [],
  "sources": [
    {
      "title": "libheif v1.23.6 heif-enc option registration",
      "url": "https://github.com/strukturag/libheif/blob/v1.23.6/examples/heif_enc.cc",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "libheif v1.23.6 x265 plugin",
      "url": "https://github.com/strukturag/libheif/blob/v1.23.6/libheif/plugins/encoder_x265.cc",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "libheif v1.23.6 release",
      "url": "https://github.com/strukturag/libheif/releases/tag/v1.23.6",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "ISO/IEC 23008-12 HEIF",
      "url": "https://www.iso.org/standard/89035.html",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "Safari 17 features",
      "url": "https://webkit.org/blog/14445/webkit-features-in-safari-17-0/",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "Android supported media formats",
      "url": "https://developer.android.com/media/platform/supported-formats",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "caniuse HEIF/HEIC",
      "url": "https://caniuse.com/heif",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "Access Advance HEVC Advance pool",
      "url": "https://accessadvance.com/licensing-programs/hevc-advance/",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    }
  ],
  "provenance": {
    "originUrl": "https://github.com/av1-community-contributors/codec-wiki/blob/37c3317fd058b23c71a87679bed5619a98f77752/docs/images/HEIC.mdx",
    "originCommit": "37c3317fd058b23c71a87679bed5619a98f77752",
    "migratedAt": "2026-08-21T00:00:00.000Z",
    "modified": true,
    "originPath": "docs/images/HEIC.mdx"
  },
  "headings": [
    {
      "depth": 2,
      "text": "Format basics",
      "anchor": "format-basics"
    },
    {
      "depth": 2,
      "text": "Support",
      "anchor": "support"
    },
    {
      "depth": 2,
      "text": "Convert and encode with libheif",
      "anchor": "convert-and-encode-with-libheif"
    },
    {
      "depth": 2,
      "text": "Pitfalls",
      "anchor": "pitfalls"
    },
    {
      "depth": 2,
      "text": "Related pages",
      "anchor": "related-pages"
    },
    {
      "depth": 2,
      "text": "Full option reference",
      "anchor": "full-option-reference"
    },
    {
      "depth": 2,
      "text": "heif-enc 1.23.6 complete frontend reference",
      "anchor": "heif-enc-1236-complete-frontend-reference"
    },
    {
      "depth": 3,
      "text": "libheif x265 plugin parameters",
      "anchor": "libheif-x265-plugin-parameters"
    },
    {
      "depth": 3,
      "text": "Optional libheif Kvazaar plugin parameters",
      "anchor": "optional-libheif-kvazaar-plugin-parameters"
    }
  ],
  "sections": [
    {
      "id": "_preamble",
      "title": "Page introduction",
      "depth": 0,
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/_preamble.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/_preamble.md",
      "checksum": "78b592464f1a274f3a829e0afce6794d5bc35b8cbef4bae463deda90c24e07c4",
      "bytes": 709
    },
    {
      "id": "format-basics",
      "title": "Format basics",
      "depth": 2,
      "anchor": "format-basics",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#format-basics",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/format-basics.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/format-basics.md",
      "checksum": "5639859bbc7490e0e46b873e691757693f5d404e3b2a503c52ba0a44231cc0ef",
      "bytes": 1254
    },
    {
      "id": "support",
      "title": "Support",
      "depth": 2,
      "anchor": "support",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#support",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/support.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/support.md",
      "checksum": "2d9d94596e965e582441e0cad69bf92f888ccd0db6a9ada285b5387999f755ec",
      "bytes": 1472
    },
    {
      "id": "convert-and-encode-with-libheif",
      "title": "Convert and encode with libheif",
      "depth": 2,
      "anchor": "convert-and-encode-with-libheif",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#convert-and-encode-with-libheif",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/convert-and-encode-with-libheif.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/convert-and-encode-with-libheif.md",
      "checksum": "ec3877191bc3b97633782a53d2683c1cd0c6fcc26c88998b158fdba6cc641747",
      "bytes": 2485
    },
    {
      "id": "pitfalls",
      "title": "Pitfalls",
      "depth": 2,
      "anchor": "pitfalls",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#pitfalls",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/pitfalls.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/pitfalls.md",
      "checksum": "f310013d4a6f15d229bd859155479cbc008bf6cfc64a2060b4243049d628f5c6",
      "bytes": 723
    },
    {
      "id": "related-pages",
      "title": "Related pages",
      "depth": 2,
      "anchor": "related-pages",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#related-pages",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/related-pages.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/related-pages.md",
      "checksum": "00997984ef6b4da9c9b7442dd980a4ba22b0c988b0aa2b8b00d7fad6a45a3601",
      "bytes": 342
    },
    {
      "id": "full-option-reference",
      "title": "Full option reference",
      "depth": 2,
      "anchor": "full-option-reference",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#full-option-reference",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/full-option-reference.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/full-option-reference.md",
      "checksum": "cbc27a7dce3c736ea8ff19137065aa5da6f26e1bfc10e09095ced7d7af4cdb2d",
      "bytes": 204
    },
    {
      "id": "heif-enc-1236-complete-frontend-reference",
      "title": "heif-enc 1.23.6 complete frontend reference",
      "depth": 2,
      "anchor": "heif-enc-1236-complete-frontend-reference",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#heif-enc-1236-complete-frontend-reference",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/heif-enc-1236-complete-frontend-reference.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/heif-enc-1236-complete-frontend-reference.md",
      "checksum": "6ea780d9f10c2b317577f3c1bbfec32ca7ba3eb263d7ac0a28eac4a673c1719d",
      "bytes": 19186
    },
    {
      "id": "libheif-x265-plugin-parameters",
      "title": "libheif x265 plugin parameters",
      "depth": 3,
      "anchor": "libheif-x265-plugin-parameters",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#libheif-x265-plugin-parameters",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/libheif-x265-plugin-parameters.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/libheif-x265-plugin-parameters.md",
      "checksum": "e2a499009c02e47ef5c1c2072647428b1c2b317d8c3361a07df3296a7ed6fd92",
      "bytes": 1419
    },
    {
      "id": "optional-libheif-kvazaar-plugin-parameters",
      "title": "Optional libheif Kvazaar plugin parameters",
      "depth": 3,
      "anchor": "optional-libheif-kvazaar-plugin-parameters",
      "canonicalUrl": "https://encode.wiki/codecs/images/heic/#optional-libheif-kvazaar-plugin-parameters",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/optional-libheif-kvazaar-plugin-parameters.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/codecs/images/heic/optional-libheif-kvazaar-plugin-parameters.md",
      "checksum": "3d3403de987ea6aac00d0d3698cfe2b471a46b56ca824843a846acdebefacd7a",
      "bytes": 650
    }
  ],
  "outboundReferences": [
    "/codecs/images/avif/",
    "/codecs/images/jpeg/",
    "/codecs/images/jxl/",
    "/codecs/video/hevc/",
    "/reference/encoder-parameters/",
    "/reference/image-audio-support/",
    "/tools/software-encoders/x265/",
    "https://accessadvance.com/licensing-programs/hevc-advance/",
    "https://caniuse.com/heif",
    "https://developer.android.com/media/platform/supported-formats",
    "https://github.com/strukturag/libheif",
    "https://webkit.org/blog/14445/webkit-features-in-safari-17-0/"
  ],
  "checksum": "7b999b88756f426f1e1601d432df9445aafea5e9d3cb09cd2a74ee89a936a5f1",
  "contentFormat": "markdown",
  "markdown": "HEIC is HEVC (H.265) intra-frame coding stored in a HEIF container. It is the default photo format on iPhones and iPads (Settings ▸ Camera ▸ Formats ▸ High Efficiency), and it is noticeably smaller than JPEG at similar quality. Outside Apple's ecosystem it is awkward: HEVC is patent-encumbered, so browsers, most Windows installs and many web services do not decode it.\n\nFor anything you publish, convert it. [AVIF](/codecs/images/avif/) uses the same HEIF container with royalty-free AV1 and has far wider support, and [JPEG XL](/codecs/images/jxl/) and [JPEG](/codecs/images/jpeg/) cover the other cases. HEIC is a capture and interchange format: read it and convert it, don't author it for the web.\n\n## Format basics\n\n- **HEIF** (ISO/IEC 23008-12) is the container: a primary image, thumbnails, auxiliary images (alpha, depth), grids of tiles, collections, transformations (rotate, crop, mirror), metadata (Exif, XMP, ICC/nclx) and image sequences. **HEIC** is HEIF carrying HEVC. HEIF can also carry AV1 (AVIF), AVC, JPEG, VVC and others.\n- **HEVC profiles.** Phones use Main (8-bit 4:2:0) or Main 10 (10-bit 4:2:0, used for HDR). 4:2:2 and 4:4:4 need range-extension profiles that many hardware decoders and viewers lack.\n- **Lossless exists** (HEVC lossless tools), but it is not widely used and files are large; use PNG or JPEG XL.\n- **Alpha and depth** are separate auxiliary image items, not a fourth channel. Exporters and converters often drop them, and a plain converted copy loses portrait-mode depth maps and Live Photo relationships.\n- Not royalty-free. HEVC is licensed through patent pools such as [Access Advance](https://accessadvance.com/licensing-programs/hevc-advance/) and others, and some patent holders are not in any pool. Apps that use the operating system's codec rely on the OS vendor's licence; an app that ships its own HEVC decoder or encoder may need its own. libheif is LGPL, x265 is GPL, and neither licenses the patents.\n\n## Support\n\n| Platform            | HEIC                                                                                                                                              |\n| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Safari, iOS, macOS  | Safari 17+ displays HEIC ([Safari 17 notes](https://webkit.org/blog/14445/webkit-features-in-safari-17-0/)); the OS and Photos have supported it for years. |\n| Chrome, Edge, Firefox | No `<img>` support ([caniuse](https://caniuse.com/heif)); serve a JPEG/AVIF/WebP version.                                                        |\n| Android             | Decoding since Android 9 (device optional; 10-bit also needs HEVC Main 10), encoding via `MediaCodec`/`HeifWriter` from Android 10 ([supported formats](https://developer.android.com/media/platform/supported-formats)). |\n| Windows             | Needs the HEIF Image Extensions and HEVC Video Extensions from the Microsoft Store.                                                               |\n| Linux               | Via libheif with libde265 or FFmpeg for decoding; most distributions package it.                                                                  |\n\nSee [image and audio support](/reference/image-audio-support/) for how to test a given file. Upload forms, CDNs and CMSes frequently reject HEIC even when the OS opens it.\n\n## Convert and encode with libheif\n\n[libheif](https://github.com/strukturag/libheif) provides `heif-enc`, `heif-dec` and `heif-info`. Codecs are plugins: `heif-enc --list-encoders` shows what your build has (x265 for HEVC; aom, SVT-AV1 and rav1e for AVIF).\n\n```sh\nheif-dec photo.heic photo.jpg\nheif-dec -q 90 photo.heic photo.jpg\nheif-enc -q 75 input.png output.heic\nheif-info output.heic\n```\n\n`heif-dec` chooses the output format from the extension (jpg, png, tif, webp, y4m); `-q` is the JPEG quality. `heif-enc` defaults to HEVC through x265 at quality 50; its quality scale is not comparable to JPEG's or AVIF's, so pick a value by eye.\n\n| Option                            | What it does                                                                                              |\n| --------------------------------- | --------------------------------------------------------------------------------------------------------- |\n| `-q 0..100`                       | Lossy quality (default 50).                                                                                |\n| `-L`                              | Lossless; also switches to RGB (identity matrix) so pixels survive.                                       |\n| `-p chroma=444`                   | x265 plugin chroma format (420 default, also 422 or 444).                                                 |\n| `-b 9..16`                        | Bit depth taken from a **16-bit PNG** input (default 10); 8-bit inputs stay 8-bit.                        |\n| `-p preset=…`, `-p tune=…`        | x265 preset (default `slow`) and tune (default `ssim`; also `psnr`, `grain`, `fastdecode`).                |\n| `-p x265:KEY=VALUE`               | Pass any x265 parameter through.                                                                          |\n| `-A` / `--avif`                   | Encode AVIF instead; the AV1 plugin parameters are in the [AVIF page](/codecs/images/avif/).              |\n| `--color-profile`, `--clli`       | Set nclx colour signalling and HDR light-level metadata.                                                  |\n| `-t N`, `--no-alpha`              | Embed a thumbnail of maximum size N; drop alpha.                                                          |\n| `-S`, `--sequence`                | Write an image sequence (animation) from several inputs.                                                  |\n\nImageMagick (`magick in.heic out.jpg`) and many photo tools use libheif underneath.\n\n## Pitfalls\n\n- **Grids.** Phone photos are often stored as a grid of tiles; naive extractors give you only one tile. Use libheif-based tools.\n- **Metadata on conversion.** Exif, ICC and HDR information survive only if the converter carries them over. Check orientation and colour after converting.\n- **HDR.** Apple's HDR photos carry an extra gain-map image; a converter that ignores it gives you only the SDR rendering.\n- **Chroma.** HEVC for stills is almost always 4:2:0. If you encode screenshots, coloured text or line art, use `-p chroma=444` or a different format.\n- **Licensing for software.** Shipping x265-based encoding in a closed-source or commercial product has GPL and patent implications; AVIF avoids both.\n\n## Related pages\n\n- [AVIF](/codecs/images/avif/) is the royalty-free AV1 sibling in the same container and the usual target format.\n- [HEVC](/codecs/video/hevc/) is the video codec underneath.\n- [JPEG XL](/codecs/images/jxl/) covers HDR and lossless without patents.\n- [x265](/tools/software-encoders/x265/) is the encoder behind `heif-enc`.\n\n## Full option reference\n\nThe tables below are the full `heif-enc` and plugin parameter references for libheif 1.23.6. [Reading option tables](/reference/encoder-parameters/) explains the Default column.\n\n## heif-enc 1.23.6 complete frontend reference\n\n<details>\n<summary>INPUT to --avc</summary>\n\n| Parameter / aliases | Type or accepted values       | Default                                                | Purpose and constraints                                                                                                               |\n| ------------------- | ----------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |\n| `INPUT`             | path(s)                       | required for encoding                                  | One or more input images. Several inputs go into one file as separate images, not an animation (use --sequence for that). |\n| `OUTPUT`            | optional path                 | derived from first input | Output file. The suffix (.heic, .avif) picks the codec when no codec switch is given. |\n| `--help`, `-h`      | action                        | not requested                                          | Print usage. Hides several registered switches that are listed below. |\n| `--version`, `-v`   | action                        | not requested                                          | Print the heif-enc and libheif versions. Lowercase -v is not verbose. |\n| `--quality`, `-q`   | integer 0–100                 | 50                                                     | Lossy quality passed to the selected encoder plugin. Not comparable across plugins or with avifenc. |\n| `--output`, `-o`    | path                          | derived from first input | Output filename. Without it, the name is derived from the first input. |\n| `--lossless`, `-L`  | flag                          | false                                                  | Lossless coding with identity matrix (RGB). Plugins without lossless support fall back to lossy with a warning. |\n| `--thumb`, `-t`     | positive maximum dimension    | 0: disabled                                            | Add a thumbnail whose longer side is at most this many pixels. |\n| `--verbose`         | repeatable flag               | 0 repetitions                                          | More codec logging. Repeat for more detail. |\n| `--params`, `-P`    | action                        | not requested                                          | List the selected plugin's parameters and exit. |\n| `--no-alpha`        | flag                          | false: master alpha saved                              | Drop the alpha channel from the main image. |\n| `--no-thumb-alpha`  | flag                          | false: thumbnail alpha saved                           | Drop the alpha channel from the thumbnail only. |\n| `--list-encoders`   | action                        | not requested                                          | List the encoder plugins in this build, per codec. |\n| `--encoder`, `-e`   | plugin ID                     | highest-priority plugin for the codec | Pick an encoder plugin by ID from --list-encoders (for example x265, aom, svt, rav1e). |\n| `--bit-depth`, `-b` | integer 9–16 | 10 | Bits kept from 16-bit PNG or TIFF input (9–16). The encoder plugin limits the coded depth (x265: 8, 10 or 12). |\n| `--avif`, `-A`      | flag                          | false | Encode as AVIF (AV1). Not needed when the output name ends in .avif. |\n| `--hevc` | flag | false (HEVC is the fallback) | Encode as HEVC (HEIC). HEVC is also used when no codec flag is given and the output suffix names no other codec. |\n| `--vvc`             | flag                          | false                                                  | Encode VVC. Experimental; needs a VVC plugin. |\n| `--avc`             | flag                          | false                                                  | Encode AVC (H.264, x264 plugin). Experimental. |\n\n</details>\n\n<details>\n<summary>--jpeg to --benchmark</summary>\n\n| Parameter / aliases         | Type or accepted values                  | Default                      | Purpose and constraints                                                                              |\n| --------------------------- | ---------------------------------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `--jpeg`                    | flag                                     | false                        | Store JPEG-coded data inside HEIF. This does not write a plain .jpg. |\n| `--jpeg2000`                | flag                                     | false                        | Store JPEG 2000 data inside HEIF. Experimental; needs an OpenJPEG plugin. |\n| `--htj2k`                   | flag                                     | false                        | Store High Throughput JPEG 2000 data inside HEIF. Experimental; needs an OpenJPH plugin. |\n| `--uncompressed`, `-U`      | build-gated flag                         | false                        | Store raw pixels (HEIF uncompressed codec). Only in builds with WITH_UNCOMPRESSED_CODEC. |\n| `--unci-compression-method` | none, brotli, deflate, zlib              | zlib                         | Compression for uncompressed-codec payloads. Needs an uncompressed-codec build. |\n| `--component-content-ids`   | build-gated flag                         | false                        | Write component content IDs for uncompressed images. Needs uncompressed and experimental builds. |\n| `--color-profile`           | custom, auto, compatible, 601, 709, 2020 | custom                       | NCLX preset: custom uses the flags below, auto guesses from the input, compatible avoids rarely implemented values, 601/709/2020 are fixed presets. |\n| `--matrix_coefficients`     | H.273 integer                            | 6                            | NCLX matrix coefficients (H.273) for the custom profile. 6 is BT.601; --lossless forces 0 (identity). |\n| `--colour_primaries`        | H.273 integer                            | 1                            | NCLX colour primaries (H.273) for the custom profile. 1 is BT.709/sRGB. |\n| `--transfer_characteristic` | H.273 integer                            | 13                           | NCLX transfer characteristics (H.273) for the custom profile. 13 is sRGB. |\n| `--full_range_flag`         | 0 or 1                                   | 1                            | NCLX range for the custom profile: 1 full range, 0 limited. |\n| `--enable-two-colr-boxes`   | flag                                     | false                        | Write both ICC and NCLX profiles when the input has both. |\n| `--clli`                    | two 16-bit unsigned values               | absent                       | Set MaxCLL,MaxPALL (cd/m², 16-bit values) content light level metadata. Metadata only; no HDR conversion. |\n| `--pasp`                    | two unsigned spacing values              | absent                       | Set pixel aspect ratio as h,v. Metadata only; pixels aren't resampled. |\n| `--premultiplied-alpha`     | flag                                     | false                        | Tell the encoder the input alpha is already premultiplied. Doesn't premultiply the input. |\n| `--rotate-cw`               | 0, 90, 180 or 270                        | 0                            | Store a clockwise rotation (0, 90, 180, 270) as a transform; pixels are not rewritten. |\n| `--flip-h`                  | flag                                     | false                        | Store a horizontal flip as a transform. |\n| `--flip-v`                  | flag                                     | false                        | Store a vertical flip as a transform. |\n| `--plugin-directory`        | directory path                           | default plugin path | Load encoder plugins from this directory in addition to the default search path. |\n| `--benchmark`               | flag                                     | false                        | Print encoding time, PSNR and output size. |\n\n</details>\n\n<details>\n<summary>--enable-metadata-compression to --metadata-track-uri</summary>\n\n| Parameter / aliases             | Type or accepted values                  | Default                                 | Purpose and constraints                                                                         |\n| ------------------------------- | ---------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------- |\n| `--enable-metadata-compression` | auto, off, deflate, zlib, brotli | off | Compress metadata items. Experimental; listed in --help only in builds with header compression. |\n| `--pitm-description`            | text                                     | empty                                   | Text description attached to the primary image. Experimental. |\n| `--chroma-downsampling`, `-C` | nn, nearest-neighbor, average, sharp-yuv | average (preferred, not forced) | RGB-to-YUV chroma downsampling: nn (nearest-neighbor), average or sharp-yuv (needs libsharpyuv). Without -C, libheif prefers average but may use another method; -C forces the choice. |\n| `--cut-tiles`                   | positive side length                     | 0: disabled                             | Split the input into square tiles of this many pixels per side and store it as a tiled image. |\n| `--tiled-input`, `-T`           | flag                                     | false                                   | Read a tile set from numbered files (for example tile-01-05.jpg); give one filename and the rest are found. |\n| `--tiled-image-width`           | positive pixels                          | 0: infer from tiles                     | Override the total width of a tiled image, in pixels. |\n| `--tiled-image-height`          | positive pixels                          | 0: infer from tiles                     | Override the total height of a tiled image, in pixels. |\n| `--tiled-input-x-y`             | flag                                     | false: filename numbers are y,x         | Read the first number in tile filenames as x instead of y. |\n| `--tiling-method` | grid; build-gated unci/tili | grid | How tiles are stored: grid items, tili (experimental builds) or unci (builds with the uncompressed codec). |\n| `--add-pyramid-group` | flag | false | Put several input images into a multi-resolution pyramid group. Experimental; listed in --help only in experimental builds. |\n| `--sequence`, `-S`              | flag                                     | false                                   | Encode a timed image sequence; a numbered filename pulls in all files with that pattern. |\n| `--video`, `-V`                 | flag                                     | false                                   | Use a video track handler for sequence output. |\n| `--timebase`                    | positive ticks per second                | 30                                      | Sequence clock in ticks per second. |\n| `--duration`                    | positive ticks per frame                 | 1                                       | Frame duration in ticks. Seconds per frame = duration ÷ timebase. |\n| `--fps`                         | positive frame rate                      | unset | Set timebase and duration from a frame rate. 29.97 maps to 30000/1001; other fractions are rounded on a 90000-tick clock. |\n| `--repetitions`                 | positive integer or infinite             | 1                                       | How many times playback repeats, or infinite. 0 is rejected. |\n| `--max-frames`                  | positive integer                         | 0: no limit                             | Stop after this many frames. 0 is rejected. |\n| `--vmt-metadata`                | build-gated file path                    | none                                    | Video metadata track input file. Experimental; needs an experimental-features build. |\n| `--binary-metadata-track`       | build-gated flag                         | false                                   | Write the metadata track as binary. Experimental. |\n| `--metadata-track-uri`          | build-gated URI                          | vmt:metadata                            | URI identifying the metadata track. Experimental. |\n\n</details>\n\n<details>\n<summary>--add-mime-item to --</summary>\n\n| Parameter / aliases       | Type or accepted values                                 | Default                                       | Purpose and constraints                                                                   |\n| ------------------------- | ------------------------------------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------- |\n| `--add-mime-item`         | build-gated MIME type                                   | none                                          | Attach a generic MIME item of this type. Experimental. |\n| `--mime-item-file`        | build-gated payload path                                | none                                          | File holding the payload for --add-mime-item. Experimental. |\n| `--mime-item-name`        | build-gated text                                        | empty                                         | Name for the MIME item. Experimental. |\n| `--turtle`                | build-gated file path                                   | none                                          | Read RDF Turtle content-ID relationships from a file. Experimental. |\n| `--embed-turtle`          | build-gated flag                                        | false                                         | Embed the --turtle file as an item. Experimental. |\n| `--gop-structure`         | intra-only, low-delay/p, unrestricted/b                 | low-delay                                     | Prediction structure for sequences: intra-only, low-delay (P) or unrestricted (B). The plugin must support it. |\n| `--min-keyframe-distance` | nonnegative integer                                     | 0: undefined                                  | Minimum frames between keyframes in a sequence. 0 leaves it to the encoder. |\n| `--max-keyframe-distance` | nonnegative integer                                     | 0: undefined                                  | Maximum frames between keyframes in a sequence. 0 leaves it to the encoder. |\n| `--set-gimi-track-id` | text ID | none | GIMI track ID for the visual track of a sequence. Experimental; listed in --help only in experimental builds. |\n| `--sai-data-file` | file path | none | File with SAI (sample auxiliary information) data for sequence frames. Listed in --help only in experimental builds. |\n| `--omaf-image-projection` | equirectangular or cube-map                             | absent                                        | Mark the image as equirectangular or cube-map for OMAF viewers. Doesn't warp pixels. |\n| `--add-compatible-brand`  | four-character brand, repeatable                        | no added brands                               | Add a four-character compatible brand to the file. Repeatable; only add brands the file really conforms to. |\n| `--unif`                  | flag                                                    | false                                         | Use one ID namespace for items and tracks and add the unif brand. |\n| `--mini`                  | flag                                                    | false                                         | Use the compact mini box layout. Readers need explicit support. |\n| `--raw`                   | flag                                                    | false | Treat the input as raw pixel data even without a .raw/.img suffix. |\n| `--raw-width` | positive pixels | 0: derived from file size | Raw input width in pixels. Give width, height or both; a missing one is computed from the file size. |\n| `--raw-height` | positive pixels | 0: derived from file size | Raw input height in pixels. Give width, height or both; a missing one is computed from the file size. |\n| `--raw-type` | uint8/sint8/uint16/sint16/uint32/sint32/float32/float64 | none | Raw sample type: uint8, sint8, uint16, sint16, uint32, sint32, float32 or float64. Required for raw input. |\n| `--raw-endian`            | little or big                                           | little                                        | Byte order of raw samples, little or big. |\n| `-p`                      | NAME=VALUE, repeatable                                  | none                                          | Set an encoder plugin parameter as NAME=VALUE. Repeatable; prefix with the encoder name (x265:ctu=64) to reach the library's own options. |\n| `--`                | separator               | not used | End of options; everything after is an input filename. |\n\n</details>\n\n### libheif x265 plugin parameters\n\n| Parameter / aliases | Type or accepted values       | Default                         | Purpose and constraints                                                          |\n| ------------------- | ----------------------------- | ------------------------------- | -------------------------------------------------------------------------------- |\n| `quality`           | integer 0–100                 | 50                              | Lossy quality, mapped to x265 CRF. |\n| `lossless`          | boolean                       | false                           | x265 lossless mode. Use chroma=444 for exact RGB. |\n| `preset`            | x265 preset name              | slow                            | x265 speed preset. Slower presets compress better. |\n| `tune`              | psnr, ssim, grain, fastdecode | ssim                            | x265 tune. ssim is the plugin default, not x265's own default. |\n| `tu-intra-depth`    | integer 1–4                   | 2                               | Maximum intra transform-unit split depth. Higher is slower. |\n| `complexity`        | integer 0–100                 | unset | Extra effort, 0–100: 60+ enables rd 6 and rd-refine, 70+ cu-lossless, 90+ turns off WPP. Slower for small gains. |\n| `chroma`            | 420, 422 or 444               | 420                             | Chroma subsampling of the coded image. |\n\n### Optional libheif Kvazaar plugin parameters\n\n| Parameter / aliases | Type or accepted values | Default | Purpose and constraints                                                                                                  |\n| ------------------- | ----------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------ |\n| `quality`           | integer 0–100           | 50      | Lossy quality. |\n| `lossless`          | boolean                 | false   | Lossless mode. The plugin only accepts 4:2:0 for colour input, so RGB isn't preserved exactly. |\n"
}
