Image Error Level Analyser

After two years, this image forensics analysis service has been turned off.


A number of factors have contributed to this decision to close. Primarily it has been based on the time and effort required by our volunteers, as well as the on-going costs to maintain the service for public use.

It is at this point that we would like to take this opportunity to thank everyone who has been involved with Error Level Analysis, and in particular, we would like to thank Dr Neal Krawetz for his work making digital image forensics accessible to a wider group.

Most importantly though, we would like to thank our users. Over the past two years, our users have analysed in excess of a quarter of a million images, with the results being served to over 1.5 million people. Without this interest in the service, errorlevelanalysis.com would surely have never have been.


Error level analysis shows differing error levels throughout this image, strongly suggesting some form of digital manipulation. Areas to note are the lips and shirt, as well as the eyes. All are at significantly different error levels than their surroundings. Presumably, colours have been altered and areas brightened.

Mouse over for ELA image


“Error level analysis (ELA) works by intentionally re-saving the image at a known error rate, such as 95%, and then computing the difference between the images. If there is virtually no change, then the cell has reached its local minima for error at that quality level. However, if there is a large amount of change, then the pixels are not at their local minima and are effectively original.”

-Neal Krawetz, Ph.D. hackerfactor.com

This implementation makes use of the Python Image Library, and libjpeg (v6.2.0-882.2). ELA is carried out at 95%. Resulting ELA images have had their brightness enhanced to further separate differences out.

Contact me at pete@errorlevelanalysis.com.