{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-17",
  "slug": "compression-dictionary",
  "term": "Compression dictionary",
  "aliases": [
    "External compression dictionary"
  ],
  "definition": "A compression dictionary supplies reusable prior content or coding state that an encoder and decoder use to represent data more compactly.",
  "note": "Zstandard accepts raw-content and formatted dictionaries. A zero result from ZSTD_getDictID_fromFrame can mean no dependency, an omitted identifier, insufficient header bytes or invalid input; it is not proof that a dictionary is unnecessary. [zstd-api]\n\nA measured raw-dictionary example decoded to incorrect bytes with a successful exit when the wrong dictionary was supplied and the content checksum was absent. The checked version rejected that mismatch. Preserving dictionary identity is part of the restore contract. [hesela-zstd]\n\nA separate formatted-dictionary experiment retained ID 123456 while changing one content byte. With no verified checksum, decoding succeeded with wrong bytes; changing only the ID instead triggered an ID mismatch. A numeric ID is a selection check, not a digest of the dictionary. [hesela-zstd]",
  "related": [
    "zstandard",
    "backup-manifest",
    "restore-test",
    "cryptographic-hash",
    "zstandard-dictionary-id"
  ],
  "citations": [
    {
      "id": "zstd-api",
      "title": "Zstandard v1.5.7 API manual: dictionary identification and decompression",
      "url": "https://github.com/facebook/zstd/blob/v1.5.7/doc/zstd_manual.html",
      "accessed": "2026-10-17"
    },
    {
      "id": "hesela-zstd",
      "title": "Hesela: Compressed archives, dictionary dependencies and validation coverage",
      "url": "https://hesela.com/analyses/compressed-archives-dictionary-dependencies/",
      "accessed": "2026-10-17"
    }
  ],
  "provenance": [
    "Separate raw-content and formatted-dictionary experiments use deliberate dependency mutations on one CLI build, not a measured field-failure rate or naturally occurring ID/hash collision."
  ]
}
