How to smooth shaky gopro and dji footage locally
- Step 1Grab the clip straight off the card — GoPro
.MP4and DJI.MP4/.MOVboth work. No need to convert first. The stabilizer is a Pro-tier tool; Free users get an upgrade prompt. Pro covers up to 10 GB per file. - Step 2Drop it onto the tool — The file loads into FFmpeg.wasm in the tab — no upload. This is the privacy win over cloud action-cam stabilisers: footage never leaves your machine.
- Step 3Use the wide FOV — set a generous Zoom — Zoom (0–15, default 5) crops in to hide edge wedges. Action cams are ultra-wide, so you can afford more Zoom than on a phone clip — try 6–10 for shaky POV without losing your subject.
- Step 4Pick a Smoothing that matches the energy — Smoothing (0–30, default 15). For a HyperSmooth-style locked POV, go high (20–26). For livelier handlebar/helmet footage where some motion reads as 'fast', keep it moderate (14–18).
- Step 5Run both passes — Detect pass analyses motion, transform pass produces the file. Action-cam footage is often high-res (2.7K/4K/5.3K) and high-frame-rate, so expect real processing time in FFmpeg.wasm — both passes read the whole file.
- Step 6Download the stabilised MP4 — Output is H.264 MP4 with original audio copied. Check fast-motion sections for residual rolling-shutter wobble — vidstab can't fix that part. For social, follow with a sibling formatter to reframe to 9:16.
When in-body stabilisation wasn't on — recovery settings
Action cams have wide FOV, so you can use more Zoom than on a phone. Starting points by footage type.
| Action footage | Zoom | Smoothing | Notes |
|---|---|---|---|
| Helmet / POV walking | 6 | 18 | Steady the bounce, keep some motion energy |
| Handlebar / mountain bike | 10 | 22 | Big shake; spend FOV freely, watch for Jello |
| Chest-mount running | 9 | 24 | Heavy step bounce; lock it down |
| Handheld follow shots | 5 | 16 | Closer to a default; keep framing wide |
vidstab vs in-body EIS (HyperSmooth / RockSteady)
What post stabilisation matches and what only the camera's own EIS can do.
| Capability | JAD vidstab (post) | In-body EIS |
|---|---|---|
| Translation + rotation shake | Yes | Yes |
| Rolling-shutter Jello | No | Partly (sensor-aware) |
| Horizon levelling (HorizonSteady) | No | Yes (dedicated mode) |
| Works if it was off at capture | Yes — that's the point | No — must be on live |
| Crop control after the fact | Yes (Zoom slider) | Fixed by mode |
Fixed pipeline + limits
Not adjustable. Output is always re-encoded MP4. Pro-tier tool.
| Item | Value |
|---|---|
| Detect params | stepsize=6 · shakiness=8 · accuracy=9 (fixed) |
| Output codec / container | H.264 (libx264, preset medium, CRF 20) · MP4 |
| Audio | stream-copied unchanged |
| Min tier | Pro |
| Max file size | 10 GB (Pro) · 100 GB (Pro+Media) |
Cookbook
Action-cam-specific recipes. Lean into the wide FOV — you can afford crop that a phone clip can't.
POV helmet clip, HyperSmooth was off
The classic recovery: you forgot to enable HyperSmooth on a hike. Use the wide GoPro FOV to crop out the head-bob without losing the trail ahead.
Zoom: 7 Smoothing: 18 pass 1 vidstabdetect -> motion.trf pass 2 vidstabtransform(zoom=7, smoothing=18) + unsharp -> out.mp4 Result: head-bob smoothed; FOV still wide enough for context
Mountain-bike handlebar shake
Big, fast shake from trail vibration. Spend FOV freely with high Zoom and lock the path hard — but inspect for rolling-shutter Jello on the roughest sections.
Zoom: 11 Smoothing: 24 Watch: fast-motion frames may show Jello vidstab can't fix If Jello dominates: capture with EIS on next time
DJI Osmo Action clip without RockSteady
DJI footage with RockSteady off behaves like any shaky wide clip. Moderate settings recover a usable shot.
Input: DJI_0123.MP4 (RockSteady off) Zoom: 6 Smoothing: 17 Output: stabilised H.264 MP4, audio copied Then reframe for social if needed (see next recipe).
Stabilise, then format for Shorts/Reels
Action clips usually end up vertical for social. Stabilise the wide original first, then auto-reframe to keep the subject centred in 9:16.
Step 1 stabilizer -> steady_wide.mp4
Step 2 [auto-reframe](/video-tools/auto-reframe)
-> 9:16 subject-tracked vertical
Order matters: reframe the steady image, not the shaky oneTwo-pass tuning for a shaky 4K clip
High-res action footage takes time, so tune deliberately. Start moderate, then push only the dial that addresses what you see.
Run 1: Zoom 6 / Smoothing 18 -> still a little floaty Run 2: Zoom 6 / Smoothing 23 -> locked; FOV unchanged Kept Zoom flat because framing was already fine
Edge cases and what actually happens
Rolling-shutter Jello in fast action
Not fixableAction cams in fast motion are prone to rolling-shutter Jello — a per-line skew inside each frame. vidstab corrects whole-frame motion only, so Jello survives stabilisation. The fix is capturing with the camera's EIS on (HyperSmooth/RockSteady mitigate it) or a dedicated rolling-shutter tool in an NLE.
Tilted horizon stays tilted
Not fixableGoPro's HorizonSteady and DJI's HorizonBalancing level the horizon during banking turns. vidstab does not do horizon levelling — it stabilises shake but won't rotate a consistently tilted horizon upright. That's an in-body-mode feature only.
Detect pass fails (vidstab missing)
errorIf the FFmpeg.wasm build lacks vidstab, the detect pass exits non-zero with Stabiliser detect pass failed (vidstab may not be present in this build). Retry; if it persists the build can't run vidstab. It's not a problem with your GoPro/DJI file.
Over-cropping despite wide FOV
By designAction cams give you crop headroom, but Zoom 13–15 on already-shaky footage can still cut your subject. If your rider or trail edge disappears, dial Zoom back. The wide lens helps but isn't infinite.
High frame rate (120/240fps) slowdown
ExpectedAction cams shoot high-frame-rate slow-mo. Two full passes over a 4K/120fps file is heavy in FFmpeg.wasm and takes real time. There's no duration cap, but expect a wait. Lower resolution first with the video resizer if speed matters.
GoPro HEVC/HDR clip
Re-encodedNewer GoPro/DJI modes record HEVC and sometimes HDR. The stabilizer decodes and re-encodes to H.264 SDR MP4, so HDR metadata is not preserved. If you need to keep HEVC, transcode the stabilised result with the H.265 encoder.
Output is MP4, not the original container
Re-encodedWhatever you drop in, output is H.264 MP4 because the transform pass re-encodes. For a different container/codec, follow with the video transcoder.
Featureless sky/water dominates the frame
Reduced effectDrone-over-water or sky-facing GoPro shots give vidstab few features to track, weakening stabilisation on those sections. This is inherent to feature-based tracking — more textured scenes stabilise better.
Free-tier user blocked
rejectedThe stabilizer requires Pro (minTier: pro). Free users get an upgrade prompt rather than a run. Pro's 10 GB ceiling handles most action-cam card files.
Frequently asked questions
My GoPro footage is shaky because HyperSmooth was off — can this fix it?
Yes, that's the ideal case. Post-stabilisation with vidstab recovers footage where in-body EIS wasn't enabled at capture. The camera's wide FOV gives you crop room, so generous Zoom removes shake without losing your subject.
Does it match HyperSmooth / RockSteady quality?
For translation and rotation shake, it's close. But in-body EIS also mitigates rolling-shutter and (in HorizonSteady mode) levels the horizon — vidstab does neither. For everyday shake recovery it's a strong free option; for those two specific things, live EIS wins.
Will it fix rolling-shutter Jello?
No. Jello is intra-frame distortion from a CMOS sensor scanning during fast motion — common on action cams. vidstab corrects whole-frame motion, so Jello survives. Capture with EIS on to avoid it.
Can it level a tilted horizon?
No. Horizon levelling (GoPro HorizonSteady, DJI HorizonBalancing) is an in-body feature. vidstab steadies shake but won't rotate a consistently tilted horizon upright.
How much Zoom can I use on action footage?
More than on a phone — action cams are ultra-wide, so 6–11 is often fine. Just inspect the result; even with wide FOV, very high Zoom on big shake can crop your subject.
Does my action footage upload anywhere?
No. It's processed in your browser via FFmpeg.wasm. Cloud stabilisers require an upload; JAD doesn't, so your unreleased edit stays local.
What about HDR or HEVC GoPro clips?
They're decoded and re-encoded to H.264 SDR MP4. HDR metadata isn't preserved. If you need HEVC out, run the H.265 encoder on the stabilised result as a second step.
What's the output format?
Always H.264 MP4 (libx264, preset medium, CRF 20), with original audio copied. Container changes happen via a sibling tool afterward.
Is there a length limit?
No minutes cap — only file size. Pro allows 10 GB per file, Pro+Media 100 GB. A full action-cam clip is fine if it's under the byte ceiling.
Can I get it ready for Shorts or Reels after?
Yes. Stabilise the wide original first, then reframe to 9:16 with the auto-reframe tool so the subject stays centred. Doing it in that order keeps the reframe working on a steady image.
Why is it slow on my 4K/120 clip?
Two full passes over a high-res, high-frame-rate file in FFmpeg.wasm is genuinely heavy. There's no cap, just compute. Resize down first if you need it faster.
Does it work on Free tier?
No, it's Pro-only. Free users see an upgrade prompt. Pro's 10 GB per-file limit covers typical GoPro/DJI files.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.