How to Redact an Image So the Hidden Part Stays Hidden
Most leaked "redactions" were not careless. Someone did cover the account number — with a tool that only looked like it removed it. Redaction has one job: the hidden pixels must not exist in the file you send. Here is where that goes wrong and how to do it so it doesn't.
Covering is not the same as removing
An image editor shows you a picture, but the file underneath can hold more than that picture: layers, an edit history, an embedded preview thumbnail, extra bytes after the end of the image. When you draw a box, the question is whether the box replaced the pixels under it or just sits on top of them.
For a flat PNG or JPG exported after drawing, the box is the pixels — there is nothing underneath. For a PDF, a PowerPoint slide, a Photoshop file or a markup app that keeps your edits editable, the original is usually still in there, one click or one script away.
Five ways redaction fails
A highlighter instead of a box
Marker and highlighter tools draw at partial opacity so the text below stays readable — by design. A dark highlighter at 90% looks black on a phone screen, but raising the brightness or levels in any editor brings the text straight back. Redaction needs 100% opaque fill.
Blur or pixelation over text
Blurring a face works because faces are not drawn from a short list of shapes. Text is: a known font, a known size, a small alphabet. Tools like Depix (2020) recover pixelated text by rendering candidate characters, pixelating them the same way and matching the blocks. Light blur on numbers can be reversed the same way. Use blur for faces and backgrounds, never for words or digits.
An editor that keeps the original bytes
In 2023 researchers found that the Pixel phone's Markup tool (CVE-2023-21036, nicknamed "aCropalypse") and the Windows Snipping Tool (CVE-2023-28303) wrote the edited image over the old file without shortening it. The tail of the original screenshot stayed after the end of the new image, and much of it could be reconstructed — including the parts you cropped away or drew over. Both were patched, but any screenshot edited on an unpatched device before then may still carry its original.
A box drawn over a document, not burned into it
A black rectangle added to a PDF as an annotation or shape hides the text from your eyes, not from copy-paste, search or text extraction. This is how court filings and government reports keep leaking. For PDFs, use a real redaction feature that deletes the text, or turn the pages into images first.
Metadata and thumbnails
Photos carry EXIF data: GPS position, device, time, sometimes a small embedded thumbnail generated before your edit. Software that edits pixels but copies metadata across can ship a thumbnail of the unredacted original. Re-encoding to a fresh file drops it.
A method that holds up
- Start from the original image. Not a copy that has been through a markup app already.
- Draw solid, fully opaque boxes over each item. Make each box generously larger than the text — a box that hugs the letters can leak ascenders, descenders and word length.
- Use a brush for awkward shapes like a signature or handwriting, again at full opacity.
- Export to a new flat file (PNG for screenshots, JPG for photos). Do not save over the original, and do not keep the layered or editable version for sharing.
- Check the result as a stranger would: open the exported file, zoom to 400%, and push the brightness up. If anything is legible, redo it.
The Redact Image tool on this site follows that pattern: boxes and brush strokes are painted at full opacity into a fresh canvas the size of the original, and the export is a new file with no metadata and no trailing bytes. It runs in the browser, so the unredacted image is never uploaded.
What people forget to cover
| Item | Why it matters |
|---|---|
| QR codes and barcodes | Boarding passes and tickets encode your name and booking reference. QR codes include error correction, so covering a corner is not enough — cover the whole code. |
| Browser address bars and tabs | URLs carry account IDs, search terms, internal hostnames and sometimes session tokens. |
| Notification banners | A message preview from someone else, arriving at the moment you took the screenshot. |
| Reflections | Glasses, windows and screens in photos reflect what you meant to hide. |
| Partial numbers | Showing the last four digits of a card next to the first six from another screenshot reconstructs most of it. |
| Avatars and usernames | In group chats and comment threads, the profile picture identifies a person as well as the name does. |
Checking a file someone else redacted
If you receive a redacted PNG and want to know whether it carries trailing data, look at the end of the file. A PNG ends with an IEND chunk; anything after it is not part of the image:
# The last 12 bytes of a clean PNG are the IEND chunk
tail -c 12 image.png | xxd
# ...0000 0000 4945 4e44 ae42 6082 ....IEND.B`.
# Count how many bytes follow the first IEND
python3 -c "d=open('image.png','rb').read(); print(len(d) - (d.find(b'IEND') + 8))" Zero is what you want. A large number means the file was saved over a bigger original, and the tail is worth taking seriously. For metadata, an EXIF viewer shows whether location, device or a thumbnail survived.
Redact or blur?
Use a solid box for anything that is text, digits or a code. Use blur where looks matter and the content isn't a short string — a passer-by's face, a house number in the far background — and make it heavy. When in doubt, the box wins: nobody has ever recovered a name from a solid black rectangle in a flat file.
Black out text and faces before you share — in your browser