Skip to content
Allin

Hiding a Face, a Plate or an IBAN in an Image — Permanently

Published 8/21/2026 · 12 min read · Developer tools

Daniel Okonkwo

Daniel OkonkwoFront-end developer and tech writer at Allin

Web performance · File formats

Checked against 3 sources

View profile
In short

Yes, the image censor destroys pixel data rather than drawing a layer over it, and the download is a flat PNG produced from the canvas bitmap — the exported file contains only IHDR, IDAT and IEND chunks, with no metadata, no thumbnail and no way to hold an original underneath. But destroying pixels is not the same as destroying information. We took a 120-by-44 pixel region containing four digits, censored it with the tool's own code, then rendered all 10,000 four-digit candidates, put each through the identical censor and compared. Pixelation returned the true digits at rank 1 of 10,000 — zero error, one single candidate matching, in under two seconds — and blur did the same in forty seconds. Solid fill did not: all 10,000 candidates matched equally and perfectly, the true value ranking 4,472nd. Because pixelation and blur both keep the region's spatial layout, and a coarser mosaic only means fewer samples rather than fewer clues, both modes were removed. The tool now offers two: a solid fill in a colour you choose, which leaks nothing at all, and an average-colour patch, which replaces the region with one flat colour taken from the region itself. Against the same 10,000-candidate attack the average-colour patch left the true value inside a tie of 246, never singled out, at every slider position — but it does give away that one number, so for a short predictable value such as a code, a date of birth or an IBAN, pick the solid fill.

Blur and pixelation are reversible — not by undoing the maths, but by guessing forwards. Against this tool's own blur and pixelate modes, a recovery attack returned the hidden value at rank 1 of 10,000. Both modes have since been removed. Here is what is left, and why it cannot be attacked the same way.

Does it destroy the pixels, or draw over them?

This is the only question that matters, and it is the one most tools never answer. A redaction drawn as a separate layer — a shape in a PDF, an object in a design file, an annotation in a photo app — leaves the original underneath, and the original comes back the moment someone opens the file in a program that understands layers. It has happened to court filings, to government reports and to at least one bank statement posted online. So the first thing to establish is whether the black rectangle is part of the picture or sitting on top of it.

Here the answer is clean. Both modes operate on the raw pixel array of an HTML canvas: the solid mode fills a rectangle straight into the bitmap, and the average-colour mode reads the region out, works one colour out of it, and paints that single colour back across the whole rectangle. There is no layer, because a canvas has no layers — it is one grid of pixels and nothing else. The download is produced from that grid as a PNG, and when we inspected the exported bytes the file held exactly four chunks: the header, two blocks of compressed image data, and the end marker. No metadata, no embedded preview, no second copy of anything. Whatever was under the rectangle is not in the file.

Destroyed is not the same as unrecoverable

This is where most explanations stop, and where the real risk starts. Pixelation and blur both throw information away — that part is true. But both are deterministic: feed the same picture in and you get the same output out, every time, with no randomness anywhere. That turns hiding into a puzzle with a checkable answer. If an attacker can guess what was under the rectangle, they can produce their guess, run it through the identical transform, and see whether the result matches what you published. When the set of possible values is small — a licence plate, a date of birth, a four-digit code, an amount, a name from a known list — the whole set can simply be tried.

So we tried it on this tool, back when it still offered both. We built a small region of a document — 120 pixels by 44, holding four digits, the kind of thing you would censor at the end of an account number — and censored it with the tool's own code. Then we rendered all ten thousand four-digit strings, put each candidate through the identical censor at the identical setting, and ranked them by how closely they matched. This is not a clever attack. It is the most obvious one there is, it needs no machine learning and no special hardware, and it ran inside an ordinary browser tab.

