Pixel-level embedding
Payload bits are written into the least-significant bits of the image's colour channels. You choose the bit depth and which of the RGB channels to use — deeper embedding carries more data at the cost of visibility.
Features
Eight module-workspaces sharing one loaded image. This page covers each capability, the formats it applies to, and the limits worth knowing before you rely on it.
Steganography hides the existence of a message, not just its contents. StegoPixel supports two carriers, and will also analyse and extract payloads that somebody else created.
Payload bits are written into the least-significant bits of the image's colour channels. You choose the bit depth and which of the RGB channels to use — deeper embedding carries more data at the cost of visibility.
The payload is carried inside the file's metadata structures instead of its pixels. Larger capacity and it survives pixel-level recompression, but it only exists in formats that support XMP.
Anything that rewrites the pixels destroys LSB data — re-saving a JPEG, resizing, or uploading to a platform that recompresses. Use PNG, TIFF or BMP as the carrier whenever the file might be edited or re-shared, and treat a decoded payload that comes back corrupted as a re-encoding problem first.
Every image carries a second file inside it — the metadata. StegoPixel reads all of it, shows it grouped by source, and lets you change the parts that are actually writable.
Editing is deliberately constrained, because most image formats can only have a small subset of tags written back reliably. StegoPixel exposes 19 typed writable EXIF tags — eight strings, three date/time, five numeric and two enumerated — and requires the value to match the tag's declared type rather than writing a raw string and hoping.
The eight string tags are the ones people reach for most often:
Custom key/value pairs are written as XMP in a dedicated urn:stegopixel:custom namespace, which keeps them namespaced and non-destructive. A 20-step undo history means a mistaken edit does not have to be repaired by hand.
Photos leak more than people expect: where you live, where you work, which device you own and when you were there. Privacy cleanup finds that data and removes it.
Stripping metadata is a destructive write to the output file. StegoPixel keeps the original by default and takes a backup before destructive operations, but a cleaned file that has been saved cannot be un-cleaned — the data is genuinely gone, which is the point.
A manipulation leaves traces in the statistics of an image long after the visual evidence is gone. StegoPixel gives you the standard instruments for finding them, each producing a result image you can zoom, compare and export.
| Technique | What it reveals |
|---|---|
| Error Level Analysis (ELA) | Regions saved at a different compression quality — the classic signature of a spliced or retouched area. |
| Noise analysis | How the sensor noise is distributed. Inserted content rarely matches the surrounding noise floor. |
| Noise consistency | Whether the noise floor is uniform across the frame, which exposes compositing. |
| Noise residual | The signal left behind after denoising — useful for seeing structure hidden beneath texture. |
| SNR map | A per-region signal-to-noise view for locating locally anomalous areas. |
| Noise rainbow | Noise rendered as false colour, which makes otherwise invisible patterns visible at a glance. |
| Level sweep | Sweeps tonal levels to expose faint edges and boundaries. |
| Luminance gradient | Gradient and edge structure with selectable operators — good for spotting lighting that does not agree across a composite. |
| PCA | Principal component analysis over the colour channels, in several modes, for colour-level anomalies. |
| Block similarity | A block-level engine for duplicate and copy-move detection — finds regions repeated within an image or across a set. |
| Watermark detection | Looks for embedded watermark carriers in the image. |
| Geo-tag audit | Checks for location data and records map references into the report. |
Results are not just images. The file inspector keeps the digests — SHA-256 and SHA-512 — alongside the findings, and the whole session can be exported as a report.
Forensics is often about making something faint visible. Eight enhancement modes sit alongside the analysis panels: CLAHE, gamma correction, level adjustment, unsharp masking, local contrast, two auto-contrast variants and histogram equalisation — all applied non-destructively to the working copy.
Rather than configuring eleven panels by hand, six built-in recipes chain the relevant analyses for a particular question — a quick tamper check, a deep scan, an AI-origin review — and collect the results into one summary.
Seven independent signals, combined into one verdict. All of them run on your machine — and they are hand-written statistical heuristics, not a trained neural network. There is no model file, no cloud inference and no labelled dataset behind them. That is precisely why the app reports confidence tiers rather than certainty.
A table of roughly 30 known image generators and editing tools, matched against the EXIF and XMP fields they leave behind — software strings, prompt fields and workflow markers — each with its own confidence weighting. It also checks the IPTC digitalSourceType field, which is the standard machine-readable way of declaring synthetic media.
Reads the camera metadata as a story and asks whether it contradicts itself: a Make/Model brand mismatch, capture dates in the future, a digitised or modified date before the capture date, an all-zero GPS position, or numeric values outside physical ranges. A camera identity that carries no capture parameters is noted more gently, because aggressive metadata pruning looks much the same. One contradiction never decides the verdict — this signal corroborates.
JPEG, WebP and TIFF files normally carry capture metadata; this check notices when the block is completely empty. It is deliberately the weakest signal in the set, because messaging apps, social platforms and privacy scrubbers strip metadata as a matter of routine — it can raise an “Inconclusive” flag, but it never delivers an AI verdict on its own. PNG and the other export formats are exempt: they never carried that metadata to begin with.
DCT, noise uniformity, colour-filter-array and spectral measurements of the image itself, blended into a single score. This is the signal that still works after metadata has been stripped — which is exactly when you need it.
A frequency-domain scan for repeating watermark carriers, comparing spectral peakiness and cross-channel phase coherence against a small reference set. It is a heuristic pattern match, not a read of any vendor's production watermark key — the app says so in its own interface, and this page will not claim otherwise.
The original Stable Diffusion pipeline embedded a fixed invisible watermark — the 136-bit payload StableDiffusionV1 — into the chroma channels of everything it generated. This decoder reads that specific, publicly documented bit pattern back out of the wavelet domain, block by block, by majority vote. A high bit-agreement match is checkable evidence that a file passed through that pipeline; a miss proves nothing, because resizing or cropping destroys the watermark.
Parses Content Credentials embedded in the file — the CBOR/JUMBF manifest that records who claims to have created an image and with what — and reports what it contains. It surfaces the claim; it does not validate a cryptographic chain of trust.
Every verdict also lists which checks ran, were skipped or failed. A check that could not complete is reported as incomplete — never quietly treated as clean.
Results resolve to one of three tiers, shown alongside the contributing signals and their individual confidences:
“Inconclusive” is a real outcome, not a failure. An offline detector that never admits uncertainty is not being honest with you.
Separately, the Home module produces an authenticity score for a loaded image — a weighted total that subtracts for high, medium and low-risk findings, hidden payloads, AI indicators and unverifiable provenance, and resolves to “Likely Authentic”, “Uncertain” or “Suspicious”. It is a summary of everything the app measured, with the breakdown shown so you can see which signal moved the number.
Every offline AI detector has both false positives and false negatives. Metadata can be forged, stripped, or added by an innocent editor. Use the contributing signals — not just the headline label — and do not present a score as a determination about a specific person or image.
Finding a region of an image that has been copied from elsewhere in the same image — or a near-identical second file — is a copy-move problem, not a filename problem. StegoPixel compares image content, not file names or sizes.
Content hashes are SHA-256 and SHA-512; similarity uses average, difference and perceptual hashes.
This is content-level similarity detection, not a searchable asset-management database. There is no indexed, queryable catalogue of every image on your machine, and no collections library — StegoPixel analyses the files you point it at. If you need to find near-duplicates across a folder, it does that well; if you are expecting a digital asset manager, that is a different product.
Sometimes the only way to be sure is to look at the bytes.
A finding you cannot hand to anybody else is not much of a finding. Everything StegoPixel discovers can leave the app in a form somebody else can read.
| Output | Formats | Contents |
|---|---|---|
| Forensic report | HTML · PDF | Findings, verdicts and the result imagery, laid out as a document. |
| Metadata export | JSON · CSV · HTML | Flat tag tables: source, group, tag, value and raw hex. |
| Hash manifest | JSON | Per-file SHA-256 and SHA-512 digests for integrity verification. |
| Result images | PNG | Any analysis heatmap or processed image, saved for use elsewhere. |
| Archive | ZIP | A whole run's outputs packaged together. |
Reports are produced by the same engine the workflow system uses, so a report generated by hand and one generated by an automated pipeline contain the same information.
Capabilities are format-dependent, and knowing which is which saves a lot of confusion. This matrix reflects what the current build actually does.
| Format | Read & analyse | Pixel stego | Metadata channel | Write EXIF tags |
|---|---|---|---|---|
| JPEG | Yes | Yes | Yes | Yes |
| PNG | Yes | Yes | Yes | Yes |
| TIFF | Yes | Yes | Yes | Yes |
| WebP | Yes | Yes | Yes | Yes |
| GIF | Yes | Yes | No — no XMP | No |
| BMP | Yes | Yes | No — no XMP | No |
HEIC/HEIF, AVIF and camera RAW formats (CR2, CR3, NEF, ARW, RAF, DNG, ORF, RW2, PEF, SRW) appear in the format catalogue, but they cannot be opened — the image pipeline decodes only the six raster formats above. StegoPixel will not quietly pretend otherwise: an unsupported file is reported as unsupported rather than partially analysed.
Two more format facts worth knowing before you start:
.jpg path raises a format-mismatch warning rather than silently destroying the payload.A metadata channel targets 44,984 bytes in JPEG, PNG, TIFF and WebP — and that figure is explicitly a typical maximum, not a guarantee. The app's own documentation notes that external EXIF readers may stop honouring metadata profiles beyond 64 KB, which is why the ceiling sits below it. It also depends on the image, the tags already present and the payload's own overhead.
Pixel capacity scales with resolution, the number of channels and the bit depth you select. Rather than estimate, the app shows the real available capacity for the specific file and settings before you encode, and refuses rather than dropping a payload that does not fit.
StegoPixel is a forensics and steganography toolkit, not a photo editor. It does not restore damaged files, does not attempt to reverse lossy compression, and makes no claim to attribute an image to a specific generator or person. Where a technique is heuristic — carrier-signature detection and every AI verdict — the interface says so.