Why phone video looks shaky
Two different faults look like the same shakiness. One is handshake — your hands move and the whole frame moves with them — and stabilization fixes that well. The other is rolling shutter: the sensor reads out row by row, so a fast pan leans the verticals and vibration turns the picture to jelly. Stabilization cannot undo that, and Crisp has no rolling shutter correction at all — holding the frame still can even make the warp easier to see.
Two things make handheld footage unpleasant, and people tend to lump them together. One is ordinary camera shake. The other is rolling shutter, and it is a different problem with a different answer.
Shake is movement. Skew is a sampling artefact.
Shake is what it sounds like. Your hands move, the whole frame moves with them, and the picture jitters. Every part of the frame moves together, which is the important detail: the geometry inside the frame stays correct.
Rolling shutter is stranger. Most phone and mirrorless sensors don't capture a whole frame at once. They read it out line by line, top to bottom, over a few milliseconds. If the camera or the subject moves during that readout, the top of the frame was captured at a slightly different moment than the bottom, so vertical lines lean. Pan quickly past a lamp post and it bends. Shoot from a moving car and the world tilts. Shoot a propeller and it turns into something surreal.
You can tell them apart by looking at a still frame. Shake looks fine frozen and bad in motion. Rolling shutter is visible in a single frame, because the distortion is baked into the geometry.
What stabilization actually does
Stabilization estimates how much the frame moved between one frame and the next, then shifts each frame back the other way to cancel it out. Because shifting exposes empty edges, it either crops in slightly or fills the edges by mirroring what's next to them.
That works genuinely well on shake, and it costs you a little framing. What it cannot do is undo rolling shutter, because the distortion isn't a whole-frame offset. Different rows of the same frame need different corrections, which is a fundamentally harder operation and one Crisp does not attempt. Stabilizing skewed footage produces steady, still-skewed footage — and because the shake was partly masking the warp, a steady wobble can read as more obviously wrong than a shaky one did. If that is your footage, the honest answer is that no setting in Crisp addresses it and you should know that before you buy anything.
What to do about each
| Symptom | Cause | Fixable afterwards? |
|---|---|---|
| Whole frame jitters, stills look fine | Camera shake | Yes, stabilization handles this well |
| Vertical lines lean during pans | Rolling shutter | No, not in Crisp |
| Sharp jolts at footsteps | Walking shake | Partly, and a slower walk helps more |
| Wobble that looks like jelly | Rolling shutter plus shake | The shake, not the wobble |
On the shooting side, the fixes are boring and effective. Pan slower, because rolling shutter scales with how fast the scene crosses the sensor. Brace against something. Use the phone's own stabilization if it has it, since correcting during capture beats correcting afterwards. And shoot a little wider than you need, so stabilization has room to crop into without losing your framing.
What Crisp measures before it agrees to stabilize
Crisp's stabilizer is ffmpeg's single-pass deshake filter, which estimates per-frame motion, counter-shifts each frame, and fills the exposed edges by mirroring. Before any of that runs, Crisp measures whether it would help. It samples up to three windows of 1.5 seconds, taken about 15%, 50% and 80% of the way through the clip, and renders each window twice — once plain, once through the stabilizer — scoring the mean frame-to-frame difference of both. If any one window's motion falls below 95% of its unstabilized value, the job runs. If none of them do, the job is refused before a single frame is rendered, with this message: "Stabilising wouldn't improve this clip — Crisp measured the motion and its stabiliser would add wobble rather than take it out. It only helps footage with real camera shake, so a tripod shot, a smooth pan, or a locked-off camera is already as steady as it gets."
That refusal exists because of a measurement that is not flattering to the filter. Scored against a plain re-encode control, deshake increased frame-to-frame motion on most of the footage tested:
| Footage | Frame-to-frame motion after stabilizing |
|---|---|
| Locked camera, moving car | +128% — worse |
| Tripod, static scene | +92% — worse |
| Deliberate pan | +24% — worse; it fights the move |
| Gentle handheld drift | +21% — worse |
| Violent handheld jitter | −39% — better |
One case in five. That is the whole argument for measuring first: without the check, asking a general-purpose stabilizer to steady a tripod shot returns a visibly wobblier clip after a full re-encode, under a progress card that said it was removing shake. Several windows are sampled rather than one because shake is rarely spread evenly through a clip — a walk that is smooth for ten seconds and jolts for two is still worth stabilizing, so any single window that improves is enough to go ahead. On a clip shorter than about two and a quarter seconds there is only room for one window, taken from the start.
The check itself had to be corrected once, which is worth recording. An early version measured a 64-pixel-wide version of the frame to save time, and motion estimation had nothing to work with at that size: a violently shaky clip scored 33.46 before and 33.44 after, so the app reported that stabilizing would not help footage that plainly needed it. Measuring a centre crop at native pixel scale instead fixed it and is still cheap — 0.26 seconds against 1.78 on a 1080p clip, with the same verdict on every clip tested. The crop is centred on purpose, because shake moves the whole frame equally while the mirrored edges are the one part of the picture that is not representative.
Doing it on a Mac
Crisp stabilizes on-device using frame-to-frame motion estimation, keeps the audio in sync by stream-copying it untouched, and writes the result as a new file next to the original rather than overwriting it — and if that name is already taken it adds a numeric suffix rather than clobbering what is there. You can ask for it in plain English: "the footage is shaky", "the camera was wobbly", "my hands were shaking" and "steady this" all reach the same job. Asking why it is shaky does not — a question is treated as a question, and so is a negation like "don't stabilize it", so neither one quietly starts a render.
Two limits to know before you queue a phone clip. Stabilizing re-encodes the video, so it is not a lossless operation and it is worth doing before an AI upscale rather than after. And if the clip is HDR — which recent iPhones record by default — the stabilize pass tone-maps it to SDR BT.709 on the way through, so the steady copy comes back SDR; on a build whose ffmpeg cannot tone-map at all, Crisp refuses the clip instead and asks you to convert to SDR first.
Shaky footage questions
Can stabilization fix rolling shutter?
Not in Crisp, and not with the approach most tools use. Stabilization shifts whole frames to cancel movement. Rolling shutter distorts different rows of the same frame by different amounts, so cancelling it needs a per-row correction, which is a different and much harder operation. Crisp has no rolling shutter correction of any kind.
Does stabilizing crop my video?
Usually a little, because shifting a frame to cancel movement exposes empty edges that have to come from somewhere. Crisp fills those edges by mirroring rather than cropping hard, but framing still tightens slightly on very shaky footage.
Should I stabilize before or after upscaling?
Stabilize first. Upscaling magnifies everything including the shake, and a stabilizer works better on the smaller frame anyway. It is also much faster in that order.
Why does my footage look worse after stabilizing?
Usually one of two things. Either the clip was steady enough that you have paid a crop for nothing, or the motion was mostly rolling shutter, which stabilization cannot address and can make more obvious by removing the shake that was masking it.
Why did Crisp refuse to stabilize my clip?
Because it measured the clip first and found that stabilizing would make it worse. Crisp samples up to three 1.5-second windows, renders each one twice — once plain, once through the stabilizer — and compares frame-to-frame motion. Unless at least one window drops below 95% of its unstabilized motion, the job is refused before any rendering starts. On a tripod shot, a locked-off camera or a deliberate pan, the stabilizer measurably adds motion rather than removing it.
Related
Download Crisp for Mac Free to try, one-time $129 to remove the watermark. Runs entirely on your Mac.
Background: rolling shutter in depth.