skip to navigation
skip to content

ImageHash 3.7

Image Hashing library

A image hashing library written in Python. ImageHash supports:

  • average hashing (aHash)
  • perception hashing (pHash)
  • difference hashing (dHash)
  • wavelet hashing (wHash)


Why can we not use md5, sha-1, etc.?

Unfortunately, we cannot use cryptographic hashing algorithms in our implementation. Due to the nature of cryptographic hashing algorithms, very tiny changes in the input file will result in a substantially different hash. In the case of image fingerprinting, we actually want our similar inputs to have similar output hashes as well.


Based on PIL/Pillow Image, numpy and scipy.fftpack (for pHash) Easy installation through pypi.

Basic usage

>>> from PIL import Image
>>> import imagehash
>>> hash = imagehash.average_hash('test.png'))
>>> print(hash)
>>> otherhash = imagehash.average_hash('other.bmp'))
>>> print(otherhash)
>>> print(hash == otherhash)
>>> print(hash - otherhash)

The demo script find_similar_images illustrates how to find similar images in a directory.

Source hosted at github:


  • 3.5: image data handling speed-up

  • 3.2: whash now also handles smaller-than-hash images

  • 3.0: dhash had a bug: It computed pixel differences vertically, not horizontally.

    I modified it to follow dHash. The old function is available as dhash_vertical.

  • 2.0: added whash

  • 1.0: initial ahash, dhash, phash implementations.

File Type Py Version Uploaded on Size
ImageHash-3.7-py2.7.egg (md5, pgp) Python Egg 2.7 2017-09-22 293KB
ImageHash-3.7-py2.py3-none-any.whl (md5, pgp) Python Wheel 2.7 2017-09-22 286KB
ImageHash-3.7.tar.gz (md5, pgp) Source 2017-09-22 287KB