Why do corners bulge on my prints?
Corners bulge because pressure built up in the hot nozzle keeps pushing plastic out after the toolhead slows for the corner. Pressure advance fixes it by pulling filament back as the head decelerates, and a value set too low leaves the bulge. Klipper ships with pressure_advance at 0 (off), and Marlin’s stock configuration leaves Linear Advance disabled.
The number
| Setting | Where | Stock value | What it does to a corner |
|---|---|---|---|
pressure_advance |
Klipper, [extruder] |
0, which disables it | Too low: blobbing, bulging corners. Too high: rounded corners and thin extrusion leading into them |
Tuned pressure_advance |
Klipper | Typically 0.050 to 1.000; the high end is usually Bowden only | No improvement by 1.000 means pressure advance is unlikely to help |
LIN_ADVANCE (Linear Advance) |
Marlin, Configuration_adv.h |
Disabled. Enabling it starts K at 0.22, and K 0 turns it off | Same as pressure_advance |
square_corner_velocity |
Klipper, [printer] |
5 mm/s | Lower slows every corner; Klipper’s tuning test drops it to 1 to make the bulge obvious |
JUNCTION_DEVIATION_MM |
Marlin, Configuration.h |
0.013 mm, about 10 mm/s through a 90° corner at 3000 mm/s² | Smaller slows every corner and can leave blobs; larger rounds corners and rings |
| Classic jerk, X and Y | Marlin, CLASSIC_JERK |
Off; 10 mm/s once enabled | Lower slows corners, higher speeds them up |
| Flow ratio | OrcaSlicer filament settings | Recommended 0.95 to 1.05 | Too high widens every wall, not only the corners |
| Seam gap | OrcaSlicer seam settings | 0 to 15% of the nozzle size, with tuned pressure advance and retraction | A larger gap reduces the bulge at the seam |
The firmware values come from Klipper v0.13.0’s configuration reference and pressure advance guide, Marlin 2.1.2.9’s Configuration.h and Configuration_adv.h, and Marlin’s junction deviation page; the slicer rows are from the OrcaSlicer wiki.
Why do corners bulge?
Melted plastic needs pressure to flow, and more flow needs more pressure. The extruder slows in step with the toolhead, but the pressure built at full speed takes time to bleed off and keeps pushing plastic onto the corner. That is why Bambu Lab notes the blobs get worse at higher print speeds. Pressure advance cancels the lag by running the extruder ahead as the head speeds up and backward as it slows (how pressure advance works).
- Bulge where the head slows into the corner
- Sharp corner the slicer drew
- Straight wall at normal width
Is pressure advance too low if corners bulge?
Yes. Klipper’s tuning guide says corners blob below the ideal value and round off above it, so turn pressure advance on or raise it. Start from the starting values for PLA, then tune it:
- Klipper: print the tuning tower from Klipper’s pressure advance guide, save the result as
pressure_advancein[extruder]and sendRESTART(reading the test). - Marlin: enable
LIN_ADVANCEinConfiguration_adv.hand rebuild. Find K with Marlin’s K-factor pattern, then addM900 K<value>to the end of your slicer’s start G-code. - Prusa MK4/S, MK3.9/S, XL and MINI/+ on firmware 5.0.0 or later: pressure advance is the
M572 Sline in the filament’s start G-code in PrusaSlicer. Prusa recommends keeping its profile value, so first check that the profile matches your printer and nozzle. - Bambu Lab printers: run Flow Dynamics calibration (in Bambu Studio).
Why do corners still bulge after pressure advance tuning?
Usually the printer is not running the value you tuned, or it slows harder into corners than it did in the test. Check in this order:
- The slicer replaces your value. With Pressure advance ticked in OrcaSlicer’s filament settings, the slicer writes
SET_PRESSURE_ADVANCE ADVANCE=<value>(Klipper) orM900 K<value>(Marlin) at print start and at every filament change. Enter your tuned value there, or untick it. - Corners run slower than stock.
- Klipper: send
RESTARTafter the tuning test, which dropssquare_corner_velocityto 1 and acceleration to 500. Keep the stock 5 mm/s; Klipper warns that going higher adds input shaper smoothing. - OrcaSlicer on Klipper: with Default jerk above 0, Outer wall jerk goes out as
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=on every outer wall. Set Default jerk to 0 to keep the printer’s value. - Marlin: junction deviation below the stock 0.013 mm, or classic jerk below 10 mm/s, slows corners. For corner blobs, Marlin says to raise junction deviation a little (
M205 J<value>, thenM500) if the corners are otherwise clean.
- Klipper: send
- The outer wall prints slower than the test. OrcaSlicer’s wiki says the right value falls as speed and acceleration rise, so a value tuned fast can be too low for slow walls. Tune at your outer wall speed and acceleration, or use adaptive pressure advance.
- The spool, nozzle or temperature changed. Each one changes the right value, and Klipper says to calibrate with every spool.
Is it over-extrusion at the corners or everywhere?
If only the corner is fat, it is pressure. If a straight stretch of wall is wide too, it is flow, and Klipper says to calibrate the extruder before tuning pressure advance:
- Slicer: run a flow ratio calibration; OrcaSlicer recommends 0.95 to 1.05.
- Klipper: send
G91thenG1 E50 F60, measure how far the filament moved, and multiplyrotation_distanceby that distance over 50. Repeat if it was off by more than about 2 mm. - Marlin: correct the extruder steps with
M92 E<steps>and save withM500.
Why does my printer leave blobs at seams?
The seam is where each loop starts and stops, so it collects both pressure errors: ooze before the start and leftover pressure at the stop. Fix it in this order:
- Pressure advance. Too low widens the line at the seam and too high leaves a gap, per OrcaSlicer’s seam guide.
- Retraction and wipe. With pressure advance tuned, Klipper suggests a small retraction (0.75 mm, for example), wipe on retract and z-lift off. It warns that coasting is likely to make blobbing worse.
- Seam gap and wipes (OrcaSlicer). A larger Seam gap shrinks the bulge; 0 to 15% of the nozzle size suits a tuned printer. Wipe on loops tucks the seam end into the part (it needs more than one wall), and Wipe before external loop hides the start blob inside it.
- Seam position. Back or Aligned in OrcaSlicer, or Rear in PrusaSlicer (Print Settings > Layers and perimeters > Seam position), keeps the seam out of sight.
Are rounded corners a pressure advance problem?
Often, yes: rounded corners are the opposite of a bulge and mean pressure advance is too high. Klipper’s guide ties them, and poor extrusion leading up to the corner, to a value above the ideal. When in doubt, it says to prefer the lower value (signs it is too high). Fast corners round them too: Klipper’s input shaper at high acceleration or with square_corner_velocity above 5 mm/s, and Marlin’s junction deviation set too large.
How to check it on your own print
- Read the values in use. On Klipper,
SET_PRESSURE_ADVANCEandSET_VELOCITY_LIMITwith no parameters print the current values. On Marlin,M900reports K andM503lists the junction deviation. - Search the sliced G-code for
SET_PRESSURE_ADVANCE,M900andSQUARE_CORNER_VELOCITY: each line overrides the printer’s own setting. - Print a hollow square at your outer wall speed and acceleration. Bulging corners: raise pressure advance. Rounded corners or a thin line into the corner: lower it. A fat straight wall: fix flow first.
- Stop at 1.000. No gain by then means pressure advance is unlikely to help, Klipper says. Set it back to 0 and work on flow and corner speed.
Sources
- docs/Config_Reference.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- docs/Pressure_Advance.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- docs/Kinematics.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- docs/Resonance_Compensation.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- docs/Rotation_Distance.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- docs/Slicers.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- klippy/kinematics/extruder.py at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- klippy/toolhead.py at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
- Marlin/Configuration.h 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)
- Junction Deviation, Marlin Firmware documentation (accessed October 24, 2026)
- Linear Advance, Marlin Firmware documentation (accessed October 24, 2026)
- M900: Linear Advance Factor, Marlin Firmware documentation (accessed October 24, 2026)
- M92: Set Axis Steps-per-unit, Marlin Firmware documentation (accessed October 24, 2026)
- Flow Dynamics Calibration, Bambu Lab Wiki (accessed October 24, 2026)
- Seam settings, OrcaSlicer Wiki (accessed October 24, 2026)
- Material flow ratio and pressure advance, OrcaSlicer Wiki (accessed October 24, 2026)
- Jerk XY, OrcaSlicer Wiki (accessed October 24, 2026)
- src/libslic3r/GCodeWriter.cpp at v2.4.2, OrcaSlicer on GitHub (accessed October 24, 2026)
- src/libslic3r/GCode.cpp at v2.4.2, OrcaSlicer on GitHub (accessed October 24, 2026)
- Seam position, Prusa Knowledge Base (accessed October 24, 2026)
- Pressure Advance, Prusa Knowledge Base (accessed October 24, 2026)