A Practical Workflow for Wobble Images on Social Media
Most wobble posts look great in the local preview and underwhelming on the actual platform. The fix is rarely the wobble itself; it is matching aspect ratio, file size, and format to where the file will live.
How we actually prepare a wobble for a feed post, a story, a reaction, and a chat: what to crop, what preset fits, what format survives upload.
We have shipped wobble stickers to Discord, Slack, iMessage, X, Instagram, and a few smaller communities. The list below is what we keep relearning every time we forget it. Treat it as a checklist, not a tutorial.
The four real constraints, in order
Every social platform imposes four constraints. Get them in this order and the wobble usually survives upload:
- Aspect ratio. Platforms crop to fit containers, not the source.
- Autoplay behavior. Some places play GIFs inline; some require a tap for video.
- File size. Anything over the platform's limit will fail or be recompressed.
- Duration. Long loops annoy the reader and waste bandwidth.
Most "the wobble looks bad" complaints trace back to constraint 1. Crop to the platform's frame first, then build the wobble to fit it.
Aspect ratio cheat sheet (as of 2026)
These are the ratios we plan around. They shift occasionally, so always check the platform's current upload dialog before you commit to a design.
| Surface | Aspect | Notes |
|---|---|---|
| Instagram feed (square) | 1:1 | 1080×1080 source is the safe default. |
| Instagram feed (portrait) | 4:5 | 1080×1350. Takes more vertical space than 1:1. |
| Instagram / TikTok story | 9:16 | 1080×1920. Leave the top 250 px and bottom 350 px clear of important content; UI overlays cover them. |
| X / Twitter in-feed video | 16:9 or 1:1 | 1:1 plays larger in the feed; 16:9 fills the column. |
| X in-feed GIF | 16:9 or 1:1 | GIFs render slightly soft at large sizes; we prefer MP4 here. |
| LinkedIn feed video | 1:1 or 16:9 | 4:5 also works but is less common. |
| Discord chat | any | 10 MB cap on free tier, 25 MB on Nitro. Inline playback is automatic for GIF, video shows a thumbnail and a tap to play. |
| Slack chat | any | 2 MB GIF cap; video upload uses a different path with a 1 GB cap but requires a click to play. |
| iMessage / WhatsApp | any | GIFs autoplay inline. MP4 from another source typically requires a tap. |
If you only have time to do one thing: pick the aspect ratio first, before you paint anything.
What we measured about GIF size
These are real numbers from our own exports, captured today against the same source image at 1024×1536 with the Soft wobble preset and a 1-second recording. The point is not the absolute values; the point is how the file moves with each change.
| Change | Result | Observation |
|---|---|---|
| Format: GIF, 1 s | 1.83 MB | The baseline. |
| Format: WebM, 1 s | 0.46 MB | 4× smaller than the GIF. |
| Format: MP4, 1 s | 0.33 MB | 5.4× smaller than the GIF. |
| Duration: 0.5 s GIF | 0.23 MB | Drop the duration before changing anything else. |
| Duration: 1.5 s GIF | 0.23 MB | Not monotonic. GIF compression depends on the color palette, and certain frame counts happen to compress much better than others. We have seen 1.5 s produce smaller files than 1 s on the same source. |
| Duration: 2 s GIF | 3.50 MB | Big jump. 2 s crosses a frame-count threshold in our GIF encoder. |
| Duration: 3 s GIF | 5.24 MB | Above most chat upload caps. |
| Preset: each of the four, 1 s GIF | 1.71-1.79 MB | Preset affects the look; it does not affect file size meaningfully (under 5% spread). |
The two takeaways:
- If the destination can play MP4, MP4 is the better answer almost every time. A 1-second MP4 wobble at 330 KB beats a 1.83 MB GIF on bandwidth and on load time.
- Preset choice is a creative decision, not a size decision. Spend the budget on duration and source dimensions, not on which preset to pick.
What we do for a feed post
A feed post is the most forgiving surface: people expect to wait a beat for video to load, and the platform will buffer it.
- Crop the source to the target ratio (1:1 or 4:5 for Instagram; 16:9 or 1:1 for X/LinkedIn).
- Paint the wobble. Soft wobble for portraits and product shots, Spring bounce for reveals and announcements, Quick shake for urgency, Zero-G float for sleepy or magical moods.
- Record MP4, not GIF. The autoplay story is consistent across platforms for video, and the file is 5× smaller.
- Keep the duration between 1.5 and 3 seconds. Shorter feels abrupt, longer feels like an ad.
- Upload as a draft first. Inspect on the phone. Look at the first frame: does it make sense before the wobble starts? Look at the last frame: does it return cleanly to the first frame?
What we do for a story
Stories are vertical, ephemeral, and almost always viewed on a phone. They are also the place where overlay UI covers the most pixels.
- Aspect ratio 9:16, full vertical.
- Crop the source so the wobbling subject sits in the middle 60% of the frame. The top ~12% (profile, time) and bottom ~18% (caption, reply box) will be covered.
- If the platform expects video, MP4. If it accepts animated stickers, GIF at under 1 MB.
- Record one clean gesture and let it return to rest. Stories do not loop well; people watch them once or twice.
- Text on screen has to survive the wobble. If the wobble covers a wordmark, the wordmark is unreadable. Either move text out of the painted region or use Spring bounce with low stretch.
What we do for a chat reaction
Reactions compete with typing. The user has half a second to decide whether to send the file.
- Keep the source small. Crop tight to the subject, then paint.
- Use Soft wobble or Quick shake. Spring bounce reads as "excited" but takes longer to settle.
- Record GIF under 1 MB if possible. Our measured numbers suggest 1.5 s GIF on a moderate source lands in the 200-500 KB range on our encoder. Above 2 MB, the file starts to feel slow to send.
- Skip the Looping motion buttons for chat. A single clean gesture reads better than a continuous orbit.
Things that look right locally and look wrong online
These are the failure modes we see most often, in order:
- First frame is unrecognizable. The wobble starts mid-motion and the viewer sees a stretched object for half a second before they know what it is. Fix: start the recording from rest, not from peak displacement.
- Important text inside the painted region. The text bends with the wobble. Fix: paint around text, not over it.
- Loop pauses between cycles. The hand-driven recording does not exactly meet itself at the loop point. Fix: use a Looping motion button, or stop the recording on a frame that visually matches the first frame.
- Subject covered by platform UI. Captions, reply boxes, profile avatars cover the wobble. Fix: crop inward before recording so the subject sits inside the safe zone.
- File too large to upload. The platform either fails the upload or silently recompresses until the file fits. Silent recompression usually makes wobbles look muddy. Fix: record MP4 instead of GIF when the platform accepts video, or shorten the recording.
- Autoplay does not happen. On some chat clients, MP4 shows a thumbnail that the user has to tap. Fix: if the destination matters more than file size, export GIF for inline playback.
What we keep in the project file
The exported file is the smallest artifact. The reusable creative asset is the original source image, the painted mask, and the chosen preset. We keep all three together, and we export a fresh copy for each channel rather than recompressing one master file. A 2-second MP4 master that we recompress to a 1-second GIF for chat looks worse than a 1-second GIF we record directly from the same source and mask.
When the wobble lands well, we also keep a short text note with the settings: the preset, the Fine tuning values, the source dimensions, and the destination. Without that note, we end up re-tuning the wobble from scratch the next time a similar subject appears.
When to break the rules
- If the wobble is the entire message (a sticker reaction, an explainer without voiceover), use GIF or transparent MP4 even if MP4 would be smaller. Inline playback matters more than bandwidth.
- If the audience is on a slow network (email newsletters, low-bandwidth regions), bias toward WebM with a 1 s loop.
- If the platform is a chat that does not autoplay video (some work chat clients), GIF is the only format that feels alive.
- If the source is a video frame and not a still, recompress with the original video encoder, not through Purupuru Maker. We are the wrong tool for that.