Stabilize a Shaky Video

Pick a video and a strength — handheld camera shake is smoothed away in your browser, nothing is uploaded.

Try:
Stabilized video

Smooth out camera shake

Pick a shaky handheld clip, choose how much shake to compensate and what to do with the frame edges, and get the same clip back with the wobble smoothed away. Everything runs with ffmpeg inside your browser tab — nothing is uploaded, and the tool is free.

The stabilizer (ffmpeg's motion-detection deshake filter) measures the dominant frame-to-frame movement and shifts each frame to cancel it, so handheld jitter is smoothed while intentional pans are kept. Because every frame is rewritten, the picture is re-encoded to H.264 (-crf 20, visually near-transparent). The audio is left untouched (stream-copied) whenever the container can hold H.264/AAC — mp4, mov, m4v and mkv keep their container; other inputs (e.g. webm) are converted to MP4 and the audio re-encoded to AAC.

Strength and edge handling

Worked example

You have walk.mp4, a 1080p clip filmed while walking, and the horizon bounces with every step. Load it, set Strength to 60 and Edges to Crop & zoom. You get walk-stabilized.mp4 — the same footage with the bounce smoothed and a slight (~7 %) zoom hiding the shifting edges. If the result still jumps, raise the strength; if straight lines near the frame edge look smeared on a mirror run, switch to Crop & zoom. The page URL /tools/video-stabilize/?borders=crop&strength=60 deep-links to the same pre-filled settings.

Notes and limits

FAQ

Is my video uploaded to a server?

No — ffmpeg runs inside your browser tab, so the file never leaves your device. Nothing is uploaded and nothing is stored.

What strength should I use?

Start at the default 25 for ordinary handheld footage. Use 10–20 for minor jitter, 30–40 for a normal phone walk-and-talk, and 50 + only for genuinely rough footage (running, action cams). Too high a strength can start "correcting" intentional pans, which shows up as a slow wobble — if you see that, lower it.

Why do the edges of my stabilized video look odd?

To cancel shake the stabilizer shifts each frame, which exposes a thin band at the frame edges. Mirror (the default) fills it by reflecting the picture — usually invisible, but straight lines right at the edge can look smeared. Switch Edges to Crop & zoom to hide the band completely at the cost of a slight zoom, or Blank if you'd rather see black bands.

Does Crop & zoom change my video's resolution?

Only marginally — the picture is scaled up by roughly 3–10 % (more at higher strengths), then center-cropped back to within a couple of pixels of the original width and height (dimensions are kept even for H.264). You lose a little field of view at the edges, not output size.

Can it fix very shaky GoPro or running footage?

It will help, but this is a single-pass motion-compensation filter — it works best on mild to moderate shake. Severe action-cam shake and rolling-shutter "jello" need two-pass (analyze-then-transform) or gyro-data stabilization, which is desktop-software territory. For those clips, run Strength 60–100 with Crop & zoom and expect an improvement, not a gimbal.

Which formats can I use, and how big can the file be?

Anything ffmpeg can read — mp4, mov, m4v, mkv and webm are the common cases. mp4/mov/m4v/mkv keep their container; other inputs (e.g. webm) come out as MP4. The input and output are each capped at 25 MB.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool video-stabilize 'url=https://example.com/input' 'borders=mirror' 'strength=25'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/video-stabilize/?url=https://example.com/input&borders=mirror&strength=25

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.