What is pressure advance in 3D printing?
Pressure advance is a firmware setting that pushes extra filament into the hotend as the print head speeds up and pulls it back as the head slows, in proportion to extruder speed, so nozzle pressure keeps pace. It prevents thin line starts and corner blobs. Klipper ships it at 0 (off) and calls 0.050 to 1.000 typical.
The number
| Firmware or slicer | Name and where it is set | Off value | Values it accepts | Typical values its makers give |
|---|---|---|---|---|
| Klipper | pressure_advance in [extruder], or SET_PRESSURE_ADVANCE ADVANCE= |
0, the default | 0 or higher, no upper limit | 0.050 to 1.000; the high end usually only with Bowden extruders |
| Marlin | Linear Advance, M900 K, only if LIN_ADVANCE is compiled in (it is off in Marlin’s stock configuration) |
K0 |
0 to 10 | About 0.1 to 2.0; Bowden needs more than direct drive |
| Prusa firmware 5.0.0 and later (MK4/S, MK3.9/S, XL, MINI/+) | Pressure Advance, M572 S, sent by the filament start G-code in PrusaSlicer’s profiles |
S0 |
0 to 10 | Set per filament and nozzle diameter by PrusaSlicer’s profiles; Prusa recommends keeping that default |
| Bambu Lab | Flow Dynamics, the K value (“Factor K”) in Bambu Studio’s Calibration tab | None: Bambu Studio’s K fields reject 0 | Above 0 and below 2 | Bambu’s own example: 0.015 (auto calibration, Bambu PLA Basic, 0.4 mm nozzle) |
Klipper’s figures come from its pressure advance guide, configuration reference and v0.13.0 source; Marlin’s from its Linear Advance docs and 2.1.2.9 source; Prusa’s from its knowledge base, Buddy firmware v6.9.2 and PrusaSlicer 2.9.6’s profiles; Bambu’s from the Bambu Lab Wiki and Bambu Studio v02.08.02.61.
Why does extrusion lag behind the print head?
Because the plastic in the hotend has to be pressurized before it flows. Klipper models this in two parts: pressure in the hotend rises as filament is pushed in, like a compressed spring, and the flow out of the nozzle orifice is set by that pressure. Building pressure takes extra filament, and releasing it takes time.
Without pressure advance, the extruder feeds exactly what the slicer asks for, and the flow at the nozzle lags. Marlin’s documentation describes a fast line: at the start the filament is still compressing, so the line comes out thin; when the extruder stops, the compressed melt keeps flowing and leaves a blob. Corners are where lines stop and start, so the error shows there as bulging corners, or as gaps between perimeters in extreme cases. Bambu Lab notes the effect gets worse at higher print speeds.
- Filament pushed in by the extruder
- Melt under pressure in the hot zone
- Nozzle
- Line thickens where the head slows
- Even line at steady speed
How does pressure advance work?
It moves the extruder ahead of the slicer’s plan by an amount proportional to extruder speed. Klipper’s formula:
pa_position = nominal_position + pressure_advance * nominal_velocity
- Speeding up: velocity rises, so the extruder pushes in extra filament and builds pressure early. The higher the flow, the more it adds.
- Slowing down: velocity falls and the extra filament is retracted. Klipper’s kinematics notes show the extruder running backward here.
- Steady speed: the offset stays constant, so the extruder feeds at the planned rate.
Only the extruder moves differently. The toolhead’s path and timing do not change. Klipper averages the extruder velocity over a short window, 0.040 s by default, so the motor does not jerk at each speed change. That window is pressure advance smooth time.
What does the pressure advance value mean?
It is how far ahead the extruder runs, in millimeters of filament, for each 1 mm/s of extruder speed. At 0.050, the filament leads by 0.05 mm for every 1 mm/s, and a higher value means more compensation. Klipper and Marlin both define the value in these units, and Prusa converts an old M900 K value 1:1. Bambu publishes no unit for its K.
The right value belongs to one extruder, nozzle and filament together, and a Bowden extruder (a long tube between drive gear and hotend) needs more than a direct drive (starting values for PLA).
Marlin calls the same setting Linear Advance, Bambu Lab calls it the Flow Dynamics K value (where it is in Bambu Studio), and OrcaSlicer labels it “Pressure advance (Klipper) AKA Linear advance factor (Marlin)”.
Can pressure advance be negative?
No. Klipper, Marlin and Prusa firmware treat 0 as off and refuse anything below it. Bambu Studio goes further and refuses 0:
- Klipper: the minimum is 0 in
printer.cfgand inSET_PRESSURE_ADVANCE. A negative config value stops Klipper withOption 'pressure_advance' in section 'extruder' must have minimum of 0.0. - Marlin:
M900 Koutside 0 to 10 is ignored with?K value out of range (0-10). - Prusa:
M572 Soutside 0 to 10 is ignored with?Pressure advance (S) value out of range (0-10). - Bambu Studio: a K of 0 or less, or 2 or more, is refused with
Please input a valid value (K in 0.0~2.0).
What does go negative is the extruder’s motion: while the head slows, pressure advance can run the extruder backward to take the extra filament out. If your test print looks best at 0, leave it off. Klipper’s guide adds that if no value up to 1.000 brings a clear improvement, pressure advance is unlikely to help and should stay disabled.
How to check it on your own print
- Read the current value. Send
SET_PRESSURE_ADVANCEwith no parameters on Klipper,M900on Marlin (noAdvance K=reply means your build has no Linear Advance) orM572on Prusa. On Bambu, open Calibration, Flow Dynamics, Manage Result in Bambu Studio. - Calibrate extruder rotation distance (E-steps) and nozzle temperature first. Klipper’s guide says both change the result.
- Print a calibration test with the spool and nozzle you will use: Klipper’s tuning tower, or Flow Dynamics calibration on a Bambu printer. How to read a pressure advance test has the commands, test settings and math.
- Read the corners. Blobs and bulges mean too little (why corners bulge). Rounded corners or poor extrusion leading into them mean too much (signs it is too high). Klipper says to take the lower value when in doubt.
- Save it. On Klipper, set
pressure_advance:in[extruder]and sendRESTART. - Redo it when something changes. Klipper says to recalibrate for each spool; Bambu Lab adds a new or worn nozzle and any change to print temperature or maximum volumetric speed.
- If the extruder skips after tuning, Klipper warns that above about 0.200 the extruder may lack the torque for the extra filament at normal acceleration: lower the acceleration or turn pressure advance off.
Sources
- Pressure advance, Klipper documentation (accessed October 24, 2026)
- Kinematics (Pressure advance section), Klipper documentation (accessed October 24, 2026)
- Configuration reference ([extruder] section), Klipper documentation (accessed October 24, 2026)
- klippy/kinematics/extruder.py at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- klippy/configfile.py at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- Linear Advance, Marlin Firmware documentation (accessed October 24, 2026)
- M900: Linear Advance Factor, Marlin Firmware documentation (accessed October 24, 2026)
- Marlin/src/gcode/feature/advance/M900.cpp at 2.1.2.9, Marlin on GitHub (accessed October 24, 2026)
- Marlin/Configuration_adv.h at 2.1.2.9, Marlin on GitHub (accessed October 24, 2026)
- Pressure Advance, Prusa Knowledge Base (accessed October 24, 2026)
- lib/Marlin/Marlin/src/gcode/feature/pressure_advance/M572.cpp at v6.9.2, Prusa-Firmware-Buddy on GitHub (accessed October 24, 2026)
- resources/profiles/PrusaResearch.ini at version_2.9.6, PrusaSlicer on GitHub (accessed October 24, 2026)
- Flow Dynamics Calibration, Bambu Lab Wiki (accessed October 24, 2026)
- src/slic3r/Utils/CalibUtils.cpp at v02.08.02.61, Bambu Studio on GitHub (accessed October 24, 2026)
- src/libslic3r/PrintConfig.cpp at v2.4.2, OrcaSlicer on GitHub (accessed October 24, 2026)