The username is in the same corner. Why hide it sixteen times?
Draw opaque covers on one screenshot, reuse them on matching-size images, then check every image before downloading. Made for demos, tutorials, support threads and the last cleanup before you share.
Open Maskset · 中文界面 · Download offline HTML · 中文说明
Actual application capture. The sample workspace, names and account details are fictional. This is a product demonstration, not customer evidence.
| When you need to… | Maskset does this |
|---|---|
| Hide a repeated username, email or account area | Draw solid black rectangles; copy to other images with exactly the same pixel dimensions |
| Keep an image-specific cover | Merge copied covers without deleting existing ones |
| Check a whole batch | Mark each image reviewed; edits reset its review status |
| Send the result | Download flattened PNGs or an ordered ZIP; original files are excluded |
| Repeat the task next week | Save a JSON template containing dimensions and cover positions |
| Work without a connection | Open a single standalone HTML file; no install, account or API key |
Up to 16 screenshots, 2 languages, and 1 offline HTML file. PNG, JPEG and WebP input; PNG output at the decoded image's dimensions. No AI generation or OCR.
- Open the app and click Try a sample, or add your own screenshots.
- Drag over the information to hide. Keyboard users can expand Or enter pixel coordinates.
- Click Copy covers to matching images. Only images with identical dimensions receive the covers.
- Inspect each screenshot, including anything outside the covered areas. Click Reviewed & next.
- Download a PNG or the entire ZIP. Outputs are named
001-redacted.png,002-redacted.png, and so on.
The example screenshots deliberately contain a repeated corner email and a second account area. They illustrate why copying a corner cover alone does not finish a review.
Download maskset-offline.html from the latest release, then open it in a current desktop browser. The JavaScript, styles and required licenses are inside that file. The offline build runs with the network disabled.
Templates merge into the selected image and require an exact dimension match. They contain only format, width, height and rectangle coordinates. Imported screenshots, filenames and pixel data are not saved in a template. The batch lives in the current tab; closing or reloading it loses that work. Download results and templates before leaving.
- Covers are opaque black pixels in the exported raster image, rather than movable annotations. Transparent areas flatten onto white. Source metadata and original files are not included in the exported PNG/ZIP.
- This is a manual tool. It does not find personal information, verify that a cover is sufficient, or guarantee that all sensitive details were removed. Identical dimensions do not guarantee identical layouts; inspect every image.
- Images and templates are processed in the browser. The app has no upload endpoint, analytics or external model calls. Loading the hosted version still requests its HTML/JS/CSS from GitHub Pages; use the standalone file when you need disconnected operation.
- Limits: 16 files, 10 MB/file, 60 MB input total; 20 megapixels/image, 60 megapixels/batch, at most 16,384 px per side and 100 covers/image. ZIP output is capped at 120 MB. Large batches may need to be split on memory-constrained devices.
- Input is limited to PNG/JPEG/WebP headers the app recognizes. Unusual files with very large metadata headers may be rejected. Animated input is not preserved; this is a still-image workflow. Browser decoding, color management and JPEG orientation can affect raster output.
Requires Node.js 22+ and Python 3 for the optional preview server.
npm ci
npm test
npm run build
npm run preview
# Open http://127.0.0.1:4173For browser acceptance:
npx playwright install chromium
npm run test:browserThe browser suite exercises the production build, real pointer drawing, copying with custom covers, review invalidation, three input formats, corrupt and oversized inputs, bilingual/mobile layout, template validation, a real ZIP and standalone offline use. An independent comparison checks every exported sample pixel: inside the covers is opaque black; outside matches the decoded original. These checks validate the tested workflow, not automatic detection or external adoption. See verification details.
Open an issue with the task you were doing, browser and image dimensions. Please use a synthetic or already-redacted example rather than posting private screenshots. The first release is an early preview; feedback will guide the next useful change.
MIT licensed. See NOTICE.md for dependencies and synthetic assets. Built by LydiaTools.
