RECOVERY TOOL JPG PNG GIF BMP WebP

Image Salvage

Recover what's left of a damaged JPEG, PNG, GIF, BMP, or WebP.

File

Original file is never modified · 100% local — nothing is uploaded

How Image Salvage works

  1. Identify the format from its magic bytes.
  2. Run format-specific structural checks — headers, trailers, declared vs. actual size.
  3. Ask the browser's own image decoder to render whatever it can.
  4. Offer a safe, append-only repair only where one is well-defined — a missing JPEG EOI marker, a missing GIF trailer byte, or rebuilding a truncated PNG from its intact chunks.
  5. Scan for embedded or concatenated images and extract any surviving EXIF metadata and thumbnail.

Supported formats

JPG, PNG, GIF, BMP, WebP. Looking for a format Image Salvage doesn't handle? Check the Unknown File Identifier →

Common error messages this diagnoses

If you're here because something threw one of these, this tool shows you exactly what's wrong and how much is recoverable:

  • "This image cannot be displayed because it contains errors" — (browser) — this tool shows what the browser can still decode, plus tries to salvage the rest.
  • "Premature end of JPEG file" — (libjpeg) — the classic truncated-JPEG error, very literally what this tool targets.
  • "not a PNG file" — the signature check failed — could be wrong extension or real corruption.

What this tool doesn't do (yet)

No custom pixel decoder — the preview is exactly whatever the browser's own image decoder can render, nothing more; there's no row-by-row entropy-stream reconstruction, no estimated/gray-filled pixels for missing regions, and no DHT/DQT Huffman-table repair. Repairs are limited to safe, append-only fixes (a missing JPEG EOI marker, a missing GIF trailer byte, or rebuilding a truncated PNG from only its intact chunks) — nothing attempts to guess or reconstruct actual pixel data. TIFF, ICO, HEIC/HEIF/AVIF, camera RAW formats (CR2/NEF/ARW/DNG/etc.), layered formats (PSD/XCF), and vector formats (SVG/EPS) aren't supported yet. GPS coordinates are detected as present but not decoded to latitude/longitude in this version. The raw pixel interpreter is a manual tool — it doesn't try to auto-detect the correct settings, only suggest resolutions whose byte count matches the file.