What it does
This tool loads an image entirely in your browser (nothing is uploaded anywhere) and decomposes it into:
- Its individual color channels: Red, Green, Blue, and Alpha (transparency), each rendered as a grayscale image representing that channel's intensity.
- The bit planes of each channel: from the most significant bit (MSB, bit 7) down to the least significant bit (LSB, bit 0).
This is one of the most common first steps in steganography analysis (CTF challenges, forensics, "is there a hidden message in this image?"): hidden data is frequently stashed in the least significant bits of one or more channels, since modifying the LSB barely changes the visible pixel color but can encode arbitrary bits. Isolating and viewing the LSB plane on its own often reveals a hidden image, QR code, or pattern that's completely invisible in the original picture.
Try it
How it works
- The image is drawn onto an off-screen
<canvas>and read back withgetImageData(), giving direct access to the raw RGBA byte values of every pixel — all of this happens locally in your browser via the Canvas API. - Channel extraction: for a chosen channel (Red, Green, Blue, or Alpha), a new grayscale image is built where every pixel's brightness equals that channel's original 0–255 value at that position. Fully transparent/opaque areas of an image with no real transparency will render the Alpha channel as flat white.
- Bit-plane extraction: for a chosen bit index
n(0 = LSB, 7 = MSB), each pixel is tested with(value >> n) & 1. The result — 0 or 1 — is rendered as pure black or white, producing a binary image. The LSB plane (bit 0) is the classic target for detecting simple LSB steganography: structured noise, text, or embedded shapes visible only in that plane strongly suggest hidden data. - Nothing ever leaves your browser — nothing is uploaded, and this page has no server-side component.
Tips for steganography analysis
| Observation | Possible meaning |
|---|---|
| LSB plane (bit 0) shows visible shapes/text/patterns | Likely LSB-encoded hidden data in that channel |
| Alpha channel is not flat/uniform on a PNG that looks fully opaque | Data may be hidden in the alpha channel |
| Higher bit planes (5, 6, 7) look identical to the full channel | Normal — high bits dominate visual appearance |
| One channel's LSB looks like random noise while others look structured | That specific channel may carry the payload |
| Bit planes look identical across R, G, and B | Probably no simple per-channel LSB steganography present |
Limitations
- This tool only reveals simple, per-pixel LSB-style steganography. It won't detect more advanced techniques (frequency-domain / DCT-based hiding in JPEGs, cryptographically scattered bits, F5, palette-based tricks, etc.).
- Re-saving/re-compressing an image (especially as JPEG) usually destroys LSB-hidden data — always analyze the original file when possible.
- A perfectly "random-looking" LSB plane doesn't prove there's no hidden data — it may simply mean the data is encrypted/compressed before embedding, which looks like noise either way.