PrintLabGuide
Flat isometric illustration of a 3D printer gantry with filament feeding into the hotend above a pale blue printed disc on a grey bed.
calibration

Pressure Advance Calibration for Klipper and Marlin

Pressure advance fixes bulged corners and starved line starts. How to calibrate it in Klipper, Marlin Linear Advance and OrcaSlicer, with starting values.

By PrintLabGuide Editorial · ·Updated August 18, 2026 · 11 min read

Some print defects survive a perfect flow-rate calibration. Corners come out bulged and glossy while the straight runs look right. The first few millimetres after every corner look starved and gappy. Seams show a blob on one side and a void on the other. Solid top surfaces have a faint ripple that tracks the infill direction underneath.

None of those are flow errors, because flow rate sets how much plastic comes out on average, and all of them are timing errors — the nozzle delivering the right total volume at the wrong moments. Pressure advance is the correction for that, and it is the single calibration most likely to be missing from a printer that has otherwise been tuned carefully.

The Physics in One Paragraph

The melt zone is not rigid. Molten plastic compresses slightly, the filament itself compresses along its length, and on a Bowden setup the PTFE tube stretches. When the extruder pushes harder, pressure builds in that compliance before the extra plastic appears at the nozzle; when the extruder slows, the stored pressure keeps pushing after it should have stopped. The result is a lag between commanded flow and delivered flow, and the lag grows with print speed.

The Klipper pressure advance documentation models this as a linear relationship: the extra filament that needs to be held in the melt zone is proportional to the current extrusion rate. Feed that model a coefficient and the firmware can push extra filament in advance of an acceleration and retract slightly before a deceleration, cancelling the lag.

That is the whole idea, and every firmware implements the same model under a different name.

One Model, Four Names

Firmware or slicerNameSettingDocumented range
KlipperPressure advancepressure_advance in printer.cfg, or SET_PRESSURE_ADVANCE0.05–1.0, “the high end usually only with bowden extruders”
MarlinLinear AdvanceM900 K<value>Prusa’s shipped direct-drive figures run 0.04–0.1; Bowden lands far higher
RepRapFirmwarePressure advanceM572 D0 S<value>Same units and order of magnitude as Klipper
Bambu Studio / OrcaSlicerFlow dynamics / pressure advancePer-filament PA value in the filament presetWhatever the calibration prints; stored per filament, not per printer

Two things follow from that table. First, the units are close enough between Klipper, RepRapFirmware and Marlin that a value from one is a reasonable starting guess on the same hardware running another — but only a starting guess, because the test is cheap and the assumption is not. Second, the number belongs to the filament, not the machine. Every one of these firmwares lets you store it per material for exactly that reason, and a single global value set once from one spool is the most common way this calibration goes stale without anyone noticing.

Bowden setups need dramatically higher values than direct drive, for the obvious reason: there is far more compliant material between the drive gear and the nozzle. Klipper’s own guidance puts the top of its range there specifically. A Bowden number on a direct-drive machine will over-correct badly, which is why the slicer tests ship as separate direct-drive and Bowden variants.

What to Fix First

Pressure advance is stage 6 in the 3D printer calibration order, and the three stages before it are prerequisites rather than suggestions.

  • E-steps. The test pattern is read by eye. If the extruder is 5% out, the whole pattern is uniformly wrong and the visual comparison becomes guesswork. Set them using the extruder e-steps calibration guide, or the machine-specific version in how to calibrate e-steps on Ender 3.
  • Temperature. Melt viscosity is part of the compliance being modelled. A spool run 15 °C off its ideal will produce a different optimum. Find the temperature with a temperature tower first.
  • Flow rate. Over-extrusion masks the corner bulging that the test is asking you to look for. Set the flow ratio using the single-wall method in flow rate calibration for dimensional accuracy.

Dry filament matters here too, for the same reason it matters everywhere: moisture changes extrusion behaviour, so a value found on a damp spool stops being right once the spool dries. The per-material schedule is in the filament drying protocol.

Method 1: The Klipper Tuning Tower

