Photo Forensics Studio — Image Manipulation Detection & Analysis

Last updated:

Check a photo for edits in your browser: error level analysis, clone detection, noise views and full metadata. Nothing leaves your device.

🔬 Drop one or more images here, or click to choose
JPEG, PNG, WebP, GIF, BMP, HEIC/AVIF (if your browser decodes them) and RAW (DNG, CR2, NEF, ARW, PEF, ORF, RW2, RAF — metadata + embedded preview)
✔ Free✔ No account✔ Nothing uploaded — all analysis runs in this tab✔ Works offline after first load✔ Unlimited files
Exhibit details (optional — printed on the report)
Options
Extra views (viewing aids, no verdict; up to 4 MP, run in a background thread)

Engine loads with the page — no download step. Drop an image to begin.

How to read the verdicts: no signal = the method found nothing unusual; weak = something to look at, usually explained by content (edges, text, sky); notable = a coherent region behaves differently from the rest of the image. A conclusion needs two or more independent methods agreeing on the same region. Full method descriptions, parameters and limitations: forensics methods & limitations. Changelog: v2.0.0.

Updated 12 October 2026: added three extra views (noise residual with a local noise-level map, Sobel edge strength and PCA colour projection), each downloadable as PNG.

Free photo forensics software that runs in your browser: error level analysis, JPEG ghost sweep, copy-move clone detection, noise and gradient maps, bit-plane analysis, full EXIF/XMP/IPTC metadata with C2PA detection, SHA-256 hashes and an exportable evidence report. Batch several exhibits, label them for a case, and nothing ever leaves your device.

Photo Forensics Studio

Seven forensic passes, three extra views, a metadata audit, file hashes and an evidence report — free, no account, nothing uploaded. Drop one image or a whole batch.

🔒 100% Client-Side — Your images never leave your device
⚡Error Level AnalysisELA
👻JPEG Ghost Sweep
🔍Copy-Move / Clone Detection
📡Noise Variance Map
💡Gradient Direction
🧮Bit Planes + χ² LSB
🖼️EXIF Thumbnail Check
🏷️EXIF · XMP · IPTC · C2PA
#️⃣SHA-256 · SHA-1 · MD5
📄Evidence Report (PDF/JSON)

How can you tell if a photo has been edited? Photo Forensics Studio runs seven independent passes — error level analysis, JPEG ghost sweep, copy-move clone detection, noise variance, gradient direction, bit-plane/LSB statistics and an EXIF-thumbnail comparison — plus a full metadata and file-structure audit, and tells you in plain language which regions the methods agree on. No single method is proof; the tool reports each as no signal, weak or notable and lets you export the whole examination as a hashed evidence report. Everything runs locally; the file is never uploaded.

Photo Forensics Software for OSINT, Journalism & Digital Investigation

Photo Forensics Studio is free photo forensics software that runs entirely in your browser. It combines the pixel-level methods used in professional image authentication — error level analysis, JPEG ghost detection, copy-move (clone) detection, noise-variance mapping and bit-plane statistics — with a full audit of the file itself: EXIF, GPS, XMP edit history, IPTC, ICC profile, JPEG quantization tables and quality estimate, C2PA / Content Credentials presence, trailing data and embedded thumbnails. Every exhibit is hashed (SHA-256, SHA-1, MD5) over its original bytes before anything is decoded, and the whole examination can be exported as a printable evidence report with the parameters of every method, so a second examiner can reproduce it. The methods follow the practice described by the Scientific Working Group on Digital Evidence (SWGDE) for image authentication: multiple independent techniques, documented parameters, and conclusions drawn only where methods agree.

Detection methods at a glance

