Neatbo.

Extract every ICO variant

Recover every stored ICO entry as an exact-payload single ICO and unscaled PNG, preserving equal-size variants, depth, order and full hashes.

Browser-local processingInputOne local ICO originalOutputEvery single ICO/PNG with original and complete JSON/CSV ZIPUp to 20 MiB per file · File limit: 1
  1. 1Add input
  2. 2Review and run
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

Up to 20 MiB per file · File limit: 1

    Preparing the tool…

    Before you start

    Select one local ICO and recover every directory entry in its original order, including different images at the same size or depth. Download the original, one exact-payload ICO and unscaled PNG per entry, plus complete JSON/CSV in one ZIP.

    How to use this tool

    1. Select one existing ICO and keep a separate original.
    2. Run and inspect every size, stored depth, container and offset row.
    3. Download ico-variants.zip and choose the entry-NNNN PNG or exact-payload ICO you need.
    4. Use the complete JSON/CSV to audit original payloads, alpha policy, gaps and hashes.

    Supported inputs and limits

    One ICO file up to 20 MiB, with 1–256 entries and a filename up to 512 UTF-16 units. Entry dimensions are 1–256 pixels; a zero directory byte means 256. CUR, ANI and other containers are unsupported.

    Each indexed payload allows 2 MiB; aggregate payloads allow 16 MiB, with at most 4194304 pixels and 10000 embedded PNG chunks. Shared or partially overlapping payloads are retained and charged separately for every directory entry. All budgets apply together.

    DIB support is limited to a 40-byte BITMAPINFOHEADER, bottom-up BI_RGB, one plane and 1/4/8/24/32-bit pixels. Palettes, row padding, exact XOR/AND sizes and directory dimensions/depth are checked. Top-down, RLE, bitfields and other headers are refused.

    For 1/4/8/24-bit DIB, the AND mask controls transparency. A 32-bit DIB retains its stored alpha, including all-zero alpha, without Windows XOR/background compositing or desktop alpha fallback. The original AND mask remains in the exact ICO payload.

    Embedded PNG support is static noninterlaced 8-bit RGB/RGBA. CRC, contiguous IDAT including empty chunks, zlib window/framing, expanded size, Adler and filters are checked before raw sample decoding with DecompressionStream. Original PNG bytes are unchanged; there is no Canvas color transform.

    Selected PLTE/gAMA/cHRM/sRGB/sBIT/pHYs/bKGD/tIME/tEXt framing, order and values are checked. Unknown private ancillary chunks remain opaque and byte exact. Other public extensions, indexed/grayscale/interlaced PNG, tRNS and APNG refuse the whole ICO; no universal PNG or color-management conformance is claimed.

    The ZIP contains original.ico, every entry-NNNN.ico, every entry-NNNN.png, ico-inventory.json and formula-safe ico-variants.csv. A 256-entry file produces 515 controlled members. The 4 MiB report and 80 MiB ZIP ceilings are dominated allocation guards, not independently reachable output promises.

    Original headers, palettes, padding and masks stay in single-entry ICOs. Generated DIB PNGs contain raw pixels without copying every DIB metadata field. Gaps and trailing bytes remain in the original with offset/length/SHA evidence. This is recovery, not anonymization or a best-quality ranking.

    Browser-local processing without upload, URL fetch, user metadata execution or remote services. A malformed or unsupported entry refuses the whole file; no partial ZIP is offered.

    Worked example

    Example input

    One 15086-byte Pillow ICO fixture named favicon.ico.
    Example options
    No parameters.

    Example output

    3 stored 32-bit variants at 16×16, 32×32 and 48×48; 3584 pixels, 15032 payload bytes and 9 complete ZIP members.

    When something does not work

    Malformed structures, unsupported profiles or exceeded budgets create no download. Correct the file or choose a supported bounded original and rerun. Cancellation discards unfinished outputs; rerun the same selected file in a fresh Worker.

    Frequently asked questions

    Does selecting every entry give the highest-quality image?

    No. Different sizes and depths can contain different artwork. The tool preserves every entry and reports stored depth without resizing, inferring quality or silently keeping the largest image.

    Do exported PNGs preserve all icon metadata?

    Embedded PNGs are byte exact. DIB-derived PNGs preserve raw RGBA samples, while the original DIB header, palette, padding and mask stay in the exact-payload single ICO and full report. No anonymization or Windows compositing is claimed.

    Documentation & further reading

    Related tools