Each square is one least-significant bit written before compression and read from the same channel after decoding. A crossed square changed.
The block view reproduces the transform and a conventional luminance table. It does not expose this browser encoder's private tables or chroma decisions.
61/64 coefficients became zero at quality 72.
Switch between JPEG, PNG, and WebP. JPEG and WebP expose the quality target accepted by the browser API.
The browser writes payload bits, encodes the pixels, decodes the returned file, and measures the reconstructed samples.
Use the error map and hidden-bit grid to separate visual similarity from exact data survival.
Trace one 8 × 8 JPEG block, compare PNG predictors, or distinguish WebP's lossy and lossless codec families.
Before encoding, the tool writes 768 deterministic bits into the least-significant bits of red, green, and blue samples. It sends the resulting pixel array through the browser's canvas encoder, decodes the returned image, and compares the two arrays channel by channel. PNG normally returns the same values, while lossy JPEG or WebP can change many samples even when the image looks stable. The mechanism panels are kept separate: JPEG applies a two-dimensional discrete cosine transform to an 8 × 8 luminance block and divides coefficients by a quality-scaled quantization table; PNG computes the five standard reversible row-filter residuals; WebP is identified as a container for either lossy VP8 intra coding or its separate VP8L lossless format.
Yes for the encode-and-decode result. The browser produces the file and decodes it again. The mechanism panels are declared models because the browser does not expose its internal encoder decisions.
Human vision tolerates many small color errors. A payload stored in exact bit positions does not: one changed least-significant bit changes the recovered message.
No. PNG is lossless, but its filters and DEFLATE stage only reduce size when the pixel data contain exploitable structure. Small or noisy images can gain little after container overhead.
No. WebP can carry a lossy VP8 intra-frame stream or a separate lossless VP8L stream with reversible transforms, LZ77 references, a color cache, and prefix codes.