MethodWhat it detectsHow it is computed hereKnown limits
Error Level AnalysisRegions that re-compress differently from the rest: splices, local edits, pasted elements from lower-quality sourcesRe-save at the chosen JPEG quality (default 75), map the absolute difference; 16 px block errors are normalised by each block's edge content and flagged beyond 6 MAD above the median (or far below it, for pre-compressed pasted content); a verdict needs a contiguous clusterEdges and text are naturally bright; heavy recompression, resizing and screenshots erase the signal
JPEG ghost sweepContent that carries an earlier JPEG compression history different from the file's own (copy-pasted from another JPEG)Re-save at qualities 40–100 in steps of 5 at native resolution; a block whose error dips at a quality other than the file's own quantization-table quality is a ghost; the quality forming the largest cluster is reportedPasted regions smaller than ~200 px or not aligned to the 8×8 grid are often missed; PNG/WebP sources have no own-quality reference
Copy-move (clone) detectionA region duplicated elsewhere in the same image (clone stamp, healing brush, object removal)16 px blocks every 4 px, brightness-normalised 4×4 mean features, lexicographic neighbour matching, offset voting; an offset counts when ≥20 pairs agree (scaled with image size), the shift is ≥32 px and the source blocks form a coherent regionRepeating textures (brick, tiles, text) can match legitimately; rotated or rescaled clones are not matched
Noise variance mapRegions whose sensor-noise level differs from the rest: spliced content, generative fill, local denoise or blurResidual against the 8-neighbour mean per 8 px block; the noise floor is estimated on low-texture blocks only and outliers beyond ±3.5 MAD are clusteredSkies and shadows are naturally smooth; a near-zero floor means a rendered, upscaled or AI-generated image and is reported as such
Luminance gradientInconsistent lighting direction between an object and its sceneSobel-style gradient; direction mapped to hue, magnitude to brightnessVisual aid only; not scored
Noise residual + noise level map (extra view)Areas whose grain differs from the rest: pasted, resized, denoised or retouched contentLuminance minus its 3×3 median, amplified to the 99th percentile; per 16 px block a robust noise estimate (1.4826 × median absolute residual) coloured against the median blockViewing aid, not scored; texture reads as noisy and skies as smooth; whole-image resizing or denoising evens it out
Sobel edge strength (extra view)Outlines that are softer or harder than comparable edges (resampled or blurred insertions)3×3 Sobel gradient magnitude of luminance, white = 99.5th percentileViewing aid, not scored; depth of field, motion blur and sharpening change edges in genuine photos
PCA colour projection (extra view)Subtle colour-cast or white-balance differences hidden under brightnessPrincipal component analysis of the RGB covariance (Jacobi eigen-decomposition); each pixel projected on components 1–3 and stretched 0.5–99.5th percentileViewing aid, not scored; differently coloured objects and mixed lighting stand out too
Bit planes + chi-squareSequential LSB steganography; unnatural low-bit structureLSB planes of R,G,B shown; Westfeld–Pfitzmann pairs-of-values chi-square on the blue channelMeaningful only for lossless formats; JPEG decoding destroys LSB payloads
EXIF thumbnail checkEditing after capture; metadata transplanted from another photoEmbedded EXIF thumbnail correlated with the downscaled image (flag below 0.95, notable below 0.85)Some cameras and transfer tools write a differently processed thumbnail
Metadata & structure auditEditor signatures, re-saves, generative-AI markers, stripped EXIF, resized images, appended dataEXIF IFD0/ExifIFD/GPS/IFD1, XMP (CreatorTool, dates, xmpMM:History, IPTC digital source type), IPTC, ICC, JPEG quantization tables → quality and IJG-standard check, progressive flag, subsampling, APP markers, COM, bytes after EOI, C2PA/JUMBF presenceMetadata is trivially editable; its absence proves nothing

The three extra views are pictures to look at, not tests: they carry no verdict and do not change the overall result. Each card says what the view shows and what it cannot prove. Photos larger than about 4 megapixels are scaled down first (about 8 megapixels when your browser has WebGPU, which computes the median noise residual and the Sobel edge view on the graphics chip), and the card says so. The choice of views was inspired by the tool list of Sherloq, an open-source image-forensics workbench under the GPL-3.0 licence. Our versions are independent implementations of standard techniques (median filtering, the Sobel operator, principal component analysis); no Sherloq code is used.

