TPA is also easy to overdo. Below is what each setting does in current Betaflight, what the defaults mean, and how to set it from a log instead of guessing.
What TPA does
Below a throttle point called the breakpoint, your gains stay as set. Above it, Betaflight starts reducing them, and the reduction grows in proportion to throttle until it reaches its maximum at full throttle. The maximum is the TPA rate, given as a percentage.
The Betaflight tuning principles page describes the reason for it: TPA was added to deal with fast oscillations caused by high-throttle motor noise on quads running high PID gains. At high throttle the motors are loud, the props bite hard, and D in particular amplifies that noise.
The defaults: 65 and 1350
In current Betaflight (the CLI reference for 4.5 and 2025.12 lists the same values):
| CLI setting | Default | Range | What it does |
|---|---|---|---|
tpa_mode |
D | PD, D, PDS | Which terms get reduced |
tpa_rate |
65 | 0-100 | Reduction at full throttle, in % |
tpa_breakpoint |
1350 | 1000-2000 | Throttle value where the reduction starts |
With the defaults, D is untouched up to 1350. From there it drops in a straight line, and at full throttle you are left with 35% of your D (100 minus 65). Halfway between 1350 and 2000, around 1675, the cut is about half of 65%, so roughly a third of D is gone.
In Betaflight Configurator these settings sit in the PID Tuning tab, in a group labelled "TPA", as "TPA Mode", "TPA Rate (%)" and "TPA Breakpoint (μs)". They belong to the PID profile, so if you switch between profiles, each one carries its own TPA.
Older guides write the rate as a fraction: "TPA 0.65" is the same as tpa_rate = 65 today.
D, PD or PDS
- D is the default, and the CLI documentation calls it the safest option. Only D is reduced, and D is usually the term that turns motor noise into shaking.
- PD reduces P and D, which is how older Betaflight versions worked. Oscar Liang notes you can bring it back with
set tpa_mode = PD. - PDS adds the S term, which is a fixed-wing feature. The other wing-only options (
tpa_curve_type = HYPERBOLICand thetpa_speed_*settings) are not something a multirotor needs.
For a quad, stay with D unless you have a specific reason and a log that shows P is the problem.
The cost: the drone feels different as throttle changes
The Betaflight tuning principles page lists the downside plainly: TPA can hurt consistency, and the drone may rotate faster when more throttle is applied. Your sticks don't change, but the damping does.
Oscar Liang puts it from the other side: he sets the breakpoint as high as possible so D stays constant across a wider throttle range, and keeps TPA as small as he can. The community PID Tuning Guide hosted on the Betaflight site goes further and says its author wouldn't go above 0.4 (40%), because above that the quad feels "loose" at high throttle.
So more TPA isn't free. Each extra percent buys quieter motors at full throttle with less precise handling up there.
When TPA is the right fix
The CLI documentation is explicit: use TPA only if oscillations appear at high throttle after the filters and PIDs are otherwise tuned. Shaking at hover, in turns at mid throttle or after a crash is not a TPA problem.
Before blaming the tune, rule out the mechanical causes. TPA won't fix a bent prop, a rough bearing or a loose frame. The post-crash inspection article on this site has a checklist.
Oscar Liang's tuning order works well here:
- During tuning, move the breakpoint out of the way. He sets it from 1350 to 1750 so TPA doesn't hide oscillation at low and mid throttle while you tune filters and PIDs.
- Tune filters and PIDs as usual (sliders, Blackbox, step response).
- Come back to TPA at the end, only if high-throttle oscillation remains.
A note from the same article's comments: when a reader with high-throttle noise had followed the 1750 step, Oscar pointed out that raising the breakpoint actually lets more of that noise through, and suggested going back to the default as a starting point. The 1750 trick is for the tuning phase, not a universal final value.
Finding the breakpoint from a log
- Turn on Blackbox logging (the Blackbox article on this site covers setup).
- Fly a throttle sweep: climb slowly from low throttle to full and back, plus a few punch-outs.
- In Blackbox Explorer or PIDToolBox, open the frequency vs. throttle view (the heatmap) and find the throttle level where the oscillation band appears.
- Set the breakpoint a little below that point.
- Set the rate as low as still keeps the oscillation down, then fly another sweep to check.
Oscar Liang's example: if oscillation starts around 1800, he would use "TPA = 0.75, 1750", that is tpa_rate = 75 and tpa_breakpoint = 1750. A high rate is acceptable there because it only acts over the last stretch of the stick.
The older Betaflight tuning notes take a different angle. Among their tips for minor random wobbles in HD footage, the 4.3 notes suggest starting TPA just below your cruising throttle so you don't have too much D at higher throttle. The 4.2 notes give the same tip and add D-only mode and a slightly bigger cut. That advice is about cleaner footage, not about a drone that visibly oscillates.
Suggested ranges
The sources don't agree on one number, which is expected, since the right value depends on the build:
| Source | Rate | Breakpoint |
|---|---|---|
| Betaflight default | 65% | 1350 |
| Betaflight tuning principles, 5" freestyle | 40-50% | 1600-1750 |
| Oscar Liang, oscillation from ~1800 | 75% | 1750 |
| Community PID Tuning Guide | at most 40% | - |
The tuning principles page adds the rule behind the table: a lower rate and higher breakpoint give more consistency but can let oscillations back in. Tune to minimize TPA while keeping the shaking away.
If you need an unusually large TPA to stop high-throttle oscillation while low and mid throttle look good, the same page suggests reducing TPA and trying thrust_linear instead. It boosts PID response at low throttle and lowers it at high throttle. Because of that boost, lower the master slider by one or two notches first, start around 25 and raise it in steps of 5.
Low-throttle TPA (Betaflight 4.5 and newer)
Betaflight 4.5 added a second, separate piece: TPA at low throttle. Three settings control it:
tpa_low_rate(default 20): how much D is cut at zero throttle. 20 means a 20% cut, so 80% of normal D remains.tpa_low_breakpoint(default 1050): below this throttle, the low-throttle change applies.tpa_low_always(default OFF): by default, the low-throttle cut works only right after arming, until throttle first goes above the breakpoint. In flight it does nothing. Withset tpa_low_always = ONit applies whenever throttle is low.
The 4.5 release notes explain why: very highly tuned quads can be really excitable sitting on the ground after arming. The default behaviour calms that down without changing anything in the air. Most pilots can leave all three settings alone.
CLI summary
To check current values:
get tpa
Oscar Liang's example as CLI commands:
set tpa_mode = D
set tpa_rate = 75
set tpa_breakpoint = 1750
save
These are an example for a drone whose log shows oscillation starting around 1800, not values to paste blindly. Write your own numbers based on your sweep. The settings apply to the active PID profile.