Recent changes to JPEG-Repair Toolkit

By | May 20, 2019


# Due to an influx in STOP Djvu related cases this version adds an extra option to the append feature:

Append takes the header of a reference file and ‘glues’ it to the corrupt file. The new option allows you to select a number of bytes from bitstream of reference file to be inserted before data from corrupt file (this was a fixed number, 4096 bytes). This allows for greater flexibility for getting for playing with color and brightness. It also helps if reference file is visually similar to the corrupt file.


# Mostly usability, as I am probably the one who uses JPEG-Repair the most I removed some stuff that I actually never used.

# Magnifier, I want it to be able to watch it next to mouse pointer: Left click to make it so. Release and it will snap back in it’s original position.

# I also do a lot of saving and file loading for example because JPEG-Repair removes invalid markers and such so I made it batch this. When opening a corrupt file it may now automatically save and open files a few times.

# I also added save/reload option, saves current state and reloads the saved file. In effect creates an undo option.

# Enable align option removed. Current mechanism is, if value for bytes to add > 0 then it’s enabled.

# Bytes removed value no longer copied to bytes to align value. If you wish to copy the value however, simply double click bytes to add value.

# Double click byte address to jump to first byte in scan data.

# As modifying resolution is in fact patching I moved it to the editor area.

# Some modifications to append option based on experiences repairing ransomware encrypted JPEG’s.

# Bug fixes.

Version 2.8.24

# Adds decoder support for restart markers

Decoding may fail however with severely corrupted JPEGs in which case editor is disabled.

# Removed automatic byte address autofill as result of a decoder error

Decoder may fail only after some time corrupt data was introduced in stream. JPEG-Repair automatically selecting fail byte address results in user removing corrupt data from the point while corrupt data that preceeds that point remains. So user now has to click image to select point from which corrupt data is to be removed. I feel it’s more consistent and more correct. My strategy is always to click slightly before visual corruption to make sure all corrupt data is actually removed.

# Decoder speed improved (2 – 2.5 times faster)

Did some optimizations in pseudo decoder. I was still decoding data I never actually used.

# Fixed issue with magnifier and portrait mode images

Lower part of portrait oriented images could not be selected by clicking the image. Took me a while to figure out, but is fixed now.

# Default for ‘show preview’ in browser for corrupt files is now Disabled.

I got too man reports where JPEG-Repair would hang when selecting corrupt files. Reason for this was the image viewing component I use would hang trying to decode the corrupt file.

# Name change: Was JPEG-Repair Toolkit, is now JPEG-Repair

In the future I will refer to JPEG-repair AND JpegDigger as JPEG-Repair Toolkit. Stand alone tool will be referred to as JPEG-Repair. I will at some point offer the JPEG-Repair Toolkit which includes JPEG-Repair and JpegDigger, and JPEG-Repair and JpegDigger as stand alone tools.

# Provisions to accommodate future license models

See previous point.

# Download now includes JpegDigger


Changes to JPEG- Repair from version 2 >

I feel quite confident in saying, that IF a file is repairable (so, contains JPEG data + we have reference header), JPEG-Repair Toolkit can help you do it. So if you need to fix corrupted photos, you may want to give it a try.

2.5.91: Most work went into GUI, program flow. Goal was to make JPEG-Repair more user friendly. Several components moved to places to where they’re needed rather than just sitting in the main screen. Magnifier now has a fixed position (no longer needed to click the mouse).


2.5.23: fixed typos, reference file dialog parses EXIF info from donor file, added no preview option to open file dialogs to prevent lockups with severely corrupted files.

JPEG-Repair now parses EXIF data from reference files.

JPEG-Repair now parses EXIF data from reference files.

Pre 2.5.23>>

  • MCU aware pseudo JPEG decoder with (decoding) error detection
  • Improved navigation through image using image view (up/down line of MCUs, up/down MCU)
  • JPEG preview in file browser
  • Resolution override settings (to fix corruption like this)
  • Patch now sort of guides you through first repairs, repair invalid markers and prompt to load repaired file
  • No longer needed to copy to folder with corrupt files and rename reference file to sample.jpg. You will be prompted to select a reference file.
  • Append option: Appends selected JPEG header to any file, so cool!
  • Error report window, fired if repair fails or encountered errors
  • RGB info added to magnifier which I find to be useful for images where it is difficult to visually match colors in different areas.
  • Changed nagging dialog in trial, less pop-ups, trial must be usable to some degree
  • Changed trial limitations in PATCH mode: Now possible to go through several iterations of file repair.

Append option is particularly powerful! Check video for an example, none of the competing tools (Stellar, HetMan, PixRecovery, Picture Doctor, JPEG Recovery Pro) is able to repair images like these. Apart from example in video several others (more interesting pictures) were fixed using this method.

These are the different stages:

  1. Basically the file is binary blob with no recognizable JPEG structures. However entropy suggests JPEG data. JPEG Header is glued to file.
  2. After JPEG header is glued to file and data was stripped from byte combinations that upset photo viewers (JPEG decoders).
  3. About 1/6th of total data in file was cut to get us at stage 3. Just tiny amount of corruption + overriding header width/height settings + cropping end of file gets us:
  4. Almost final file. Image is copied to Windows clipboard and further cropped and color corrected using PhotoDemon.

Thanks to append option we can virtually repair any JPEG, as long as it contains JPEG data and we have a suitable donor/reference file.

Various improvements and bug-fixes in PhotoHeal companion app.

  • Filename is automatically generated for images pasted from clipboard
  • Added preview in file/open save dialog
  • Fixed bug with scrollbars

Leave a Reply

Your email address will not be published. Required fields are marked *