It's neat how the offset affects focal point. To my eye they look best when the main object is kept fairly stationary, and the further away you are the faster the wiggle speed should be.
I read that they used artisanal code(!) - did they write a new image hashing algo, or use an established one?
(Yes, I find silly and immature stuff amusing.)
I have 120k photos in iCloud that I'm sure have duplicates (I exported my library to Google Photos years ago and exported it back to iCloud). The iOS duplicate detection stopped flagging duplicates for me to merge a while back. I gotta do something like this script...
"In Web Browsers (Chrome, Edge, Firefox): Install browser extensions like GIF Scrubber on Chrome or GIF Blocker on Firefox, which add playback controls to any web page.
On iPhone/iPad: Go to Settings > Accessibility > Motion, and turn off Animated Images to pause all GIFs in Safari.
On Mac: Go to System Settings > Accessibility > Display, and toggle off Animated Images.
In PowerPoint: Press the 1 key on your keyboard during a presentation to pause the GIF."
The first couple of examples were good but later examples were not so impressive. I think the later examples suffered from having too little of perspective change between frames and too much of subject movement -- which defeats the illusion of 3d from a "static" image.
Ideal one would have a left-to-right pan betweem the two clicks ..roughly matching the perspective shift between left eye and right eye ..while the subject stays static.
(super cool all around, thanks for sharing)
We really need a short for "is it AI or not? has entered the discussion".
It looks like a useless feature on the moment because what you want is the nice framing you are trying to capture, but it happens to become an incredible feature years later when a long press on your photo makes your then baby smile and laugh.
It's a best of both world implementation because unlike just capturing a video, you still get your high quality, stabilized and sharp picture of the picture you capture PLUS the video.
[0]: https://www.reddit.com/r/wigglegrams/top/?screen_view_count=...
Basically it's multiple lenses next to each other, each capturing a small slice on the 35mm film. Every lens has it's own shutter, which is triggered at exactly the same time.
This wasn't too involved and quite cheap to implement with analog tech in the 80s/90s, but if you want to do the same thing with digital there's quite a bit more to consider. Here's a cool video of someone building a digital stereo camera: https://www.youtube.com/watch?v=_aofxbH0elo
The hard part with digital boils down to: Cheap camera modules are hard to calibrate to the same parameters and sometimes impossible to set focus, so pictures look the same. And taking pictures takes quite a bit of processing power, so if you want to take 4 pictures at once it gets a bit tricky with just a cheap raspberry or similar.
This is one option, trading ease of use and low cost for lower picture quality and less light.
*ouch, I feel old
The others are nice (but hectic) animations to me.
https://share.google/aimode/X1Q5rp3z2tEbtDSPf
"Yes, but not natively just by using a standard <img> tag in web browsers. Because native APNGs play continuously like a traditional GIF, you need to use one of the following methods to pause them: [1, 2, 3, 4]
1. The Canvas Method (Best for Web Controls) To add play/pause functionality, you cannot use an <img> tag. Instead, you need to render the APNG onto an HTML <canvas> element and control it using a JavaScript library like apng-js. This provides precise, video-like control over the frames. [1, 2, 3, 4]
2. The Cover Method (Simplest Fallback) If you just want to freeze an APNG on its first frame, you can layer a static .png of the first frame directly over the APNG. When you uncover or hide the static image, the underlying APNG will be revealed and play as normal. [1]
3. Use CSS Animation Alternatives [1] If you are designing the animation yourself, an alternative is to build it as a single static image (a filmstrip of all frames side-by-side) and animate it using CSS background-position. This allows you to pause the image natively using the CSS animation-play-state property. [1, 2, 3]"
Inside of every old man, is a young man, going ”What the hell just happened?”.
I have done both of these. For the first one[0], I used a Nimslo 3D and for the second one[1] I drew with pastels on paper, and then drew a depth map in Photoshop and used it to displace pixels horizontally for the novel perspectives.
The OP's "accidental" wigglegrams are mostly of the first variety but, the horizontal allignment is not locked in and the shots were taken not at the exact same time. That's why the parallax effect isn't as strong and they don't look as good as the first 3 images that came from Nimso/Nishika.
What is intresting is that both of these two methods are relevant in the age of modern iphone. Iphones capture multiple exposures together in live photos, so moving the iphone laterally when shooting creates a "boomerang" wigglegram. Iphones also capture depth map from the LiDAR sensor when shooting in portrait mode.
Between increased hardware capability and genai for synthesizing additional perspectives, we could be living in a golden age of wigglegrams. Alas, they are out of style.
[0] https://fooladder.com/post/115435676962/at-the-concert [1] https://fooladder.com/post/61216111704/starry-venice
These days you can just capture video and make a 4d Gaussian splat
[0] "In 1878–1879, Muybridge made dozens of studies of foreshortenings of horses and athletes with five cameras capturing the same moment from different positions." via https://en.wikipedia.org/wiki/Bullet_time
But it does have a nice 3d effect. For me, the cycle speed seems excessive. I believe someone suggested tying wiggle effect to mouse movement?
Just works with depth hinting no actual stereo information.
It's really a completely different effect to just stitching a few different photos together.
[1] https://fstoppers.com/film/worst-camera-ive-ever-loved-nishi...
If you pick up a digital stereo camera that creates .MPO files, I wrote a small app to create stereograms: https://github.com/EngineersNeedArt/Stereographer
Other than getting used to making the switch, I don't think there is any cognitive load. Just pairing normal lens focus with a different triangulation distance, which is something we quickly learn to do without thinking when using any glasses or lenses.
I find it a lot more calming than Wiggle-D. And paired with some simple head/eye tracking via laptop cams, it could be really versatile.
The animated plots are great. Be great to have a trackpad rotatable version. (And the need/benefit for head tracking gets really obvious when I move. The perception of reverse/non-sensical dynamics is strong.)
image formats are more backward compatible, but at some point one has to ask, how low do you want to go? vp9 plays on iphones from 2020 and android phones from 2010. I think animated avif files are basically av1 video files, like animated webp is vp8/9 video.
Animated gif is playable anywhere, but 10x bigger. For a wiggle blog or website I'd provide animated png alongside anaglyph, or anaglyph only.
There is also animated Jpeg XL *.jxl files for the bleeding edge. It's a pure image format but support is not there yet.
The unintentional ones deviate on both bases, creating a more chaotic result.
("Creating chaos" being an interesting notion itself....)
I've been taking pictures to be more effective wigglegrams now that I know I can auto-GIF them. I'll do a followup post at some point. The big trick is that they look better when the subject stays in the center of the frame, with the camera "orbiting" it to create a sort of parallax effect.
(The original defaulted to “past 24 hours” for me, which didn’t show anything.)
Sites/apps like Discord sometimes consume the mp4 instead of gif or webp when embedding (and in Discord's case they're not hotlinking, I believe they're running it through their own media proxy service).
For example, <https://klipy.com/gifs/begone-witch> turns into <video> (with ARIA GIF label!) and src <https://images-ext-1.discordapp.net/external/kQT1eR3Sa6g3mZ_...>
7.1 MB gif => 679 KB mp4
Thanks for the response and I agree there are benefits to newer formats. I actually do prefer newer codecs when I am using a newer system, such as AV1 (I actually wrote a blog post on that yesterday https://inavoyage.blogspot.com/2026/06/720p-on-384kbps-how-h...), and recall avif, but forgot about it.
I think .avif sounds preferrable since it is single frames able to play animations using the same library as av01. I am curious how much CPU usage it needs for a just a few frames. A Pentium 1 might not be able to play it easily, but I imagine a dual core Intel E6400 wouldn't have much of an issue, even if it is 20 years old.
Yeah, basically the only reason I suggested older support was because it was just a couple frames (maybe 5 tops), as opposed to something that uses hundreds or thousands of frames.
Do you know what a wigglegram is?
↳ c. "suavecorn" on reddit
It is a kind of stereo image you make by looping frames together, like as a GIF.
↳ c. "aka_hochstapler" on reddit
The effect is quite convincing.
↳ c. "suavecorn" on reddit
I am something of an indecisive photographer and when I like an angle I will take a lot of frames, from slightly different angles etc., looking for "the shot". And since I am also a bit of a hoarder I never clear out my camera roll.
"Same shot from different angles"? You know what that sounds a bit familiar.
↳ scrollin'
Sure enough my phone is full of wigglegrams that I took by accident. Years' worth, waiting for me to sit down and stitch them together.
Or, perhaps, for something to stitch them together. It occurred to me last weekend that I can use perceptual hashing - what TinEye (et al.) uses for reverse image search - to try and find runs of similar images and pull them out from my library automatically. So I wrote a little script to hash all my pictures:
↳ slowly, slowly
Hashing is quick but downloading photos from iCloud is not.
The result is a hash that - unlike a cryptographic function like sha1 - will share more bits with hashes of similar-looking images than with dissimilar ones. We can use that to calculate the hamming distance between pairs of images and find a threshold:
↳ ten seems like a good boundary
And extract pairs:
↳ plausible...
And hundreds of wigglegrams spew forth.
↳ space mountain?
↳ block island
↳ deland
↳ probably also disney?
A few of them I am guilty of taking intentionally. But most are true accidents. As such many of them come out as less "stereoscopic" and more "kinescopic" - like little unintentional movies.
↳ notting hill
↳ perugia
Animals are a natural fit for the concept, unpredictable as they are:
↳ cat
↳ another cat
↳ dog
↳ pigeon
Design-work also. (I am always indecisive.)
↳ ipad sidecar I should write on
↳ baby book
↳ same but doing a rad flip
↳ resistor bridge
↳ leg in pieces
And sculpture:
↳ olivetti
↳ charlotte?
↳ frog with a joint
What fun. I have the script up on Github if you want to play with it - it'll work on your iCloud photos library if you're on a Mac, or you can point it at a directory of pictures otherwise.
Cheers~
↳ and happy birthday ig
home ~ posted june 04 2026