How Do You Tell If a Photo Has Been Edited?

No single test proves manipulation. Error Level Analysis, first described by Dr. Neal Krawetz at the Black Hat Briefings, exposes regions that respond differently to re-compression; JPEG ghost analysis (Farid, 2009) finds content that was saved at a different quality before it was pasted in; copy-move detection finds duplicated blocks; noise analysis finds regions with a foreign noise floor. The studio runs all of them and reports each one as no signal, weak or notable with the numbers behind the call. The question to ask is whether two or more independent methods point at the same region, and whether that region coincides with an object rather than with edges, text or sky. The metadata audit then tells you how the file got here: which software last wrote it, whether its EXIF dimensions still match the pixels, whether it carries an XMP edit history or a generative-AI source-type tag, and whether a C2PA manifest is present.

What Does Metadata Reveal About a Photo?

EXIF records the camera make and model, lens, exposure, capture time and often GPS position; XMP records the editing software and, in xmpMM:History, every save step; IPTC carries captions and credits. The studio decodes all three, converts GPS to decimal coordinates, and cross-checks them: a DateTimeOriginal that differs from ModifyDate, EXIF dimensions that differ from the actual pixels, a progressive JPEG (cameras write baseline), 4:4:4 chroma subsampling, non-standard quantization tables or an editor's name in the Software tag each tell part of the story. It also reads the JPEG container itself: estimated save quality from the quantization tables, APP markers (Adobe, Photoshop IRB, ICC), comment segments, embedded JPEG headers and any bytes appended after the end-of-image marker.

Can This Tool Detect AI-Generated Images?

Partly, and honestly: there is no reliable pixel-level detector for modern diffusion models, and this tool does not pretend to be one. What it does check is what generators and their pipelines leave behind — a near-zero noise floor (reported explicitly), IPTC DigitalSourceType values such as trainedAlgorithmicMedia, PNG text chunks with generation parameters (Stable Diffusion, ComfyUI), XMP creator tools, and C2PA manifests that many generators now attach. For provenance-based verification of Content Credentials, see the C2PA Inspector (decode and verify a Content Credentials manifest without uploading) and the AI provenance & C2PA hub: a valid credential is a positive signal, and absence proves nothing.

Evidence Report & Chain of Custody

Enter a case ID, exhibit prefix and examiner name, drop one or many files, and export the examination as a printable report (save it as PDF from the print dialog) or as JSON. Each exhibit carries the SHA-256, SHA-1 and MD5 of the original bytes, format and dimensions, the parameters of every method, the result images, the plain-language verdicts and the full metadata, plus a method summary a second examiner can follow. Because the hashes are computed before decoding, anyone can confirm that the report describes the same file they hold.

RAW Files

TIFF-based RAW formats (DNG, CR2, NEF, ARW, PEF, ORF, RW2 and others) are read for their full EXIF/MakerNote-adjacent metadata and the largest embedded JPEG preview is analysed with all pixel-level passes. The sensor data itself is not demosaiced in the browser, and the report says so for each RAW exhibit.

OSINT Investigation Workflows

For investigators, image forensics is one step in verifying a photo. Combine the studio with OCR text extraction to read text in the image, the steganography tools for deeper hidden-data tests, reverse image search to find the earliest copy, and the GPS coordinates it extracts to cross-reference the claimed location. A fuller walkthrough is in the image forensics guide; the video counterpart is the Video Forensics Studio. For a side-by-side with FotoForensics, Forensically, Ghiro and Amped Authenticate, see photo forensics software compared.

Photo Forensics — Frequently Asked Questions

Is there a free online image forensics tool that does not upload my photo?

Yes. Photo Forensics Studio runs error level analysis, a JPEG ghost sweep, copy-move clone detection, noise and gradient maps, bit-plane statistics, a thumbnail comparison and a full EXIF/XMP/IPTC/C2PA audit entirely in your browser. The file is hashed and analysed locally and never leaves your device; there is no account and no upload.

