Most of the result is decided before takeoff. A camera in the wrong mode records no gyro data, a slow shutter leaves blur that no software can remove, and a hard-mounted air unit records motor vibration instead of the drone's motion. So this guide starts with the camera and only then gets to the sliders.
At the time of writing, the latest release on GitHub and on the download page is 1.6.3. The documentation already describes some features "since Gyroflow 1.7.0". Those are marked below.
Does your camera record gyro data?
Gyroflow needs a camera with a hardware gyroscope that saves its data together with the video. The popular choices on FPV drones, according to the Gyroflow docs:
- GoPro: Hero 5 Black, Hero 5 Session, Hero 6 Black, Hero 7 Black and every model from the Hero 8 on have gyro data (the Hero 7 White and Silver don't). From the Hero 8, in-camera stabilization (Hypersmooth) can stay on and Gyroflow still handles it. Older models need all in-camera stabilization off,
- DJI: Avata and Avata 2, Neo and Neo 2, O3 Air Unit, O4 Air Unit, Action 2 (from firmware v01.04.0510), Action 4, 5 and 6, Osmo Nano. DJI FPV and Action 3 won't be supported,
- RunCam: saves the gyro data in a separate .gcsv file next to the video,
- any other camera on the drone: the flight controller's Blackbox log can serve as the motion data (more on that at the end).
The docs warn specifically about the Hero 5 Black, Hero 5 Session and Hero 7 Black. On an FPV drone their gyro data is unusable because of bad noise filtering and aliasing. If you want a budget GoPro for this, the docs recommend the Hero 6 Black.
Camera settings before the flight
DJI. In-camera stabilization (EIS, RockSteady) must be off and the FOV set to Wide. Otherwise the camera doesn't record gyro data at all. Ultrawide, Normal and "Natural Wide" are not supported. If the timeline in Gyroflow shows no gyro traces after you open the file, this is the first thing to check.
GoPro. The docs recommend the Wide lens. Full sensor aspect ratio gives Gyroflow the most to work with: 4:3 on models up to the Hero 10, 8:7 on the Hero 11 and newer. Those modes have fewer frame rate options, so if you need the maximum frame rate, shoot 16:9. Superview and Hyperview stretch the image in a non-linear way. Since 1.7.0, the Hero 11 and newer models are stabilized accurately in these modes, because Gyroflow reads the lens calibration GoPro saves in every file. On older models the docs don't recommend them.
Resolution and frame rate. Oscar Liang suggests recording at a higher resolution than you plan to publish, for example 4K for a 2.7K edit or 2.7K for 1080p, because stabilization crops the frame. He also shoots 60 fps, while noting that this is the general consensus among users rather than an official Gyroflow recommendation.
Shutter speed. This one surprises people. The Gyroflow docs say that for any electronic stabilization you should avoid motion blur, so use a fast shutter and skip ND filters if the light allows. Blur baked into the frame keeps the direction of the original shake, while the stabilized image moves differently, and the mismatch looks bad. According to the docs, the 180-degree rule doesn't work with digital stabilization of shaky footage. A 90-degree or even 45-degree shutter is a much better choice. You can add motion blur in the editor after stabilization, for example with ReelSmart Motion Blur or the tools in DaVinci Resolve and After Effects.
That contradicts the guide to ND filters and the 180-degree rule on this site, and both are right for their case. The 180-degree rule fits a camera stabilized by a gimbal or a very smooth flight that only needs minor corrections. For footage you plan to run through Gyroflow, choose the faster shutter.
Jittery footage from DJI O3 and O4
A common complaint is that O3 Air Unit footage gets shakier after stabilization. The docs explain why: the camera module is very light and often hard-mounted to the frame, so its gyro picks up motor noise. They suggest fixing the hardware first, because clean motion data always gives the best result:
- Change the motor PWM frequency in the ESC from 24 kHz to 48 kHz or more. The default 24 kHz interferes with the IMU sampling frequency.
- Soft mount the camera, for example with TPU or rubber inserts.
- Check that the lens is not loose. Some users had to glue it.
- Make sure the drone itself is well tuned: fresh, balanced props, no resonance and RPM filtering enabled. The guide to RPM filtering on this site shows how to check it works.
- Make sure the air unit's power is filtered by a low-ESR capacitor. Some users had problems when it was powered straight from the LiPo without one.
The docs also describe the "Gyrogate" problem. Some O4 Air Unit Pro units made in 2026 have a different gyro chip, the ICM-40609-D instead of the MP66. Raw footage looks fine, but under motor vibration the gyro reports motion that didn't happen, and stabilized footage looks jittery both in DJI's RockSteady and in Gyroflow. Soft mounting doesn't help with that. The only hardware fix is a camera module with the MP66 chip.
When hardware doesn't help, the docs point to "Optical correction" (since 1.7.0). It measures the camera motion from the image and corrects the gyro data where the two disagree, and it also works on footage you've already recorded. For jello, the wobbling lines left after stabilization, the docs suggest the low-pass filter on the motion data first, without going below 30 Hz.
Opening and syncing the file
Drag the video into Gyroflow. DJI and GoPro split long recordings at 4 GB. If you drop all the parts in together, Gyroflow offers to merge them losslessly.
Below the preview you should see three gyro traces, one for each axis. If they aren't there, the file has no gyro data: go back to the camera settings, or for RunCam load the .gcsv file in the motion data panel ("Motion data"). The lens profile loads automatically for supported cameras.
Synchronization aligns the motion data in time with the frames. The docs say it isn't needed for GoPro Hero 8 and newer, DJI, Insta360, Sony and a few cinema camera brands. Oscar Liang adds that with GoPro and DJI, adding sync points by hand can do more harm than good.
For other cameras, use "Auto sync". With internal gyro data the offset never exceeds 1 second and is usually under ±200 ms. If you end up with several sync points, they should have similar values. Points of 10, 12 and 16 ms are plausible, while 10, -50 and 70 ms are definitely wrong.
Stabilization settings
- Smoothing algorithm: leave "Default". The docs say it is the right choice in 99.5% of cases. If the image turns black, you have "Fixed camera" selected. If it zooms in too much, you probably have "Plain 3D".
- Smoothness: the default 0.5 works in most cases according to the docs. More smoothness means more cropping. For relatively stable FPV flights, Oscar Liang usually goes for 10% to 30% and raises it only for shakier footage.
- Horizon lock: keeps the horizon level, at the cost of extra zoom. Oscar Liang uses it for smooth cinewhoop shots or when the drone flies tilted to one side, and leaves it off for freestyle, where the rolls are part of the shot.
- Zooming: "Dynamic zooming" adjusts the crop to how much the frame moves. Zooming speed is usually set to 2 to 5 seconds. Oscar Liang prefers 5 seconds for relaxed cruising and faster values for footage full of flips and rolls.
- FOV: with dynamic zooming, 1.0 uses as many pixels as possible without black edges. Above 1 you start seeing the edge of the frame.
- Rolling shutter: for GoPro, DJI, Sony, Insta360, Canon, Z CAM and Blackmagic RAW it is handled automatically. Other cameras need the frame readout time entered.
Another camera with Blackbox data
If the camera on the drone has no gyro, Gyroflow can use the Blackbox log from the flight controller. It reads Betaflight .bbl and .bfl files, or .csv exported from Blackbox Explorer. INAV and Emuflight use the same format.
The docs give a starting point of a 250 Hz logging rate with the debug mode set to None. Gyroflow keeps a set of Betaflight logger presets, including "Gyroflow minimal settings" for logging on the main flight controller. You can also turn off the fields you don't need in the CLI and save space:
set blackbox_disable_pids = ON
set blackbox_disable_rc = ON
set blackbox_disable_setpoint = ON
set blackbox_disable_bat = ON
set blackbox_disable_mag = ON
set blackbox_disable_alt = ON
set blackbox_disable_rssi = ON
set blackbox_disable_debug = ON
set blackbox_disable_motors = ON
set blackbox_disable_gps = ON
save
The flight controller sits flat while the camera is tilted up, so enter the camera angle in Motion data -> Rotation -> Pitch: 30 for a camera tilted up 30 degrees. With an external log the offset between the log and the video can be anything, because it is the time between starting the log and starting the recording, so synchronization is required here. If the file holds several flights, pick yours in "Select log". The guide to Blackbox logging on this site covers setting up the logging itself.
Export
The [ and ] buttons below the preview set the range to export. By default Gyroflow exports 16:9 and copies the bitrate of the source file. H.264 plays everywhere. When you open a 10-bit file, Gyroflow switches to H.265, because the hardware H.264 encoder only handles 8 bits. ProRes is good if you plan to edit the file further. GPU encoding is much faster than the CPU, and the docs say the quality difference is negligible in most cases.