{
  "id": 3736775,
  "title": "png2jxl: Convert PNG to lossless JPEG XL with byte-for-byte reconstruction of the original PNG",
  "url": "https://urgent.news/2026/08/27/png2jxl-convert-png-to-lossless-jpeg-xl-with-byte-for-byte",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-27T12:17:10.000Z",
  "source": {
    "name": "Lobsters",
    "slug": "lobsters",
    "url": "https://github.com/JiangJQ2000/png2jxl"
  },
  "original_language": "en",
  "account": "png2jxl is a tool that converts supported PNG images into pixel-lossless JPEG XL format. This conversion retains sufficient data to reproduce the original PNG byte-for-byte. The process undergoes automatic encoding and decoding verification against the initial source.\n\nTo avoid results larger than the source PNG, the png2jxl extension adds support to the registered JXL save handler. For PNG images backed by a path, the original bytes are retrieved from image.filename. If the image is loaded from a stream or modified in memory, the original bytes must be supplied explicitly using the source_png parameter.\n\nThe conversion process maintains the usual JXL/JPEG behavior, continuing to delegate tasks to pillow_jxl. Duplicate palette entries are permissible during the conversion. Public functions accept an immutable ResourceLimits value, with default settings permitting input and output sizes of up to 1 GiB and 512 MiB of filtered plaintext or preflate corrections, respectively.\n\nWhile some color, transparency, or ancillary-metadata behaviors may be limited by the upstream pillow_jxl encoder, the original PNG bytes remain reconstructable. It's important to note that jxl_to_png currently trusts JXL input, as the upstream decoder fails to provide a dimension-only preflight before pixel allocation. In summary, png2jxl converts PNG to lossless JPEG XL while ensuring a byte-for-byte reconstruction of the original image.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}