Why do corners bulge on my prints?

By Asked 3D Content TeamPublished Last verified

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).

The outer corner of a printed wall swelling outward past the sharp corner the slicer drew, shown as a dark line on the top layerLeftover pressure in the nozzle keeps pushing plastic out as the head slows for the corner, so the corner swells past the sharp edge the slicer drew.1Bulge where the head slows into the corner3Straight wall at normal width2Sharp corner the slicer drew
  1. Bulge where the head slows into the corner
  2. Sharp corner the slicer drew
  3. Straight wall at normal width
Leftover pressure in the nozzle keeps pushing plastic out as the head slows for the corner, so the corner swells past the sharp edge the slicer drew.

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_advance in [extruder] and send RESTART (reading the test).
  • Marlin: enable LIN_ADVANCE in Configuration_adv.h and rebuild. Find K with Marlin’s K-factor pattern, then add M900 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 S line 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:

  1. The slicer replaces your value. With Pressure advance ticked in OrcaSlicer’s filament settings, the slicer writes SET_PRESSURE_ADVANCE ADVANCE=<value> (Klipper) or M900 K<value> (Marlin) at print start and at every filament change. Enter your tuned value there, or untick it.
  2. Corners run slower than stock.
    • Klipper: send RESTART after the tuning test, which drops square_corner_velocity to 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>, then M500) if the corners are otherwise clean.
  3. 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.
  4. 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 G91 then G1 E50 F60, measure how far the filament moved, and multiply rotation_distance by 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 with M500.

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:

  1. Pressure advance. Too low widens the line at the seam and too high leaves a gap, per OrcaSlicer’s seam guide.
  2. 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.
  3. 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.
  4. 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_ADVANCE and SET_VELOCITY_LIMIT with no parameters print the current values. On Marlin, M900 reports K and M503 lists the junction deviation.
  • Search the sliced G-code for SET_PRESSURE_ADVANCE, M900 and SQUARE_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

  1. docs/Config_Reference.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  2. docs/Pressure_Advance.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  3. docs/Kinematics.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  4. docs/Resonance_Compensation.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  5. docs/Rotation_Distance.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  6. docs/Slicers.md at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  7. klippy/kinematics/extruder.py at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  8. klippy/toolhead.py at v0.13.0, Klipper on GitHub (accessed October 24, 2026)
  9. Marlin/Configuration.h at 2.1.2.9, Marlin on GitHub (accessed October 24, 2026)
  10. Marlin/Configuration_adv.h at 2.1.2.9, Marlin on GitHub (accessed October 24, 2026)
  11. Junction Deviation, Marlin Firmware documentation (accessed October 24, 2026)
  12. Linear Advance, Marlin Firmware documentation (accessed October 24, 2026)
  13. M900: Linear Advance Factor, Marlin Firmware documentation (accessed October 24, 2026)
  14. M92: Set Axis Steps-per-unit, Marlin Firmware documentation (accessed October 24, 2026)
  15. Flow Dynamics Calibration, Bambu Lab Wiki (accessed October 24, 2026)
  16. Seam settings, OrcaSlicer Wiki (accessed October 24, 2026)
  17. Material flow ratio and pressure advance, OrcaSlicer Wiki (accessed October 24, 2026)
  18. Jerk XY, OrcaSlicer Wiki (accessed October 24, 2026)
  19. src/libslic3r/GCodeWriter.cpp at v2.4.2, OrcaSlicer on GitHub (accessed October 24, 2026)
  20. src/libslic3r/GCode.cpp at v2.4.2, OrcaSlicer on GitHub (accessed October 24, 2026)
  21. Seam position, Prusa Knowledge Base (accessed October 24, 2026)
  22. Pressure Advance, Prusa Knowledge Base (accessed October 24, 2026)