BlueMask

BlueMask is a local image-redaction tool. Secure masking replaces covered pixels before you share a photo or screenshot.

Mask an image

Local processing · No uploads

Drop an image here

PNG, JPEG or WebP · Paste with ⌘V / Ctrl+V

Choose an image, then draw over what you want to hide.

Blur can leave recoverable details.

Bluethroat recommends secure masking for sensitive data.

Cosmetic blur Appearance only

Softens pixels without securely removing them. Use for backgrounds and visual effects.

This changes the method for new regions. Existing masks keep their method.

Some regions are only blurred.

Bluethroat recommends secure masking for sensitive data.

Why Paranoia Mode exists

How do you know Bluethroat Labs isn’t uploading your photo or extracting sensitive details from it?

You can check that BlueMask works with your device disconnected. While there is no network connection, this page cannot upload your photo or send its contents to our servers.

  1. Download the offline edition.Everything is included in one HTML file.
  2. Disconnect before opening your image.Turn off Wi-Fi and mobile data; unplug Ethernet.
  3. Open the file, mask and save.Review the download. Close BlueMask before reconnecting.

Your device controls that connection; this button cannot disconnect it.

Offline editing shows that no server is needed. It does not certify the code or your device.

Download offline edition

About BlueMask

BlueMask is a local image-redaction tool for photos and screenshots. It runs in your browser and does not upload the image.

Use Secure masking for sensitive data. It replaces the covered pixels with one fixed, opaque color. The color does not depend on the hidden image. Cosmetic blur is an appearance effect and may leave recoverable information behind.

Why isn't ordinary blur enough?

Blur mixes neighboring pixels together. A name can look unreadable while still leaving shapes and measurements that software can use to reconstruct or rank possible originals.

Deblurring models can also produce plausible guesses that are not the original. A sharp-looking reconstruction should not automatically be treated as ground truth.

What makes secure masking different?

Secure masking replaces the selected pixels with one fixed opaque color. BlueMask removes those pixels before cosmetic processing and paints the secure masks again last, so they take priority wherever they overlap cosmetic blur. The export is a new flattened PNG with no separate mask layer to remove.

For fixed mask positions and unchanged visible surroundings, changing pixels beneath a secure mask does not change the exported result.

Does my image leave my device?

BlueMask reads, edits, and exports images in the browser. The editor has no image upload, analytics, telemetry, account, cookie, IndexedDB, service worker, or remote AI call. It does not load remote fonts or third-party scripts while running. The only value it writes is the light or dark appearance preference, under the localStorage key bluemask-theme. The image and editor state stay in memory.

Opening the hosted website still connects the browser to the BlueMask host. The host can see ordinary connection data, such as an IP address and the time of the request. Loading the hosted page also requests same-origin favicons and the web app manifest. A link or download you choose is a separate request. That includes Bluethroat Labs, research references, GitHub, Privacy, Terms, Support, the offline file, the source archive, the evidence archive, and the build manifest.

Clear session releases the editor's canvases and resets its controls. It does not erase copies kept by the browser, the operating system, a download, or a backup.

For sensitive images, download the offline edition and disconnect the device before choosing an image.

Why does Paranoia Mode exist?

Paranoia Mode gives you a workflow in which the editor can be used while the device is disconnected. A webpage cannot disable the device's network connection for you. The browser's online indicator is only a hint.

Download the offline edition, disconnect Wi-Fi and mobile data, unplug Ethernet, open the file, mask and export the image, inspect the export, and close BlueMask before reconnecting.

Does working offline prove BlueMask is trustworthy?

Working offline demonstrates that image editing does not require a server. It does not prove that the code, browser, extensions, operating system, or device is trustworthy.

BlueMask publishes its source, recorded tests, build identifier, and file hashes as additional evidence. Hashes identify exact files. They do not certify their safety. The build manifest is not a signature.

What happens to filenames and metadata?

BlueMask creates a new PNG and gives the download the name bluemask.png. Transparent areas are flattened onto white, so the exported PNG is opaque. The export keeps the edited image's width and height. It does not copy the original filename, camera details, GPS metadata, or color profile. The file you opened is left unchanged.