The results are in the table below, and they were unambiguous. Pixelation at the strongest setting the tool offered handed back the true digits at rank one out of ten thousand, with an error of exactly zero and a single candidate matching, in under two seconds. Blur at its strongest setting did the same, more slowly, in forty. The solid rectangle behaved completely differently: all ten thousand candidates produced identical output, tied at zero error, and the true value ranked four thousand four hundred and seventy-second — which is to say, nowhere, because there was nothing to rank on. That is not the black bar being better by a margin. It is the black bar being in a different category: there is no information left to attack, so no amount of computing power changes the result. Turning the intensity up made no difference either, because the strength of the effect was never what mattered — what mattered was that the effect left the region's layout intact. That is why neither mode is offered here any more.

What replaced them, and what it still gives away

Two modes remain. The solid fill paints the rectangle in a colour you choose, and it is the one to reach for whenever the hidden thing is short and guessable. The other replaces the region with a single flat colour worked out from the region itself — its own average — so it reads as softened rather than as a hard black bar, which is what most people wanted from blur in the first place. Both destroy every trace of the region's layout, and we checked that rather than assuming it: reading the pixels back at every position of the edge slider, the whole rectangle holds one value, to the byte, in all four channels. Nothing inside it varies from place to place, so there is nothing left for a candidate to match against.

The average-colour mode does still give away one number, and it is worth knowing exactly how much. That number is the region's mean tint — roughly how much ink the area held. Running the same ten-thousand-candidate attack against it, the four-digit codes collapsed into only twenty-four distinct average colours, and the true value came out inside a tie of two hundred and forty-six, identically, at every setting of the edge slider. That narrows ten thousand possibilities to a couple of hundred; it never picks one out. Two of the ten thousand are unlucky: 0000 carries more ink than any other combination and 7777 less, so each of those owns its average colour alone and would be handed straight back. The solid fill has none of this, because the colour you pick has nothing to do with what was underneath. For a code, a date of birth or an IBAN, use it.

How to redact so that it stays redacted

Prefer the solid fill, and treat anything that still resembles the original as a warning sign. The independent research points the same way: the security firm Bishop Fox, which built a tool that reconstructs pixelated text, concludes that opaque bars are the only acceptable method and names blurring, fuzzing and swirling alongside pixelation as things to avoid. Our own measurements reached the identical conclusion from the other direction, which is why two of this tool's three modes no longer exist. If it looks like the original in any way at all, it is carrying information about the original — and that holds in every editor you will ever open, not only in this one.

Two habits make the rest of it safe. Draw the rectangle larger than the thing you are hiding — an edge that clips a digit in half still shows the top of that digit, and the outline of a jaw is enough to narrow a face. And check the downloaded file rather than the editing view: open the exported image at full size and zoom into the rectangle. If you can see any structure at all inside it — banding, a ghost of an edge, blocks of slightly different grey — the redaction did not take. A solid fill zoomed to 800 percent is one flat colour, and that flatness is the thing you are verifying.

The recovery attack that removed two of the three modes: 10,000 four-digit candidates, each put through the tool's own censor and compared to the published image
Mode and settingBest match foundRank of the true valueCandidates tied for bestTime to search all 10,000
Pixelate, intensity 12 — removedExactly right1 of 10,00011.3 seconds
Pixelate, intensity 30, the maximum — removedExactly right1 of 10,00011.5 seconds
Blur, intensity 12 — removedExactly right1 of 10,000117.6 seconds
Blur, intensity 30, the maximum — removedExactly right1 of 10,000140.3 seconds
Average colour, every edge setting — currentNo single best — 246 tied at zero errorOne of 246 tied, never singled out2462.6 to 3.3 seconds
Solid fill, any colour — currentNo single best — everything matched4,472 of 10,000, i.e. meaninglessAll 10,0001.6 seconds, and it learned nothing
Image CensorCover a region of an image with a solid colour or its average — irreversible, private, in your browser.Try the tool

Frequently asked questions

