HCODX/Image Analysis Lab
100% browser-based · WebGPU + WebGL accelerated · Zero upload

Image Forensics Lab: ELA, EXIF, deepfake CNN and pixel inspection

The most comprehensive in-browser image analyzer. Drop a JPEG, PNG, WebP, HEIC or TIFF and inspect every layer: ELA (error-level analysis), full EXIF / IPTC / XMP / ICC metadata, AI & deepfake CNN detection, RGB and luminance histograms, JPEG quantization tables, PNG chunk inspector, FFT magnitude spectrum, edge maps, LSB stego planes, perceptual hash, pixel-level magnifier and side-by-side diff. WebGL shader visualizations and WebGPU AI inference — nothing uploaded.

No image detecting…
Drop image to analyze

Drop an image, paste, or click to browse

Every analysis runs locally on your device. Your image never leaves the browser.

JPEG · PNG · WebP · HEIC/HEIF · TIFF · AVIF · BMP · GIF · SVG
· · · · ·
All analyses, one tab away

15 image analyses · 0 uploads

Every level — pixel, frequency, statistical, container, AI — accessible from one keyboard-friendly interface.

Error Level Analysis

Re-saves the image at a chosen JPEG quality and highlights the per-region recompression error. Tampered regions show up brighter than their surroundings.

Full metadata

EXIF, IPTC, XMP, ICC color profile, MakerNotes, GPS coordinates with map link, GPS altitude, timestamps, camera + lens + software signatures.

AI / deepfake detection

An ONNX CNN classifier runs locally to score the likelihood that the image is AI-generated or face-swapped. WebGPU when available.

Histograms & channels

RGB, luminance, hue, saturation distributions. Per-channel views (R/G/B/Y/Cb/Cr) for clipping and white-point inspection.

FFT spectrum

2D fast Fourier transform on a 512×512 luminance crop. Frequency anomalies (resampling traces, periodic noise, watermarks) appear as bright spots.

JPEG forensics

Quantization tables, quality estimate, chroma subsampling (4:4:4 / 4:2:2 / 4:2:0), restart markers, JFIF / Adobe / Exif segment dump, double-JPEG fingerprint.

PNG chunk inspector

IDAT count, tEXt / iTXt / zTXt, ancillary chunks, color type, bit depth, filter distribution, interlace mode, sBIT, gAMA, cHRM, sRGB intent.

LSB / steganography

Per-channel least-significant-bit plane visualization. Hidden payloads embedded by JSteg / Outguess / classic LSB tools show up as structured patterns.

Edge maps

Sobel, Scharr, Laplacian and Canny edges in a single WebGL shader pass. Useful for clone detection and seam analysis.

Perceptual hash

aHash, dHash, pHash and bHash — share-friendly compact image fingerprints for near-duplicate detection and reverse-search lookups.

Pixel inspector

Crosshair magnifier (10× / 20×), color picker with HEX / RGB / HSL / OKLCH, coordinate readout, and grid overlay.

Side-by-side compare

Load a second image and overlay it with a slider, blend modes, or a per-pixel diff heatmap.

FAQ

Frequently asked questions

No. Everything — metadata parsing, ELA, AI inference, FFT — runs entirely in your browser. The only network requests are one-time CDN fetches for the EXIF parser (~30 KB) and the deepfake detection model (~85 MB, cached after first use).

ELA is a heuristic — it highlights regions that recompress differently. Modern editors (and even some cameras) leave traces that ELA can surface, but ELA is not proof of forgery on its own. Use it alongside metadata, noise analysis, and the AI detector for a fuller picture.

Yes. The ONNX model is downloaded once on first click (~85 MB) and cached. WebGPU when available, WebAssembly otherwise — automatic detection.

JPEG, PNG, WebP, AVIF, GIF and BMP through the native browser decoder. HEIC/HEIF and TIFF use lazy-loaded WASM decoders (libheif-js, UTIF) — they kick in only when needed.

The same pipeline as our background remover: pre-resize big images for the heavy passes (histogram, edges, ELA, AI) while keeping the original around for exports. WebGL fragment shaders draw histograms and channel views, WebGPU runs the deepfake CNN, and a Web Worker handles the FFT.

About

About in-browser image analysis

