Article

Betaflight TPA: what the rate and breakpoint do, D or PD mode, and when to touch it

Your drone hovers and cruises cleanly, but on a punch-out or a long full-throttle line it starts shaking fast, and the footage shows it. If the shake only appears high on the stick, TPA (Throttle PID Attenuation) is the setting built for it. It lowers PID gains as throttle rises, so the drone has less D, and optionally less P, where motor noise is worst.

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 = HYPERBOLIC and the tpa_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:

  1. 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.
  2. Tune filters and PIDs as usual (sliders, Blackbox, step response).
  3. 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

  1. Turn on Blackbox logging (the Blackbox article on this site covers setup).
  2. Fly a throttle sweep: climb slowly from low throttle to full and back, plus a few punch-outs.
  3. In Blackbox Explorer or PIDToolBox, open the frequency vs. throttle view (the heatmap) and find the throttle level where the oscillation band appears.
  4. Set the breakpoint a little below that point.
  5. 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. With set tpa_low_always = ON it 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.