How Photo Disruptor Works
Everything you need to know about protecting your images from fingerprinting, reverse-search, and metadata tracking β all running 100% in your browser.
General
Photo Disruptor is a client-side image processing tool that makes every copy of a photo digitally unique while keeping it visually identical to the human eye. Its invisible pixel-level transformations break exact-copy matching and scramble file, format and metadata fingerprints. Perceptual hashes are built to survive invisible changes, so moving those takes Reframe, a slight visible re-crop β and a fingerprint panel measures the result on every photo.
Anyone who wants to protect their visual content from automated tracking, reverse image search, or duplicate detection. Common use cases include:
- Making reverse image lookup harder (Reframe does the heavy lifting)
- Moving perceptual fingerprints (aHash / dHash / pHash) out of matching range β with Reframe, and checked per photo
- Stripping or spoofing EXIF / GPS / device metadata
- Generating visually identical but digitally unique copies
No β all disruption is applied below the human perception threshold. With the default settings, the changes are invisible to the naked eye. The JPEG export quality defaults to 92%, which preserves excellent visual fidelity. You can increase it up to 100% if you need lossless-tier output.
Photo Disruptor accepts JPG, PNG, and WebP files as input. Processed images are exported as JPEG by default, with configurable quality (60β100%), or as PNG or WebP β pick one under Export Format. Injected metadata is written to JPEG only; PNG and WebP exports carry none.
Features & Controls
Micro-Crop trims a tiny percentage (0β5%) from each edge of the image. This shifts the entire pixel coordinate grid, which defeats position-based matching algorithms that compare images pixel-by-pixel at specific coordinates. Even a 1% trim is enough to throw off most systems.
Color Shift applies a subtle hue and saturation adjustment to every pixel. This defeats color histogram analysis β systems that compare the distribution of colors across an image. The shift is imperceptible to the eye but changes every pixel's color values.
Luminance Jitter applies a random brightness adjustment to the entire image, within a minβmax range you set. This defeats brightness signature matching. Each time you process, the jitter value is randomized, so repeated exports produce unique images.
Invisible Noise adds per-pixel RGB perturbation at an intensity you control (0β15). At the default value of 3, each pixel's Red, Green, and Blue channels are individually shifted by a random amount up to Β±3. This is well below the perception threshold but makes every single pixel unique β destroying any exact-match or near-match hash comparison.
Hash Disruption perturbs pixels at the boundaries of the 8Γ8 blocks that pHash and dHash sample, nudging bits of the resulting fingerprint.
On its own it does not take an image out of matching range. Perceptual hashes are designed to survive exactly this kind of invisible change: measured on test photos, every preset β Max included β left pHash within 10 of 64 bits of the original, which open matchers still treat as the same picture. The one technique here that moves them reliably is Reframe (a slight rotation and re-crop), and it is visible. The fingerprint panel under the preview measures aHash, dHash and pHash for your photo after every run, so you never have to take this on trust.
Sharpening applies an unsharp mask filter to the image. Beyond improving visual crispness after the other transformations, it further alters the pixel data at edge boundaries β adding another layer of disruption that changes the image's digital signature.
Sub-Pixel Shift applies a fractional (sub-pixel) translation and resamples the entire image via interpolation. This forces every single pixel to be recalculated from its neighbors, fundamentally altering the raw pixel data while the visual appearance remains identical.
Aspect Micro-Change adds or removes 1β2 pixels from the image dimensions. This creates a unique resolution that doesn't match the original, which defeats systems that use exact dimensions as a first-pass filter. The change is completely undetectable visually.
Brightness Adjustment shifts the overall brightness of every pixel by a user-defined amount (-50% to +50%). Unlike Luminance Jitter (which is random), this is a deterministic, controlled shift. It adds yet another mathematical transformation that makes the processed pixel data diverge from any original fingerprint.
Gamma Micro-Shift applies a tiny random gamma curve perturbation to the image. It uses a lookup table to remap every pixel value through a slightly altered power curve (e.g., Ξ³ = 0.97 or 1.03). This changes every single pixel mathematically while being completely invisible β it defeats histogram-based and statistical fingerprinting that rely on exact color distributions.
Channel Swizzle performs micro-swaps between R, G, and B color channels for random pixels. For example, it might subtract 2 from Red and add 2 to Green in some pixels. This defeats histogram matching and color-based fingerprinting since the exact distribution of each channel changes, while the visual appearance stays the same.
LSB Flip (Least-Significant Bit) randomizes the lowest 1β2 bits of every pixel's R, G, and B channels. A 1-bit change means Β±1 out of 255, which is completely invisible, but it makes every copy of an image statistically unique. This defeats forensic steganalysis and makes exact-match comparisons impossible.
Mirror / Flip flips the image horizontally (left β right), vertically (top β bottom), or both. This is optional and off by default. Flipping changes the pixel layout, which defeats matchers that compare images only as they are. Many do not stop there: engines such as Meta's PDQ also fingerprint mirrored copies, so a flip alone should not be relied on. The fingerprint panel checks mirrored variants too, and tells you when a mirror is the only thing separating your copy from the original.
Re-encode Variance exports the image to JPEG at a slightly different quality level (Β±2-5% from your chosen quality), then re-imports it. This round-trip destroys JPEG compression signatures β the specific DCT coefficients that forensic tools use to detect double-compression or identify the original encoding software.
Format Pipeline chains the image through a Canvas β WebP β Canvas conversion. Since WebP uses a fundamentally different compression algorithm than JPEG, this conversion resamples every pixel and removes all format-specific artifacts. It makes it impossible to determine the original format or identify the image through compression signature analysis.
Three built-in presets are available, plus you can create your own:
- Default β Balanced settings that provide strong disruption with no visible quality loss.
- Max β Maximum disruption on all controls. Ideal when you need the strongest protection possible.
- Subtle β Minimal changes. Good when you want light protection while preserving absolute maximum fidelity.
- π² Randomize β Randomly sets all sliders and toggles. Great for generating uniquely different copies.
- Custom Presets β Save your current settings, give them a name, and recall them anytime. You can also export/import presets as JSON files.
Watermark Tool
The Watermark Tool is a dedicated page for adding visible watermarks with per-character distortion meant to make them harder for machines to read than plain text. It features a live canvas preview, text and image/logo modes, and an advanced anti-detection rendering engine.
Anti-Detection fonts are specially chosen typefaces with distorted, glitchy, or unconventional letterforms intended to make OCR (Optical Character Recognition) harder while staying readable to humans. How much harder is measurable, and less than the name suggests: with the tool's defaults β an anti-detection font at 50% strength β Tesseract OCR still read "PHOTO DISRUPTOR" perfectly; at 100% strength with mixed fonts it got about 71% of the characters. Modern AI models read far better than Tesseract, so treat these as friction, not a guarantee. The tool includes 12 such fonts:
- Rubik Glitch β glitchy digital distortion (default)
- Rubik Wet Paint / Burned / Distressed β melting, charred, and eroded styles
- Monoton β striped/lined letterforms that confuse edge detection
- Bungee Shade / Outline β 3D shadow and outline-only styles
- Silkscreen / Pixelify Sans β bitmap/pixel rendering
- UnifrakturMaguntia / MedievalSharp / Creepster β unusual historical and artistic forms
The anti-detection engine applies per-character distortions to make watermark text unreadable by automated systems:
- Micro-rotation β each character is randomly rotated slightly
- Scale variation β random size changes per character
- Jitter β random position offsets for each letter
- Font mixing β randomly swaps fonts between characters
- RGB offset β splits text into color channels with micro-offsets
- Noise overlay β adds tiny noise dots on text
- Kerning disruption β irregular spacing between letters
- Baseline jitter β characters float up/down randomly
The strength slider (0β100%) controls how aggressive these distortions are.
With the position set to "β Custom (Drag to Place)" (the default), you can click and drag directly on the live preview canvas to place your watermark exactly where you want it. The position is stored as a ratio, so it scales correctly when exporting at full resolution.
Yes β switch to Image / Logo mode and upload a PNG or SVG file. You can control the logo's size, opacity, position (including drag-to-place and tiled), and rotation. This is useful for branding watermarks with company logos.
The π Last Used button in the Quick Presets section saves your most recent watermark configuration β text, font, size, opacity, position, anti-detection settings, and more. After applying a watermark, your settings are automatically saved to localStorage. Next time you visit, just click "Last Used" to instantly restore everything. This works for both single-image and batch watermark workflows.
Metadata
When set to Wipe All, the canvas re-export process inherently strips all EXIF, GPS, device, and timestamp data from the image. The output file contains zero metadata β just pixel data. This is the default behavior.
In Inject Custom mode, you can write custom EXIF data into the output file including:
- GPS coordinates β latitude and longitude
- Device / Phone β e.g., "iPhone 15 Pro Max"
- Camera Make β e.g., "Apple"
- Date Taken β any date/time you choose
- Software β e.g., "iOS 18.1"
- Copyright β your copyright notice
Smart lens data auto-fills based on the device you select β so choosing "iPhone 15 Pro Max" will inject correct focal length, aperture, and lens model data.
Batch Processing
The Batch Processor lets you process many images at once with smart sequential metadata. You can:
- Drop or select multiple photos at once
- Set a start time and interval range β each photo gets a realistic sequential timestamp
- Set GPS coordinates with jitter β each photo gets slightly different GPS to simulate movement
- Choose a device β realistic camera EXIF is injected for all photos
- Download all results as a single ZIP file
GPS Jitter adds a small random offset (in degrees) to the base GPS coordinates for each photo in a batch. This simulates natural movement β walking around a location β so photos appear to have been taken at slightly different spots rather than an identical GPS point.
The timing feature generates realistic sequential timestamps for each photo in a batch. You set a start time and a min/max interval range (in minutes). Each subsequent photo advances by a random amount between the min and max, creating a natural timeline that looks like photos taken by a real person throughout the day.
Yes β the batch table includes checkboxes next to each photo. You can select individual photos or use the "Select All" checkbox in the header. The Download Selected button will package only your chosen files into a ZIP.
When you select "Customβ¦" in the Disruption dropdown, a panel of 16 individual controls appears. You can toggle and fine-tune each disruption technique independently:
- Sliders β Micro-Crop, Color Shift, Noise, Brightness, Sharpen Amount, Gamma Deviation, Swizzle Intensity, LSB Bits, Quality
- Toggles β Sharpen, Gamma, Hash Disruption, Sub-Pixel Shift, Aspect Micro-Change, Channel Swizzle, LSB Flip, Mirror H/V, Re-encode Variance, Format Pipeline
Switching between named presets (Default, Subtle, Max) auto-syncs all controls to that preset's values. Your custom configuration is also saved with the "Use Last Settings" feature.
The batch processor offers 6 filename formats for exported images:
- Device style β
IMG_20260314_015000_001.jpg(matches your selected phone/camera prefix) - WhatsApp β
IMG-20260314-WA0001.jpg - Date + Seq β
20260314_015000_001.jpg - Sequence only β
photo_001.jpg - Random UUID β
a3f1b2c4_001.jpg - Custom prefix β your own prefix + date + sequence
A live preview below the dropdown shows exactly what the output filenames will look like.
Privacy & Security
Absolutely not. All processing happens 100% in your browser using the HTML5 Canvas API. Your images never leave your device. There is no server, no upload, no cloud storage, no analytics.
No. Photo Disruptor uses zero tracking scripts, analytics, cookies, or external API calls. The only external resources loaded are the JSZip and piexifjs libraries from CDN for file packaging and EXIF manipulation.
Almost β the core processing is entirely client-side. If you save the HTML, CSS, and JS files locally and also download the JSZip and piexifjs libraries, you can run it fully offline with no internet connection needed.
Tips & Best Practices
Use the Max preset, which enables every disruption feature at full strength. For additional protection:
- Enable all toggles (Hash Disruption, Sharpening, Sub-Pixel Shift, Aspect Micro-Change, Gamma, Swizzle, LSB, Re-encode, Format Pipeline)
- Set Invisible Noise to 10β15
- Use Metadata Wipe to strip all EXIF, or inject fake metadata
- Enable Mirror/Flip for reverse image search protection
- Keep JPEG quality at 90β92% (re-encoding adds natural disruption)
- Use the π² Randomize button to generate unique settings each time
For best results, yes β each feature targets a different fingerprinting method. The layered approach ensures comprehensive protection. However, the Default preset already provides excellent coverage for most use cases.
After processing, compare the "Before / After" preview. The images should look identical visually. To verify the disruption:
- Check the file size β it will differ from the original
- Read the fingerprint panel under the preview β it compares aHash, dHash and pHash to the original and says whether the result is still matchable. Without Reframe, expect it to be
- Run both images through a reverse image search if you want a second opinion from a commercial engine β the panel measures only the open algorithms
- Compare the file's hex data β the raw bytes will be completely different
- Check EXIF data β metadata will be wiped or replaced
Yes β and each processing run produces a unique output due to random elements (noise, luminance jitter, sub-pixel shift position). This means you can generate multiple unique copies of the same source image, each with different digital fingerprints.