Anything still visible in the image must be covered separately.

Can someone still identify what I hid?

Yes, from context. A mask's width can suggest the length of a name. Nearby text, reflections, timestamps, logos, repeated details, and differently masked copies can reveal information.

Cover the complete detail with room around its edges. Sometimes covering an entire line reveals less than tightly covering one word. Review the final export at 100% before sharing it.

What do the recovery tests establish?

BlueMask publishes a narrow synthetic experiment comparing generated Gaussian blur with secure masking. The experiment demonstrates the reported behavior for those fixtures, model settings, and measurements. It does not prove protection against every model, image, face-recognition system, or contextual guess.

Read the recovery tests and limitationsUse BlueMask offlineView the source

Source is available. No project license has been selected, so this is not an open-source release.

BlueMask recovery tests and limitations

Can a published image-restoration model recover a hidden synthetic code?

BlueMask tested twelve synthetic eight-digit codes, rendered in one font at one size, with the same mask position on every image. The experiment compared generated Gaussian blur with PNGs produced by BlueMask's secure-masking renderer.

Tested
6 September 2026
Current build
d13b8b632e64
Release status
Release candidate · 25 September 2026

Download tests and outputs ↓

DPIR / DRUNet result

Exact synthetic codes read before and after restoration
InputBefore restorationAfter restoration
Unredacted control12 / 12Not applicable
Gaussian blur, sigma 39 / 1212 / 12
BlueMask secure mask0 / 120 / 12

DPIR with DRUNet grayscale is a published 2021 baseline. For the blur controls, it was given the same Gaussian kernel that created the blur. It recovered every tested code from the sigma 3 Gaussian control after restoration. It did not recover the known codes from the secure-mask inputs under the same reported settings.

The sigma 3 row is the informative blur control. A sigma 2 Gaussian control was already 12 / 12 before restoration and 12 / 12 after. Both controls are generated Gaussian blur. They are not BlueMask's cosmetic blur, which is three passes of a box filter. DPIR was not run on cosmetic-blur exports.

The unredacted images were not sent through DPIR. Their “after restoration” cell is not applicable.

Why this is not twelve independent secure-mask challenges

The twelve secure exports were byte-identical. The selected region was replaced with the same fixed pixels at the same position, so the restoration model received one repeated secure-mask input. Identical inputs were processed once for each assumed kernel and reused.

This supports the claim that those published pixels did not distinguish the twelve tested originals. It is one repeated masked input, not twelve independent adversarial tests.

DarkIR result

DarkIR, a 2025 low-light restoration model, was run on the same fixtures. On the sigma 3 Gaussian control, exact reads fell from 9 / 12 to 0 / 12. Its failure on the secure masks is therefore not evidence that it mounted a capable recovery attempt against them.

The failed control remains in the evidence package. It is not presented as a BlueMask success, and it is excluded from any strong resistance claim.

What the experiment does not establish

  • every current or future model, including frontier models that were not run
  • face recognition or face reconstruction
  • real documents and photographs
  • pixelation, inpainting, or dictionary search
  • BlueMask's own cosmetic blur
  • information left outside the mask
  • context, reflections, logos, timestamps, or mask geometry
  • guesses constructed from external information
  • several differently masked versions of the same image

OCR failure does not prove that no information remains. A human or a different model may still read something the OCR measurement missed. Review the fixtures, outputs, transcriptions, model provenance, hashes, and reproduction instructions in the evidence archive.

The archive does not include model weights. Repeating the model run requires the checkpoints and local environment named there. The secure-mask renderer in this build matches the renderer that produced the fixtures. One harness file in the current repository, scripts/browser.mjs, has changed since the archive was packaged, so packing the archive again from the current repository would not reproduce its hash.

Downloads and verification

Changelog: no public changelog or GitHub release is published.

Source available. No license has been selected for the application or the evidence dataset. Do not call either one open source. Bundled fonts remain under their SIL Open Font License. Retained upstream model code keeps its own license notices.