Klipper’s built-in approach changes the value continuously as the print rises, so one object covers the whole range.

  1. Print the standard test object with a large enough footprint to include several sharp corners, at a single perimeter and no infill.
  2. Before the print starts, issue SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500, which is the command Klipper’s own documentation specifies for this test. Dropping square-corner velocity to 1 mm/s forces the toolhead to come to a near stop at each corner, which is what makes the extrusion lag visible; leave it at the usual 5 mm/s and the test understates the defect it is measuring. (Older guides pass ACCEL_TO_DECEL here. That parameter has been superseded by MINIMUM_CRUISE_RATIO and current Klipper builds will reject it, so drop it rather than translating it.)
  3. Issue TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005 for a direct-drive setup, or FACTOR=.020 for Bowden.
  4. Print it, then measure the height at which the corners stop bulging and before the corners start showing gaps.
  5. Multiply that height in millimetres by the factor and add the start value. At 30 mm with FACTOR=.005, the answer is 0.15.
  6. Set pressure_advance in printer.cfg and restart, or store it per filament.

Klipper’s documentation is explicit that acceleration and square-corner velocity affect what the tower shows, so record the settings the tower was printed at.

Method 2: The OrcaSlicer Tests

For Marlin, RepRapFirmware and Bambu-derived machines, the slicer-side test is usually easier. OrcaSlicer ships three of them under Calibration → Pressure Advance, each in a direct-drive and a Bowden variant — pick the wrong variant and the value range printed will not contain your answer.

  • The line method is the fastest to print and read: paired lines at increasing values, correct where the line ends stop showing a bulge or a gap. Its weakness is stated plainly in the documentation — accuracy depends heavily on first-layer quality, so run bed mesh levelling before you trust it.
  • The pattern method is adapted from Andrew Ellis’ pattern, and its advantage is batching: it can generate several tests in one project, which is how you sweep a coarse range and then a fine one without reslicing.
  • The tower method takes longer but does not depend on the first layer at all. On a machine with a marginal first layer, this is the one to use.

One Marlin-specific prerequisite that wastes a lot of time: Linear Advance has to be compiled into the firmware, and it is not enabled by default on every board. Send M900 and see whether the printer answers with a K value. If it does not, no slicer-side test will change anything until the firmware is rebuilt. On Bambu machines, do not tick the separate flow-calibration option while running this test — it changes the variable you are trying to measure.

Read the result under raking light at a low angle. The defect being judged is a thickness variation of a few hundredths of a millimetre and it is far more visible as a shadow than as a colour change.

Reading the Result

There is a genuinely correct answer and it is bracketed on both sides.

Too low. Corners bulge outward. Lines are thick at the end and thin at the start. The seam shows a blob. Solid surfaces look slightly over-filled where the toolhead slowed down.

Correct. Line width looks constant from acceleration through the corner and out the other side. Corners are square without a raised lip.

Too high. Corners show a visible gap or a pinched-in notch. Line starts are starved. The extruder audibly reverses on every corner at speed, and on a Bowden machine the effect can look like light under-extrusion everywhere.

The failure mode of over-correcting is worse than under-correcting, because the firmware is now commanding retractions on every direction change. If you are unsure between two values, take the lower one.

Smoothing, and Why the Number Is Not the Whole Setting

Klipper pairs pressure advance with a smoothing time, pressure_advance_smooth_time. The config reference defines it as the time window used to average extruder velocity when computing the correction, defaults it to 0.040 s, caps it at 200 ms, and notes it only applies when pressure_advance is non-zero. Lower it and the correction is sharper but the extruder motor is asked for more violent accelerations; raise it and the correction smears across a longer distance. The default suits most machines, and it is not worth touching until the coefficient itself is right — tuning both at once means neither result is attributable.

Marlin’s Linear Advance has an analogous constraint, expressed through the extruder’s own acceleration and jerk limits. The physical point is the same in both firmwares: the model can ask for an extruder move the extruder cannot actually perform. A high-inertia geared extruder or a marginal driver current will then skip steps or grind rather than produce a visible print defect, so an audible change at corners after enabling pressure advance is a mechanical symptom, not a sign the coefficient is too high.

