Image Toolbox Guide

How to Fix Jitter in Sprite Animation

A practical guide to fixing shaky sprite animations using frame offsets, baselines, center guides, preview playback, and corrected exports.

What jitter looks like

Sprite jitter happens when the character or object appears to jump around while the animation plays, even though each individual frame looks acceptable. The head may wobble, the feet may slide, or the whole character may shift left and right. This usually comes from inconsistent positioning inside the frame, not from the drawing itself.

Jitter is easy to miss when looking at a sprite sheet grid. It becomes obvious only when frames play in sequence. That is why an animation preview is more useful than a static sheet for alignment work.

Use a baseline

For characters, the ground baseline is often the most important reference. Feet, wheels, or the bottom of a standing object should relate consistently to that line. If one frame is higher than the others, the character may appear to hop. If one frame is lower, it may sink into the floor.

Select the problem frame and adjust Offset Y until the contact point matches the baseline. Repeat for each frame that feels wrong.

Use a center guide

Horizontal jitter often comes from the subject drifting inside the frame. A center guide helps you align the torso, object center, or main mass of the sprite. Not every animation should be perfectly centered, because motion can be intentional, but accidental drift should be removed.

Adjust Offset X for frames that slide too far left or right. Play the animation after each change instead of relying only on the still preview.

Frame duration can hide or reveal problems

A very fast frame duration may hide small alignment issues. A slower preview can reveal them. Test at the speed you expect to use in the game, then slow it down briefly for inspection. If a frame looks wrong only at slow speed but fine at production speed, decide based on the actual use case.

Idle animations often need tighter alignment than explosive effects, because players stare at idle loops longer.

Export after correction

Once offsets look right, export a corrected PNG sequence, corrected sprite sheet, and JSON configuration. Keep the original file too, because alignment decisions may change later when the animation is tested inside the actual game scene.

Separate intentional motion from accidental drift

Not every movement is jitter. A character may lean forward during an attack, bounce during a run, or squash during an impact. That motion should remain. Accidental drift is different: the whole sprite shifts even though the action does not call for it. The goal is to preserve animation while removing positioning mistakes.

Watch the animation several times and identify the stable reference point. For a standing character, that may be the feet. For a flying object, it may be the center mass. For a UI effect, it may be the visual center of the burst. Align to that reference rather than trying to make every outline overlap perfectly.

Test after export

After correcting offsets, export the frames and test them in the environment where they will be used. A browser preview is useful, but a game camera, scaling mode, or engine pivot setting can change how the animation feels. If the engine uses its own anchor point, make sure your corrected sheet and exported data match that assumption.

Keep notes about the frame duration and offsets that worked. If another animation from the same character has the same issue, you can often apply a similar baseline strategy instead of starting from zero.

Working frame by frame without losing the motion

When fixing jitter, avoid correcting every frame to the exact same silhouette. Animation needs change. A running character should lean, arms should swing, and effects should expand or contract. The reference point is what should stay stable: the feet, center, weapon grip, shadow, or another anchor that makes sense for the animation.

Move one frame, play the loop, then adjust again. Large batches of offset changes can make it harder to know which edit improved the motion. For difficult loops, temporarily slow the frame duration so the jump is easier to see, then return to the intended speed before exporting.

Save the corrected JSON with the exported frames when possible. It gives you a record of the offsets and makes it easier to reproduce or revise the alignment later.