What is Error Level Analysis (ELA) and how does this tool use it?

ELA re-saves the image as a JPEG at a known quality and maps how much each pixel changed. Regions with a different compression history respond differently. The studio normalises the block errors by edge content so that text and edges are not mistaken for edits, and only reports a notable result when a contiguous cluster of blocks behaves differently from the rest of the image.

How does JPEG ghost detection work?

The image is re-saved at every quality from 40 to 100. A block that was once saved at a given quality shows a dip in error at that quality. Every block dips at the file’s own quality, which is read from its quantization tables and ignored; a cluster of blocks that dips at a different quality is a ghost of an earlier compression, meaning that content came from another JPEG.

Does it detect cloned or copy-pasted regions?

Yes. Copy-move detection divides the image into 16-pixel blocks, builds brightness-normalised features for each, matches similar blocks and votes on the offset between them. An offset shared by many block pairs that form a coherent region indicates a clone-stamp or healing-brush edit, and the matched regions are highlighted in matching colours.

Can this tool detect AI-generated images?

It checks the traces generators and their pipelines leave: a near-zero noise floor, IPTC digital source type tags such as trainedAlgorithmicMedia, PNG text chunks with generation parameters, XMP creator tools and C2PA manifests. There is no reliable pixel-level detector for modern diffusion output, so the studio reports these signals rather than claiming a verdict.

What is in the evidence report?

For each exhibit: SHA-256, SHA-1 and MD5 of the original file bytes, format, dimensions and dates, the metadata findings, every analysis image with its plain-language verdict and statistics, the parameters used, the full EXIF, GPS, XMP, IPTC and JPEG structure tables, and a method summary. The report is a printable HTML page you can save as PDF, and the same content is available as JSON.

Can I analyse several photos at once?

Yes. Drop or select any number of files; they are queued, analysed one after another with progress shown, labelled with your exhibit prefix and included in one report.

Does it support RAW files?

TIFF-based RAW formats such as DNG, CR2, NEF, ARW, PEF, ORF and RW2 are read for their metadata and their largest embedded JPEG preview is analysed with all pixel-level passes. The raw sensor data is not demosaiced in the browser, and the report notes this for each RAW exhibit.

Are my images uploaded to any server?

No. Analysis, hashing and report generation run in your browser with JavaScript and Canvas; nothing is sent anywhere, and the tool keeps working offline once the page has loaded. You can confirm this in your browser’s network tab.

What does the chi-square bit-plane test tell me?

Sequential LSB steganography makes adjacent pixel values (0 and 1, 2 and 3, …) occur in nearly equal numbers. The pairs-of-values chi-square test measures that equalisation; a very low chi-square per degree of freedom on a lossless image suggests embedded data. It is not meaningful on JPEGs, whose decoding destroys LSB payloads.

What is a PCA projection in photo forensics?

Principal component analysis finds the three directions in RGB colour space along which the pixels of this image vary most. The first component is usually brightness. The second and third remove most of it and stretch what is left, so small differences in colour cast become visible. A pasted object shot under different light can stand out, but so can any genuinely differently coloured object, so it is a viewing aid rather than a test.

Why are the extra views size-limited?

The noise residual, Sobel edge and PCA views process every pixel and produce full-size images you can download as PNG. To keep memory use and run time reasonable on phones, larger photos are scaled down first: to about 4 megapixels, or to about 8 megapixels when your browser has WebGPU and a one-time self-test shows the graphics chip gives the same result as the CPU. The result card says when scaling happened and whether the GPU was used. Scaling smooths fine noise, so for noise work on a very large photo, crop the area of interest and analyse the crop.

How accurate is photo forensics software?

Each method has known failure modes, which is why the studio reports no signal, weak or notable per method and states the limits in its methods page. A clean result does not prove authenticity, because recompression, resizing and generative models can leave no detectable trace; a notable result on two or more independent methods for the same region is strong evidence of editing.

Related tools: Hash identifier · Cipher decoder