Where Retraction and Wipe Distance Fit

This is the part that trips people who tuned their printer in the pre-pressure-advance era. Pressure advance already bleeds nozzle pressure down before the end of a line, so a machine running correct pressure advance needs less retraction than the same machine without it — often noticeably less on a Bowden setup.

Two practical consequences:

  • Re-tune retraction after pressure advance, not before. Retraction distance and speed are stage 7 for exactly this reason; the starting values and the method are in how to fix stringing on 3D prints.
  • Wipe distance interacts with both. Wiping moves the nozzle along the just-printed path while retracting, to hide the pressure release inside the seam. With pressure advance correcting the pressure profile, a long outer-wall wipe distance starts to remove material that was never over-extruded in the first place, leaving a visible divot at the seam. Shorten it, or turn wipe off on the outer wall and judge the seam again.

Machines That Ship The Value For You

Two vendors take the number off your hands, and it is worth being precise about how far that goes, because the marketing blurs three different things.

Prusa ships it in the profile. Prusa’s Linear Advance article documents the per-material K factors baked into its own PrusaSlicer filament presets — 0.05 for PLA, 0.08 for PETG, 0.04 for ASA and ABS, 0.1 for Nylon FX256 on a 0.4 mm nozzle — and says outright that there is no need to adjust them if you are using those presets. That is a shipped constant, not a measurement.

Bambu measures it, but only on the machines with the sensor for it. The X1 series uses its micro-lidar to scan a calibration pattern and derive the coefficient automatically. The P1 series has no lidar and no eddy-current sensor, so it cannot. On a Bambu Lab P1S the vendor’s own filaments come with a stored value in their preset, but a third-party spool that prints consistently wrong needs the flow-dynamics calibration run manually from Bambu Studio, exactly like the slicer-side tests above. Buying the enclosed machine does not buy you out of this calibration; it buys you a good default for one brand of filament.

The distinction matters when you switch to a cheaper spool, which is the exact moment the stored preset stops describing your material.

On a fully open machine you get the other trade: the value is yours to set, per material, and it stays at zero until you set it.

Verification, and What Invalidates It

Once the value is set, print an object with sharp corners at a speed you actually use. Ringing and pressure-advance artefacts look similar at a glance and have different causes: ringing repeats as a decaying wave after a corner and is a resonance problem addressed by input shaping, covered in print speed vs quality: where input shaping changes the math. A pressure-advance error appears at the corner and does not oscillate.

Redo the calibration when any of these change:

  • The filament brand, colour or material, since each has different melt viscosity.
  • The hotend or heat break, which changes melt-zone volume.
  • The nozzle diameter, which changes flow rate at a given speed and therefore the size of the lag. The knock-on effects on line width and layer height are set out in the nozzle size and layer height guide.
  • The Bowden tube length, or a conversion between Bowden and direct drive.

Print speed itself does not invalidate the coefficient — that is the point of the model — but a printer running very low acceleration will show almost no benefit, because there is barely any flow-rate change to correct for.

The Payoff

Pressure advance is a single number per material that removes a whole class of defect nothing else touches: dimensional error concentrated at corners, inconsistent line width, seam blobs and the vague “the corners look wrong” complaint that survives every other calibration. It costs one test print per filament and it is worth more at high speed than any other setting on the list.

Store the value alongside the temperature and flow ratio for that spool, and work through the rest of the sequence in the order set out in the 3D printer calibration guide order. If you are budgeting filament and machine time for a run of test prints before a large job, the print time and filament cost estimator will price the whole calibration session in grams and hours before you start it.

Sources

  1. Klipper — Pressure Advance
  2. Marlin Firmware — Linear Advance
  3. Prusa Knowledge Base — Linear Advance
  4. OrcaSlicer Wiki — Pressure Advance calibration
  5. Klipper — Config Reference ([extruder])
#pressure-advance#linear-advance #calibration #klipper #marlin #fdm

Related