What is rolling shutter?
Rolling shutter happens when a sensor reads its rows one after another rather than all at once. The bottom of the frame is a later moment than the top, so a fast pan leans verticals and vibration turns the picture to jelly. That is geometry inside each frame, not motion between frames, which is why stabilization cannot undo it. Crisp has no rolling shutter correction of any kind, and holding a skewed frame still can make the warp easier to see. The fixes are at the camera.
Pan quickly past a lamp post and it leans. Film out of a car window and the buildings tilt. Shoot a spinning propeller and it turns into something from a dream. That is rolling shutter, and once you know the cause you can predict exactly when it will bite.
The sensor doesn't take the picture all at once
A global shutter captures every pixel at the same instant. Almost nothing you own has one. Most phone, mirrorless and action-camera sensors read out row by row from the top of the frame to the bottom, over a few milliseconds.
That means the bottom of a frame is a snapshot of a slightly later moment than the top. If nothing moved during the readout, no problem. If the camera or the subject moved, each row captured the scene from a marginally different position, and straight vertical lines come out slanted.
The same mechanism produces the effects that look like nothing else. A flash or a flickering light that fires partway through a readout illuminates only the rows that were being sampled at the time, so the frame comes back with a bright band across it. A propeller or a helicopter blade travels a long way during one readout, so the tip and the root are recorded in positions the blade never occupied simultaneously, and the result is a blade that appears bent, detached or wrapped around itself. None of these are faults in the lens or the encoder. They are all the same clock.
Why the effect scales the way it does
The distortion is proportional to how far the scene travels across the sensor during one readout. That gives you the practical rules.
Fast pans are worse than slow pans. Long lenses are worse than wide ones, because the same angular movement sweeps far more of the frame. Vibration from an engine or a drone body is especially bad, because it moves the camera many times within a single readout and the frame ripples rather than simply leaning. And a cheaper or older sensor generally reads out more slowly, so it distorts more at the same shutter speed.
Shutter speed itself is not the cause, which surprises people. A fast shutter freezes motion within each row but does nothing about the delay between the first row and the last.
One quick test tells you which problem you have. Pause on a single frame. Camera shake looks fine frozen and bad in motion, because the geometry inside each frame is correct and only the frame's position is wrong. Rolling shutter is visible in the still, because the distortion is inside the frame.
Can it be fixed afterwards?
Not in Crisp, and it is worth explaining why rather than just saying no.
Stabilization works by estimating how the whole frame moved between one frame and the next, then shifting the frame back to cancel it. That is a single transform applied to the entire picture. Rolling shutter is not a whole-frame offset. Every row needs a different correction, because every row was captured at a different moment, so undoing it means estimating motion per row and warping the frame non-uniformly. That is a fundamentally harder operation, it needs a good estimate of the sensor's readout time, and done badly it introduces wobble of its own.
So stabilizing skewed footage gives you steady, still-skewed footage. Worse, removing the shake can make the skew more visible, because the shake was masking it.
What Crisp's stabilizer actually is, and what it measured
We would rather show you the code than assert it. Crisp's stabilize lane builds exactly one filter chain: ffmpeg's single-pass deshake, then setsar=1, then a pixel-format conversion for the chosen codec — plus a tone-map step in front of it when the source is HDR, which is a colour operation and not a geometric one. deshake estimates per-frame motion and counter-shifts the whole frame, filling the edges it exposes by mirroring what is next to them rather than cropping hard. There is no per-row term anywhere in that chain, and there is nothing else in the lane. The phrase "rolling shutter" does not appear in Crisp's engine at all, and neither does any of the machinery a correction would need.
There is also a measurement here that is not flattering to the filter, and it belongs on this page because the footage it punishes hardest is precisely the footage that skews. Scored at version 0.1.608 against a plain re-encode control, and repeated on a centre crop to rule out edge-mirroring artefacts, deshake increased frame-to-frame motion on four of the five cases 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. Look at the two rows at the top: a locked camera in a moving car and a deliberate pan are the two classic ways to produce rolling shutter, and they are also the two the stabilizer handled worst. So the temptation to reach for the stabilizer when a clip leans is exactly backwards.
Because of that measurement, Crisp checks your specific clip before it agrees to run. It samples up to three windows of 1.5 seconds, taken about 15%, 50% and 80% of the way through, renders each one twice — once plain, once through the stabilizer — and compares the mean frame-to-frame difference. If any one window drops below 95% of its unstabilized value, the job runs. If none of them do, the job is refused before a 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." Several windows are sampled rather than one because shake is rarely spread evenly, and any single window that improves is enough to go ahead.
That refusal is the closest thing to a rolling-shutter feature Crisp has, and it is not one. It is a check that stops you paying a full re-encode for a wobblier file.
What to do instead
Almost all of the fix happens at the camera. Pan slower, and if you need a fast whip, embrace it as a transition rather than something viewers will study. Use a wider lens and step closer. Isolate the camera from vibration, which matters more than anything else on drones and vehicles. Turn on in-body or in-app stabilization, because correcting during capture is far more effective than correcting after.
In the edit, the honest options are to cut around the worst of it, slow the shot down so the distortion reads as motion blur rather than as bent geometry, or crop into a region where the skew is less obvious. Crisp can do the last two — its speed lane retimes anywhere from 0.1× to 8×, and its crop lane offers a centre crop as well as a fixed aspect ratio — but be clear about what you are buying: those are ways to make the distortion less noticeable, not ways to remove it. None of them are glamorous, and all of them beat a render that cannot deliver.
The one thing not to do is reach for an upscale. Resolution is orthogonal to this: a skewed frame upscaled is a larger skewed frame, and a model that invents plausible detail will happily invent it along the bent lines. It is the same limit that means AI upscaling cannot fix focus — the information you want was never sampled, and what an upscaler does is reconstruct, not retrieve.
Rolling shutter, in detail
Is rolling shutter the same as motion blur?
No. Motion blur is smearing within a single exposure and affects the whole frame equally. Rolling shutter is geometric distortion caused by different rows being captured at different times, so it leans and wobbles rather than smearing.
Does a faster shutter speed help?
Not with rolling shutter. A fast shutter freezes motion within each row, but the delay between the top row and the bottom row is unchanged, so the skew stays. It will reduce motion blur, which sometimes makes the skew easier to see.
Why do propellers and helicopter blades look so strange?
They are moving fast enough to travel a long way during a single readout, so different parts of the blade are recorded at meaningfully different positions. The result can be blades that appear detached or bent into curves.
Can Crisp fix rolling shutter?
No. Crisp has no rolling shutter correction of any kind. Its stabilize lane runs one filter chain — ffmpeg's deshake, then setsar=1, then a pixel-format conversion — and deshake counter-shifts the whole frame by a single offset. There is no per-row term anywhere in it, and the words "rolling shutter" do not appear in Crisp's engine at all. If that is your footage, no setting in the app addresses it, and you should know that before you buy anything.
Will Crisp's stabilizer make it worse?
It will not add skew, but it can make existing skew more obvious by removing the shake that was disguising it — and on the footage that skews worst it measurably adds motion. At 0.1.608, against a plain re-encode control, it increased frame-to-frame motion on a deliberate pan by 24% and on a locked camera in a moving car by 128%. It helped in one of the five cases tested: violent handheld jitter, at −39%. Crisp measures your specific clip first and refuses the job outright if no sampled window improves, so in most rolling-shutter cases it will decline rather than hand you a wobblier file. Note that when it does run, it fills the exposed edges by mirroring rather than cropping hard, so the cost is a mirrored border, not a lost frame edge.
Related
- Why phone video looks shaky — shake vs skew, and which one is fixable
- What is telecine?
- What is variable frame rate?
- Why upscaling to 4K takes so long
- The Video Upscaler Index
Download Crisp for Mac Free to try, one-time $129 to remove the watermark. Runs entirely on your Mac.