← Back to news

Help I accidentally a wigglegram

lmao.center|428 points|100 comments|by gregsadetsky|Jun 20, 2026

Help, I accidentally created a wigglegram!

Do you actually know what a wigglegram is? According to a user named "suavecorn" on reddit:

It is a kind of stereo image you make by looping frames together, like as a GIF.

The Photographer's Dilemma

I'll admit it: I am a chronically indecisive photographer. Whenever I find an angle I like, I don't just take one photo; I take a whole series of frames from slightly varying perspectives, desperately searching for "the shot."

Because I'm also a bit of a digital hoarder, I never actually prune my camera roll. Consequently, my phone is absolutely packed with accidental wigglegrams—years of sequences just waiting for me to finally stitch them together.

The Technical Solution: Perceptual Hashing

Last weekend, it hit me that I could automate this using perceptual hashing (the same tech used by services like TinEye for reverse image searches) to identify runs of similar images and extract them from my library.

How it Works

I developed a small script to generate hashes for all my images. While the hashing process itself is fast, the bottleneck was the slow process of downloading files from iCloud.

Unlike a standard cryptographic hash (like sha1), a perceptual hash is designed so that similar-looking images produce hashes that share more bits. This allows us to calculate the Hamming distance between two images to determine their similarity.

Comparison of Hashing Methods

FeatureCryptographic Hash (sha1)Perceptual Hash
SensitivityHigh (1 bit change \rightarrow total change)Low (Similar images \rightarrow similar hashes)
PurposeData Integrity / SecurityImage Recognition / Similarity
ResultUnique FingerprintVisual Approximation

The mathematical distance can be represented as: Hamming Distance=i=1n(hash1ihash2i)\text{Hamming Distance} = \sum_{i=1}^{n} (hash1_i \oplus hash2_i)

The Workflow

  • Hash all images in the library.
  • Calculate distances between consecutive frames.
  • Apply a threshold (a value of 10 worked well).
  • Extract and group the pairs.

The Results

Many of these turned out to be less "stereoscopic" and more "kinescopic"—essentially tiny, unplanned movies.

Categories of Accidental Art:

  • Animals (Perfect for this, given how unpredictable they are):
    • Cat \rightarrow Cat
    • Dogs and pigeons.
  • Design Work (A byproduct of my indecision):
    • iPad sidecar notes.
    • A baby book (including one with a "rad flip").
    • Resistor bridges and disassembled legs.
  • Sculpture:
    • Olivetti pieces.
    • Charlotte?

Get the Tool

If you want to try this yourself, I've uploaded the script to Github.

# Pseudo-code for the similarity check
if hamming_distance(image_a, image_b) <= 10:
    add_to_sequence(image_a, image_b)

It is compatible with your iCloud photos library if you are running a Mac; otherwise, you can simply point the script at any local directory of images.

Cheers~ (And happy birthday, I guess!)


Posted: June 04, 2026 | [Home] | [Blog]