NoCloud Media

Video tool

Video Stabilizer — Remove Camera Shake

Drop a shaky video. Pick a strength. The deshake filter compensates for handheld jitter and renders a smoother MP4 — all in your browser, never uploaded.

How it works

  1. 1

    Drop a shaky video

    MP4, MOV, WebM, MKV, AVI, or M4V — anything FFmpeg can decode. The file stays on your device.

  2. 2

    Pick a strength preset

    Subtle (8 px search) for slight handheld jitter, Moderate (16 px, FFmpeg's default) for typical phone footage at walking pace, Strong (32 px) for running, vehicle-mounted, or POV-action footage.

  3. 3

    Stabilize in your browser

    We run FFmpeg's deshake filter — single-pass motion compensation that estimates camera motion frame-to-frame and applies an inverse transform to compensate. Edges that move off-screen are filled with mirrored content rather than black bars. Re-encodes to H.264 / AAC.

  4. 4

    Download the smoothed MP4

    Output is always MP4 (most universal container). Original audio is preserved at 128 kbps AAC.

Why use Video stabilizer?

Free with no caps. Premiere ($23/mo), Final Cut Pro ($300), DaVinci Resolve Studio ($295), and Veed (subscription) all paywall stabilization. We use FFmpeg's built-in filter, locally on your file.

Private — your video never touches our servers. Matters when the footage is personal, pre-release, or sensitive.

Three sensible strength presets covering the common cases: light handheld jitter, walking-pace shake, and heavy action footage. No 20-knob expert UI to learn.

Keeps your audio. Original audio track is preserved at 128 kbps AAC — no need to re-merge after stabilizing.

Same family of algorithm Premiere's Warp Stabilizer and DaVinci's Stabilization use — frame-to-frame motion estimation with translation/rotation correction. The single-pass deshake variant is faster but less effective on heavy shake than vidstab's two-pass approach (which isn't available in our WASM build).

Common use cases

  • Smooth out a handheld phone clip before posting to social media
  • Remove jitter from a walking talking-head shot recorded on a phone
  • Steady a clip recorded by a mounted camera that's still vibrating slightly
  • Improve a screen-pan / b-roll clip captured handheld
  • Take some shake out of a running / action POV recording (Strong preset)
  • Stabilize a video shot in low light where the camera struggled to lock focus
  • Prepare footage for a vlog or YouTube short where camera shake breaks the viewer's attention

About MP4 and MP4

We run FFmpeg's `deshake` filter — built directly into the FFmpeg core, no external library required. deshake is a single-pass motion-compensation filter: each frame is compared against the previous to estimate translation + rotation, and an inverse transform is applied to compensate. The trade-off knob is `rx` / `ry` — the search range in pixels for motion estimation. Wider searches catch larger shakes but cost more CPU (search scales quadratically) and push more of the frame off-screen. Our presets map to: Subtle = 8 px (light jitter), Moderate = 16 px (walking pace, FFmpeg's default), Strong = 32 px (action / vehicle / POV). We pair every preset with `edge=mirror` so the pixels that move off-frame after compensation are filled with mirrored content rather than blanked to black bars — less obtrusive on most footage. Note: deshake is less sophisticated than `vidstabdetect` + `vidstabtransform` (the two-pass `libvidstab` pipeline that Premiere's Warp Stabilizer is loosely modelled on), but `libvidstab` isn't compiled into FFmpeg.wasm's WASM core. Until we ship a custom core, deshake is the best browser-only option. The result is re-encoded to MP4 (H.264 CRF 23 + AAC 128k) — universally playable, reasonable quality, finishes in roughly 2-3× the source duration on a typical laptop.

Frequently asked questions

Is my video uploaded to a server?
No. NoCloud Media stabilizes your video entirely in your browser using WebAssembly. Your file never leaves this tab.
Which strength should I pick?
Start with Moderate — that's FFmpeg's documented default and works for most phone footage at walking pace. Drop to Subtle if your source is mostly steady with just a hint of handheld jitter (a tripod that's vibrating, or a quasi-static shot). Bump to Strong for running, vehicle-mounted, or action-POV footage where the shake is large enough that 16 px isn't enough search range.
Why does the output look slightly cropped or have weird edges?
Stabilization compensates for camera motion by translating each frame in the opposite direction. That necessarily pushes some pixels off-screen — there's no way to invent picture content that wasn't recorded. We fill the missing edges with `edge=mirror` (mirrored content from inside the frame) rather than black bars; on most footage that's less noticeable. The Strong preset moves the most pixels off, so its edge effects are most visible — pick a lower preset if it bothers you.
Will my audio be preserved?
Yes. The original audio track is re-encoded to AAC 128 kbps and muxed back into the output MP4. We don't apply any audio processing, just transcoding to a container-compatible codec. If you need audio adjustments (loudness, denoise, gain), run the output through our Video volume changer afterwards.
Why isn't this as good as Adobe's Warp Stabilizer?
Two reasons. First, Premiere's Warp Stabilizer uses a more sophisticated multi-pass algorithm with rolling-shutter correction and per-region tracking — equivalent to FFmpeg's `vidstabdetect` + `vidstabtransform` pipeline. Second, that pipeline requires `libvidstab`, which isn't compiled into our WASM build of FFmpeg. We use the simpler `deshake` filter instead, which works on most handheld phone footage but is less effective on heavy shake or rolling-shutter wobble. Building a custom WASM core with `libvidstab` is on our long-term roadmap.
What output format do I get?
Always MP4 (H.264 video + AAC audio). MP4 is the universally-playable container — every video player, social platform, and editing tool accepts it. We pick this regardless of input container so the user gets one consistent output.
What's the maximum file size I can stabilize?
It depends on your browser's available memory. Files up to 500MB stabilize smoothly on most devices; files up to ~2GB may work on desktop browsers with enough RAM. Stabilization re-encodes the picture, so processing scales with duration and resolution — a 4K source takes ~4× the time of a 1080p source of the same length.
Which browsers are supported?
Chrome, Edge, Firefox, and Safari 15+. We require WebAssembly and SharedArrayBuffer, both standard in modern browsers.

Related tools