The Image Analysis Lab is a single-page forensic workbench that runs every analysis locally in your browser. There is no upload step, no server-side processing, and no telemetry on the image bytes. The whole tool is a static HTML file plus a few lazy-loaded libraries fetched once from public CDNs and cached afterwards.

What each analysis tells you

  • Overview & Metadata — file dimensions, MIME type, SHA-256 fingerprint, full EXIF / IPTC / XMP / ICC blocks via exifr. GPS coordinates link straight to OpenStreetMap.
  • ELA (Error Level Analysis) — re-saves the image at a known JPEG quality and amplifies the per-pixel recompression error. Tampered regions usually look brighter than untouched ones. The slider lets you sweep through quality levels to find the sweet spot.
  • Noise residual — subtracts a Gaussian-blurred copy of the image from the original to expose local noise variance. Uniform sensor noise is the signature of an untouched photo; flat or contrasting noise patterns can indicate cloning, healing, or inpainting.
  • Histogram & Channels — RGB and luminance distributions with clipping percentages, plus per-channel views (R / G / B / Y / Cb / Cr) rendered via WebGL fragment shaders for instant switching.
  • Edges — a Sobel kernel run as a WebGL shader. Useful for spotting clone-stamped regions and unnatural seams.
  • LSB / Stego — visualizes the least-significant-bit plane per channel. Natural photos look like white noise here; structured patterns indicate hidden payloads from tools like JSteg or Outguess.
  • Frequency (FFT) — a 2D fast Fourier transform on a 256² luminance crop, running in a Web Worker so the UI stays responsive. Bright spots away from the DC center mean periodic patterns: resampling, half-tone noise, watermarks, compression grids.
  • JPEG analysis — parses every SOI / SOF / DQT / DHT / APP / COM marker, extracts quantization tables, estimates the original quality factor, detects chroma subsampling (4:4:4 / 4:2:2 / 4:2:0).
  • PNG chunks — IHDR fields, IDAT count, ancillary chunk classification, tEXt / iTXt / zTXt dump.
  • AI / Deepfake — an ONNX ViT classifier (onnx-community/Deep-Fake-Detector-v2-Model-ONNX) runs locally via Transformers.js. WebGPU when available, WebAssembly otherwise. ~22 MB q8 model, cached after the first click.
  • Perceptual hash — aHash, dHash, and pHash (32² DCT). Use these to compare local copies of images; for cross-internet reverse search use the engine quick-links which copy the image to your clipboard.
  • Pixel inspector — crosshair magnifier with per-pixel HEX / RGB / HSL / luminance readout.
  • Compare — drop a second image and get a per-pixel diff heatmap with the average-difference summary.
  • Divergence Panel — the unique fusion view. Runs ELA + noise + edge density + the CNN deepfake detector on the same image, normalizes each signal to a 0–100 suspicion score, and reports where classical and CNN forensics agree or disagree. Agreement is high confidence; disagreement is the interesting case — classical scans clean + CNN flags AI usually means a pristine diffusion-model output; classical flags edits + CNN says authentic usually means well-saved Photoshop work.

Performance

The same pipeline that powers our background remover: refinement passes (ELA, edges, channels, LSB) run as WebGL 2 fragment shaders so slider updates land in the same frame even on a 4K image. Heavy analyses (FFT, AI inference) run on background threads — FFT in a dedicated Web Worker, AI on WebGPU when the browser supports it. Large images are auto-downsampled to a 1024 px working copy for the heavy passes while the full-resolution source is kept around for the magnifier and report export. Switching tabs cancels any in-flight work via a generation token so you can navigate without waiting.

How it compares to other tools

Tools like FotoForensics (ELA + metadata, upload-required) and Forensically (the open-source forensic toolkit) cover the classical signal side beautifully but are classical-only. Commercial AI detectors like Hive are CNN-only and require an account. The Image Analysis Lab fuses both worlds in one page — and the Divergence Panel is, to our knowledge, unique among in-browser tools.

Privacy

Your image bytes never leave the browser. The only network requests are one-time fetches for the EXIF parser (exifr, ~22 KB) when you open the Metadata tab, and the Transformers.js runtime + ONNX model when you open the AI tab. All other analyses run on JavaScript already shipped with the page.

Related

Related tools