WobblePic v1.5.1 is about getting your wobbles out of the app and onto the internet. Recordings can now be saved as MP4 — the format Instagram, TikTok, and X actually accept — and GIF covers the places that prefer it. Capture speed more than doubled along the way, so what you record is closer to what you saw.
This post covers everything since v1.4.6, including the v1.4.7 and v1.5.0 builds that were folded into this release.
Recording: MP4, and why it matters
Until now, a wobble recording came out as an animated WebP. It looked great and almost nowhere would take it — most social platforms either reject animated WebP or quietly strip the animation and leave you with a still frame. You could record something delightful and have no way to post it.
v1.5.1 saves MP4 (H.264) using the encoder already built into your operating system:
- Windows — Media Foundation
- macOS — AVFoundation with VideoToolbox, which picks the hardware encoder for your Mac automatically: the Media Engine on Apple Silicon, the T2 chip on 2018-and-later Intel Macs, and Quick Sync on earlier Intel Macs. If no hardware path exists, it falls back to software H.264.
No extra download, no ffmpeg, no external tools — the encoder ships with your OS, so WobblePic just asks it to do the work.
It is also simply the better file — smaller and faster to write, on every machine we measured. Each cell is file size / encoding time for the same 803x888 recording of 155 frames:
| Machine | MP4 | WebP | GIF |
|---|---|---|---|
| Windows | 2.93 MB / 1.23 s | 16.15 MB / 5.83 s | 20.75 MB / 3.84 s |
| macOS — Apple Silicon | 1.01 MB / 0.31 s | 7.55 MB / 1.90 s | 17.00 MB / 1.13 s |
| macOS — Intel (T2) | 1.18 MB / 0.86 s | 7.55 MB / 3.76 s | 17.00 MB / 2.59 s |
Read each row on its own: the Windows clip runs 5.67 seconds against 2.48 on the Macs, and a longer clip means more frames survive into the file, so the columns are not comparable down the page. Within any single row the answer is the same — MP4 is several times smaller and several times faster to encode.
Intel Macs get the full benefit here. The T2 chip encodes MP4 in 0.86 s where WebP needs 3.76 s, and the resulting file is 6.4x smaller. And as for the formats that are not hardware-encoded: the WebP and GIF sizes are identical on both Macs down to the decimal, because that encoding is deterministic — same frames in, same bytes out, regardless of the chip. Only the clock differs.
MP4 is now the default recording format on fresh installs, on both platforms. If you have used WobblePic before and picked a format, your choice is kept — nothing changes underneath you.
If encoding ever fails, the recording is saved as WebP instead (with the extension corrected to match), and the partial file is removed. You will not be handed a broken video.
Recording: GIF
GIF is also available now. It is the largest of the three formats, but X, Reddit, Discord, and Slack all take it, and sometimes a GIF is simply what a thread wants.
The frames are resampled on the time axis rather than dropped by count, so the clip plays for the same length of time as the wobble you performed. It uses a single global palette with dithering off — per-frame palettes make the colors shimmer, and dither noise crawls around the picture from frame to frame while making the file bigger.
Recording: choosing a format
The new Recording format setting (gear icon) offers MP4, WebP, and GIF as radio buttons, each with a line explaining what it is good for. Radio buttons rather than a dropdown for a reason: the real problem was never that people wanted a different format — it was that they had no idea an alternative existed, or that the file they just recorded could not be posted anywhere.
For the same reason, the armed REC indicator now shows the current format (Ready to record - GIF), so you find out before recording rather than after.
WebP recordings are now saved at 30fps. The wobble is captured as fast as the app can draw it, but 30fps is plenty for playback and roughly halves the file — 5.12 MB down to 3.19 MB in testing, with the clip’s playing time unchanged.
Wobble presets: Spring, Rubber, Jelly
The Elasticity and Bounce sliders now have three named starting points:
- Spring — a short, quick, tight wobble. Oscillates about six times over 1.38 seconds.
- Rubber — the previous default. Settles in 0.80 seconds after about two swings.
- Jelly — stretches further and sloshes slowly, taking 1.87 seconds to settle.
These are not three points on one line: Spring and Jelly both wobble for a while, but Spring is fast and tight where Jelly is slow and wide. The values were derived from the spring equation and chosen by settling time and oscillation count, not picked by eye. The sliders remain for fine-tuning from whichever preset you start on.
Performance: recording at full framerate
Recording targeted 60fps but was actually capturing at 27.3fps. Profiling found four separate causes, and fixing them brought capture to 60.3fps — a 2.2x improvement, which is the 60fps ceiling we set. The bottleneck is no longer the app.
The largest pieces:
- Mesh physics allocated more than a dozen temporary arrays every frame. At a 512 grid each one is 2 MB, so allocation and memory bandwidth alone consumed the frame budget.
- The mask path, which decides which vertices are held fixed, went from 21.3 ms to 3.9 ms per frame by walking memory in order instead of scattering writes across 200,000 vertices.
- Directory-tree icons that were scrolled out of view were still issuing draw calls — about 65 of 75 nodes, every frame.
Separately, a picture that has stopped moving no longer costs anything. The physics used to keep integrating for as long as you looked at an image you had touched once: 6.5 ms per frame, 39% of the 60fps budget, spent on a picture standing perfectly still. It is now effectively zero.
That one had a surprise inside it. Most of the 6.5 ms was not the arithmetic — it was denormal floats. As the wobble damps out, values fall below the smallest normal float32 (1.18e-38) and x86 drops into a microcode fallback that runs the same integration 7.9x slower. It appeared about ten seconds after the wobble settled and saturated at fifteen, meaning the app was at its slowest during exactly the calm stretch when you were just looking at the picture. Snapping settled vertices to their rest positions removes the arithmetic and the denormals together.
Smaller changes
- The grip scales with the image. The drag radius is now proportional to the picture rather than a fixed size in pixels, so grabbing feels the same in a small window and a maximized one — previously the grip felt too small once the image got big. On a segmented object the radius follows the object.
- Cursors scale with monitor DPI, so the hand and grab cursors stay the right size on high-DPI displays instead of shrinking, and the open-hand cursor artwork was redrawn.
- v1.4.7 is absorbed into this release — it bundled the torch NOTICE file and dropped an unused dependency. Nothing visible to you.
System Requirements
Unchanged since v1.1.3 — no platform changes in this release.
Windows
- OS: Windows 10 / 11
- GPU: OpenGL 3.3+ (AMD / NVIDIA / Intel with DirectML for SAM2)
- RAM: 4 GB minimum (8 GB recommended)
- Disk: ~600 MB (SAM2.1 model included)
macOS
- OS: macOS Sequoia or later
- Chip: Intel or Apple Silicon (Apple Silicon recommended for best AI performance)
- RAM: 4 GB minimum (8 GB recommended)
- Disk: ~600 MB
Download
Get v1.5.1 from the Download page — Windows installer, and macOS DMGs for both Apple Silicon and Intel. Existing users will see an update notification the next time WobblePic’s “Check for Updates” runs.
New to WobblePic? You can wobble an image in your browser first — no install — and the Tutorial walks through the recording workflow end to end.