UnHEIClocal image lab

Correctness is testable

Open format-detector fixture corpus

27 deterministic textual fixtures exercise the same bounded parser used on the detector page. The corpus includes ordinary signatures and deliberately hostile declarations without using private user media.

Textual and reproducible

Payloads are checked-in hexadecimal or UTF-8 strings. Tests reconstruct the same bytes on every machine.

Bounded by design

The test contract caps the leading range at 65,536 bytes and the optional non-overlapping trailer at 8,192 bytes.

Classification is not decoding

Minimal container fixtures prove detector behavior. Converter output uses separate independently decodable fixtures.

valid

10 cases
valid detector fixtures
Stable IDClaimExpectedPurpose
jpeg-sof-3x2sample.jpg
image/jpeg
jpegBounded JPEG marker stream with a 3×2 SOF0 and EOI marker.
png-rgba-1x1sample.png
image/png
pngComplete 1×1 RGBA PNG with IHDR, IDAT, and IEND.
gif87a-static-1x1sample.gif
image/gif
gif / GIF87aComplete GIF87a logical screen with one image descriptor.
webp-vp8x-2x3sample.webp
image/webp
webp / VP8XRIFF WebP container with a complete VP8X canvas header.
tiff-little-endian-3x2sample.tif
image/tiff
tiff / little-endianLittle-endian TIFF with width and height LONG entries.
tiff-big-endian-3x2sample.tiff
image/tiff
tiff / big-endianBig-endian TIFF with width and height LONG entries.
bmp-infoheader-3x2sample.bmp
image/bmp
bmpBMP file and BITMAPINFOHEADER declaring a 3×2 canvas.
ico-directory-16sample.ico
image/x-icon
icoICO directory containing one 16×16 embedded resource entry.
cur-directory-32sample.cur
image/x-icon
curCUR directory containing one 32×32 embedded resource entry.
pdf-minimalsample.pdf
application/pdf
pdfSmall PDF syntax fixture with header and EOF marker.

animated

3 cases
animated detector fixtures
Stable IDClaimExpectedPurpose
gif89a-two-frameanimated.gif
image/gif
gif / GIF89aGIF89a stream with two image descriptors and a trailer.
webp-vp8x-animatedanimated.webp
image/webp
webp / VP8XVP8X WebP animation flag with an ANIM chunk.
avif-sequence-brandsequence.avif
image/avif-sequence
avif / avisAVIF sequence ftyp box using the avis major brand.

brand

4 cases
brand detector fixtures
Stable IDClaimExpectedPurpose
heic-major-brandsample.heic
image/heic
heif / heicComplete ftyp box with heic major brand and mif1/heic compatibility.
heix-major-brandsample.heic
image/heic
heif / heixComplete ftyp box with heix major brand.
heif-mif1-brandsample.heif
image/heif
heif / mif1Generic HEIF-compatible ftyp box with mif1 major brand.
avif-major-brandsample.avif
image/avif
avif / avifAVIF ftyp box with avif major brand.

renamed

1 case
renamed detector fixtures
Stable IDClaimExpectedPurpose
png-renamed-jpgrenamed.jpg
image/jpeg
pngPNG bytes with a .jpg name and JPEG MIME claim.

truncated

3 cases
truncated detector fixtures
Stable IDClaimExpectedPurpose
jpeg-truncated-markertruncated.jpg
image/jpeg
jpegJPEG SOI and APP marker with a cut-off payload.
png-truncated-ihdrtruncated.png
image/png
pngPNG signature followed by an incomplete IHDR declaration.
heic-truncated-ftyptruncated.heic
image/heic
unknownftyp box cut off during its major-brand value.

zero byte

1 case
zero-byte detector fixtures
Stable IDClaimExpectedPurpose
zero-byteempty.png
image/png
unknownEmpty file with no signature.

polyglot

1 case
polyglot detector fixtures
Stable IDClaimExpectedPurpose
gif-zip-polyglotpolyglot.gif
image/gif
gifComplete GIF87a followed by a ZIP local-file signature.

leading text

1 case
leading-text detector fixtures
Stable IDClaimExpectedPurpose
svg-leading-xml-commentsample.svg
image/svg+xml
svgUTF-8 BOM, XML declaration, and comment before the SVG root.

oversized metadata

2 cases
oversized-metadata detector fixtures
Stable IDClaimExpectedPurpose
png-oversized-dimensionsoversized.png
image/png
pngPNG IHDR declaring 4,294,967,295 pixels in each dimension.
iso-oversized-boxoversized.heic
image/heic
heif / heicISO BMFF ftyp box with an impossible 32-bit declared length.

unknown

1 case
unknown detector fixtures
Stable IDClaimExpectedPurpose
unknown-random-bytesnot-really.png
image/png
unknownArbitrary bytes which must not be guessed from the .png name.

Safety note

Polyglot, active-content, and oversized fixtures are data for parsers. They should not be rendered inline, opened in desktop software, or served with an executable MIME type. The site lists their manifest; tests reconstruct them in memory and never execute them.