Loading the interactive demo for "LSB looks perfect until you save as JPEG"… The lesson text below is already here. The hands-on part loads next (requires JavaScript).
This is the flagship for a reason. In sixty seconds you will feel what ten tutorials never convey: invisible does not mean durable.
Embed any ID above. The two views diverge. Your eyes see nothing, bit zero screams. Then JPEG it and watch the scream go silent.
Why LSB dies so easily
LSB hides in the smallest possible change: the last bit of each color value. Any quantization, JPEG's entire job, rounds those bits away first.
PNG preserves them exactly because PNG is lossless. One JPEG save at q72 is a massacre. Social feeds do worse without asking.
When LSB is still fine
Lossless direct delivery: PNG/TIFF over email or download link, no recompression, no screenshots. Small archives, print proofs, client review links you control.
Anything else: treat LSB as fragile by default and pick a robust method in chapter 5.
Why tutorials lie by omission
Most LSB demos end at extraction from the untouched file. That demo always works and teaches nothing about delivery, because delivery is where files get re-encoded, resized and screenshotted.
A tutorial that never saves as JPEG is testing storage, not sharing. This lab forces the JPEG step because your subscribers will.
The robustness ladder: what costs what
Bit plane 0 is invisible and free, and dies first. Higher planes survive more quantization but visibly damage the image; try plane 4 above and see the price of pixels.
Repeat×3 ECC buys back scattered single-bit flips through majority vote, at triple the capacity cost. It still cannot survive block-level quantization at q72. Scattered repairs versus wholesale rounding are different wars.
Real robust methods leave pixels entirely and hide in frequencies or model features. That is what chapters 4 and 5 are about.
Capacity is a budget, not a detail
One pixel carries one bit per channel. A 640×400 image holds 32,000 bytes minus the 2-byte header: plenty for an ID, tight for a paragraph, gone with ECC tripling.
Watch the capacity meter as you type. Long messages in small images silently truncate, and a truncated ID with no length header decodes as garbage.
Takeaways
- LSB survives untouched PNGs and dies on any JPEG re-encode.
- One social upload is enough to wipe an LSB payload.
- Use LSB only for lossless direct delivery, never for social routes.
Check yourself
Optional, local, instant. 0/2 answered.
- You embed an LSB ID, save as JPEG q72, and extraction fails. What happened?
- When is LSB a defensible choice?
For your niche
Proof galleries over which you control download links can use LSB for lightweight tracing. The moment clients screenshot, assume death.
Never LSB for feed or DM delivery. Every platform re-encodes. This lab is why your method picker defaults away from it.
Flat colors and gradients show plane changes least visibly but die identically under JPEG. Test on your actual palette, not a photo.