Is blurring ever good enough?
Not for anything you would call redaction, which is why this tool no longer offers it. Blur is a linear, deterministic operation, so an attacker who can guess the content can blur their guess the same way and check. In our test the strongest blur the tool used to offer gave the hidden digits back exactly, first out of ten thousand candidates, in forty seconds. Blur is a reasonable aesthetic choice for a background you are not trying to conceal; it is not a way to hide a value that matters — here or in any other editor.
If pixelation throws information away, how can it be reversed?
It is not reversed by undoing the maths — that really is impossible. It is reversed by guessing forwards. The attacker never inverts anything: they produce a candidate, apply the same pixelation, and compare. Information is only lost in the sense that many originals map to the same output; when the plausible originals number in the thousands rather than the billions, almost always exactly one of them matches. A four-digit code has ten thousand possibilities. A date of birth has a few tens of thousands. Those are not large numbers for a computer.
Can I censor two things in the same image?
Yes — censor as many regions as you like, one after another, and every one of them survives into the download. It was not always so. The tool used to redraw the untouched original before each censor, quietly undoing the previous one, and we confirmed it by censoring two regions in turn and reading the pixels back: the first had returned to its original colour. That is fixed. Censors now accumulate on a single working bitmap, the selection rectangle you drag is drawn onto a copy so it cannot disturb them, and the file you download is that bitmap — without the pink outline.
Does the downloaded file still contain the original underneath?
No. The export is a PNG written from the canvas pixel grid, and when we read the exported bytes it held only the image header, the compressed pixel data and the end marker — no metadata block, no embedded preview, no second image. This also means the tool drops anything the source file was carrying: a photo's location data, timestamp and camera details do not survive into the censored copy. That is a side benefit rather than the point, and it is worth confirming rather than assuming if the original is sensitive for reasons beyond the rectangle.
What about video — is a pixelated face in a clip any safer?
It is usually worse, not better. A still image gives an attacker one measurement of each block; a video gives one per frame, and if the camera or the subject moves at all, the block grid slides across the content and each frame samples it slightly differently. Researchers at Positive Security demonstrated exactly this, stabilising a clip so the redacted area sat still and stacking the frames to pull back a licence plate and a bank form. If you must redact in video, cover the region with an opaque shape on every frame, and check the frames around cuts and camera moves.

Articles you may find interesting

All guides
ExplainerStripping Photo Metadata: What Actually Comes OffA JPEG can carry six separate metadata blocks, not one. We built a file holding all of them — coordinates, camera serial, a hidden thumbnail, XMP, IPTC, a comment — pushed it through the cleaner, and read the output byte by byte to see what survived.ExplainerWatermarking: What It Protects, and What It Does NotA visible mark lives in the pixels, so it survives every copy — and degrades the image for every honest viewer at the same time. Measured: what a corner mark costs, what a tiled mark costs, and how each compares to metadata credit, Content Credentials and invisible watermarking.How-toExtracting a Few Pages from a Statement Without Installing AnythingA landlord wants page 3. An accountant wants January. You need to send those pages and not the eleven others, and there is a trap: the obvious way leaves the removed pages inside the file you send.How-toWhat EXIF Data Reveals, and How to Strip It ProperlyA photo file carries coordinates, an exact timestamp, the device and lens, and on some cameras a serial number. Here is what is actually in the block, what stripping does and does not fix, and how to verify it worked.How-toHow to Compress an Image Without Losing QualitySmaller images load faster and rank better. Here's how to shrink an image the smart way — format, resolution and compression level — without visible loss.How-toSending a Document for Signature: the Workflow, Not the LawWhether a drawn signature is valid is settled elsewhere. What decides whether your document actually gets signed is the order you ask people in, what the audit trail records, and six failure modes that have nothing to do with the law.

Related tools

The recovery attack described here was run against this tool's own algorithms in August 2026 — against the two modes that were removed as a result, and again against the two that remain — on a synthetic region with a known small set of possible values; real photographs, unknown fonts and unknown positions make the same attack harder, not impossible. Nothing here is a guarantee that a solid rectangle satisfies a legal or contractual duty to anonymise, and software changes — verify the exported file yourself before publishing anything that must not be read.

Sources

Spotted a mistake in this article?