Read the Failure, Fix the Setting
A hands-on method for diagnosing 3D prints with Orca Slicer and Klipper
Learn to trace stringing, corner blobs, ringing, layer shifts and warping back to the setting that causes them, then measure flow, pressure advance, retraction and input shaping on your own printer. For Klipper and Orca Slicer owners tired of copying profiles.
Free to read, link and share. How you can use this book
This book was written with AI by TailoredRead and checked by AI reviewers. It may contain errors and is not professional advice.
About this book
Many printer owners assume that a failed print points to one obvious setting, so they search for a profile that worked for someone else and hope for the best. When the next print fails in a different way, the search starts over. This book offers a calmer path. It shows you how a model becomes motion, how the slicer and Klipper share the work, and why the same visible flaw can come from several sources. You will find clear explanations of the settings that matter most, including flow ratio, pressure advance, temperature, retraction, and input shaping, along with practical tests you can run in Orca Slicer. Each chapter connects a concept to a defect you have likely seen: stringing, ringing, layer shifts, under-extrusion, and warping. Instead of guessing, you learn to change one variable at a time, record what happens, and reach a conclusion you can trust. Written for owners who print regularly but want to understand their machine, this book helps you calibrate from scratch in a single afternoon and choose walls, infill, and supports with intent. By the end, you will have a repeatable routine you can use on any failed print, and the confidence to stop copying profiles.
Table of contents
- IntroductionWhy failed prints feel so confusing, How this book is organized, What you need before starting
- Chapter 1: From Model to MotionWhat slicing actually produces, Reading G-code line by line, How Klipper interprets and schedules moves
- Chapter 2: Setting Up Orca Slicer and KlipperBuilding a printer profile from scratch, Filament profiles and what they control, Establishing a known-good baseline print
- Chapter 3: Temperature and Flow RatioFinding the right nozzle temperature, Tuning flow ratio for accurate extrusion, Measuring extruder rotation distance in Klipper
- Chapter 4: Pressure Advance and Corner QualityWhat pressure advance compensates for, Running the pressure advance test, Recognizing over- and under-compensation
- Chapter 5: Retraction and the Problem of StringingWhy stringing appears between features, Adjusting retraction distance and speed, Separating stringing from temperature and moisture
- Chapter 6: Input Shaping and RingingHow printer resonance creates ringing, Measuring resonances with an accelerometer, Choosing a shaper and balancing smoothing
- Chapter 7: Reading Common Print DefectsLayer shifts and mechanical clues, Under-extrusion and its many sources, Warping and bed adhesion questions
- Chapter 8: Walls, Infill, and SupportsChoosing wall count for strength, Infill density and pattern trade-offs, Support type, density, and removal
- Chapter 9: Klipper Macros for Repeatable TestsWriting reusable G-code macros in Klipper, Building calibration macros for consistent results, Recording results so tests stay comparable
- Chapter 10: A Repeatable Troubleshooting RoutineWorking through a failed print step by step, Changing one variable at a time, Building your own profile with confidence
- ConclusionCarrying the method into future projects
- Glossary
Introduction
A print comes off the bed with thin hairs of plastic strung between two towers of a model, or with small blobs sitting at every corner of a cube. The usual reaction is to search online for someone else's profile, paste in a dozen numbers, and hope the next attempt looks cleaner. Sometimes it does. More often it trades one defect for another, because the copied numbers were tuned for a different printer, a different hotend, or a different spool of filament sitting in a different room with different humidity. This book starts from a different assumption: the printer in front of you can be understood, measured, and tuned on its own terms, and that process takes an afternoon, not a lifetime.
The three settings most often borrowed from strangers, flow ratio, pressure advance, and retraction distance, are not universal constants. They describe how a specific nozzle pushes a specific filament through a specific extruder at a specific speed. Treating them as magic numbers to copy skips the part that actually matters, which is learning what each one does and how to measure it on the machine that is actually sitting on the desk. That shift, from copying to measuring, is the thread running through every chapter that follows.
None of this requires an engineering background. It requires a willingness to print small test pieces, look closely at what comes out, and change one thing before trying again. The reader this book has in mind already owns a Klipper-based printer, already uses Orca Slicer, and has probably already experienced the frustration of a profile that worked for someone else's video but not for the machine at home. That frustration is the starting point, not a sign of doing something wrong.
The goal is not to memorize a list of ideal settings. It is to build a routine that works on any printer, any filament, and any defect encountered later, long after the specific examples in this book have been forgotten. A defect is treated here as a clue to be read, not a verdict to accept.
Why failed prints feel so confusing
A single visible defect rarely has a single cause. Stringing between two parts of a model can come from a retraction distance that is too short, a nozzle temperature that is too high, or filament that has absorbed moisture from the air. Corner blobbing can come from pressure advance that is poorly tuned, or from a flow ratio that is feeding too much plastic regardless of pressure advance at all. This overlap is the main reason troubleshooting by searching online feels unsatisfying: ten different forum threads describe ten different fixes for what looks like the same problem, and several of them might be partly right for someone else's printer while being useless for the one on the desk.
Part of the confusion comes from the fact that a print defect is the end of a long chain of decisions. Geometry gets converted into toolpaths, toolpaths become G-code commands, and Klipper turns those commands into coordinated motion of motors, a hotend, and an extruder. A flaw visible on the finished part could have entered that chain at the modeling stage, the slicing stage, or the motion-control stage. Looking only at the final print, without understanding the chain that produced it, is a bit like trying to diagnose a car problem by only looking at the exhaust. The symptom is real, but it points backward through several systems rather than to one obvious part.
Copied profiles make this worse in a specific way. A profile downloaded from a stranger bundles together dozens of settings at once, including some that matter a great deal (flow ratio, pressure advance) and some that matter very little for most prints. When a print made from that profile fails, there is no way to know which of the dozens of bundled values caused the problem, because none of them were tested in isolation. The printer owner is left guessing at a combination rather than testing a single variable, which is the opposite of how calibration should work.
Consider a concrete scenario that recurs constantly in printing communities. An owner buys a new spool of a filament brand they have not used before, loads a profile recommended in a video for that same brand, and prints a model that immediately strings badly between letters in a nameplate. The instinct is to raise retraction distance, since stringing is commonly associated with retraction. If the real cause is actually a nozzle temperature several degrees too hot for this specific spool, raising retraction will reduce the stringing somewhat, but it will never fully disappear, and the extra retraction may introduce a new problem such as clogging from repeated filament grinding. The fix looked reasonable. It targeted the wrong variable.
The callout below captures the core habit this book tries to replace, so it is worth stating plainly before moving further.
Key takeaway: Symptom versus cause
A visible defect such as stringing, ringing, or blobbing is a symptom. It describes what the print looks like, not why it happened. The same symptom can trace back to several different causes, so the first step is never to guess a fix. It is to isolate which setting is actually responsible before changing anything.
Printer-to-printer variation adds another layer that is easy to underestimate. Two machines of the identical model, bought from the same store on the same day, can behave differently once their hotends have been assembled, their belts tensioned, and their extruder gears seated. A nozzle that measures slightly differently from its neighbor on the assembly line changes how much plastic flows at a given speed. A belt tensioned slightly looser than another changes how the frame responds to rapid direction changes, which affects ringing. These differences are small individually, but they accumulate, and they explain why a value that works perfectly on one printer can be noticeably wrong on another unit of the same model.
Filament adds yet more variation, and it changes over time even within a single spool. A filament that has been stored in a humid room will extrude differently once it starts absorbing moisture, often producing symptoms that look exactly like a retraction problem (fine popping sounds, small steam-like wisps near the nozzle, inconsistent stringing) even though retraction settings have nothing to do with it. Two spools from the same manufacturer and even the same product line can also vary slightly between production batches. None of this means calibration is pointless. It means calibration describes a relationship between a specific printer and a specific filament at a specific moment, not a universal truth printed on a spool label.
The mechanical and software sides of the printer interact in ways that are not obvious from the outside. Pressure advance, covered later, compensates for pressure buildup inside the extruder during acceleration and deceleration. If retraction settings are also wrong at the same time, the two problems can mask or amplify each other, making it very difficult to tell by eye alone which one needs adjusting. This is precisely why testing one variable at a time, in a fixed order, produces results that can actually be trusted, rather than results that happen to look better by coincidence.
There is also a psychological cost to the copy-and-hope approach that deserves mention. Every failed print after a copied profile fails to work reinforces a belief that 3D printing is unpredictable or that the specific printer is simply difficult. In reality, the unpredictability usually comes from skipping the measurement step, not from any flaw in the hardware. Printers that seem temperamental in the hands of one owner often print reliably once calibrated from scratch, because the earlier failures were caused by settings that were never matched to that machine in the first place.
None of this is meant to suggest that community knowledge is useless. Shared experience is valuable for understanding what a defect generally looks like, what range of values tends to be reasonable, and what tests exist to isolate a cause. The difference this book asks for is treating that shared knowledge as a starting hypothesis to test, never as a finished answer to paste in. A forum post that says try raising your hotend temperature by five degrees
is useful advice about what to try. It is not a substitute for printing the test and looking at the result.
By the end of this book, the aim is for a failed print to produce a specific question rather than a vague sense of frustration. Instead of why does my printer keep stringing,
the question becomes is this stringing happening at a travel move, and does it change when I lower temperature by five degrees but leave retraction untouched?
That second question has a clear test attached to it, and a clear way to read the result. That shift from vague frustration to a specific, testable question is the entire point of the method that follows.
The chapters on flow ratio, pressure advance, retraction distance, and input shaping each build toward this kind of specific question. Each one explains what the setting physically controls, how to isolate its effect from neighboring settings, and how to read the resulting test print. Together they replace a pile of borrowed numbers with a small set of values measured by hand, on the actual printer sitting on the desk.
How this book is organized
The chapters are arranged to follow the same order a print actually travels through, starting with the model and ending with the finished object sitting on the bed. Early chapters explain how a slicing pipeline turns a 3D model into G-code, and how Klipper motion scheduling turns that G-code into coordinated movement of the printer's motors and hotend. Understanding this chain matters because it tells you where to look first when something goes wrong. A defect caused by slicer settings looks different from a defect caused by Klipper's motion planning, even when the two produce visually similar results on the finished part.
After that foundation, the book moves into building a printer profile and a filament profile from scratch in Orca Slicer, rather than importing one. This step feels slower than downloading a ready-made profile, but it establishes a known, owned baseline print that every later calibration test is measured against. Without a stable baseline, it becomes impossible to tell whether a later change actually improved anything, because there is no fixed point of comparison.
From there, the book works through the core calibration settings in a specific sequence: nozzle temperature and flow ratio first, then pressure advance, then retraction, then input shaping. This order is not arbitrary. Each setting in this chain depends somewhat on the ones before it, so temperature and flow are tuned before pressure advance, and pressure advance is tuned before retraction is fine-tuned for stringing. Jumping ahead to tune retraction before flow ratio is correct, for instance, risks compensating for an extrusion problem by over-adjusting a setting that was never the actual cause.
The table below previews how later chapters map specific defects to the settings most likely responsible, which gives a quick sense of what is coming without repeating the detailed explanations that each dedicated chapter provides.
| Defect | Chapter focus | Setting examined |
|---|---|---|
| Corner blobbing | Pressure Advance and Corner Quality | Pressure advance |
| Stringing between features | Retraction and the Problem of Stringing | Retraction distance and speed |
| Ringing near sharp edges | Input Shaping and Ringing | Resonance frequency and shaper choice |
| Layer shifts mid-print | Reading Common Print Defects | Mechanical causes, not slicer settings |
| Weak or soft-looking parts | Walls, Infill, and Supports | Wall count, infill density and pattern |
After the calibration chapters, the book turns to reading defects directly: layer shifts, under-extrusion, and warping each get their own close look at what the visible symptom tends to mean and which category of cause (mechanical, thermal, or settings-based) deserves attention first. This section works as a reference you can return to later, long after finishing the book in order, whenever a new and unfamiliar defect shows up on the bed.
Design-oriented settings come next: wall count, infill density and pattern, and support choices. These are presented differently from the calibration chapters, because they are not really about fixing a defect. They are about matching the printer's settings to what a part actually needs to do, whether that is decorative, load-bearing, or somewhere in between. A vase and a bracket call for very different choices even on a perfectly calibrated printer.
The chapter on Klipper macros shows how to turn the test prints described earlier into reusable, parameterized routines, so that a calibration test run today can be repeated identically in six months without reconstructing it from memory. This matters because filament batches change, nozzles wear, and a printer's behavior can drift slowly over time even without any deliberate changes being made.
The final main chapter pulls every earlier idea into a single repeatable troubleshooting routine, one that starts from a failed print, walks through a fixed sequence of questions, and changes exactly one variable before testing again. This is the routine meant to outlive the book itself, applied to printers, filaments, and defects that have not even been invented yet at the time of writing.
The decision tree below gives an early preview of how that routine starts, before any of the detailed calibration chapters fill in the specific tests.
First branch of the troubleshooting routine
- Print shows a visible defect
- Does the problem appear during travel moves only?
- Yes Suspect retraction or temperature first
- No Does it appear at corners or direction changes?
- Yes Suspect pressure advance or resonance first
- No Suspect mechanical or slicer settings first
- Does the problem appear during travel moves only?
Each chapter follows a similar internal rhythm: an explanation of what a setting physically controls, a specific test to isolate it, and guidance on reading the result correctly. Worked examples use concrete numbers and descriptions of what a test print looks like, so the explanations stay grounded rather than abstract. Code blocks appear where a Klipper macro or a G-code snippet helps illustrate a point concretely.
Reading the book straight through builds the full method in the intended order, which is recommended for anyone starting from a copied profile with little calibration experience. Reading it out of order also works once the baseline chapters are done, since later chapters are written to be returned to individually whenever a specific defect shows up on a specific afternoon.
The checklist below summarizes what each major section of the book is building toward, as a quick orientation before diving into the chapters themselves.
What the book builds toward, section by section
- Understanding how slicing and Klipper motion scheduling turn a model into physical movement
- A printer profile and filament profile built from scratch, not copied
- A verified baseline print used as a fixed point of comparison
- Measured values for flow ratio, pressure advance, retraction, and input shaping, specific to your printer
- A reliable way to read common defects back to their likely cause
- Design choices for walls, infill, and supports matched to a part's purpose
- Reusable Klipper macros for consistent, repeatable testing
- A fixed troubleshooting routine that works on future, unfamiliar defects
What you need before starting
The method in this book assumes a few pieces of hardware and software are already in place, since none of the following chapters start from zero on the hardware side. A working Klipper-based 3D printer is the central requirement, meaning the mainboard runs Klipper rather than stock firmware, and the printer can already complete a basic print from a known-good file. If the printer cannot yet complete any print reliably, that is a mechanical setup question that falls outside calibration and settings tuning, and it needs to be resolved first through the printer's own assembly documentation.
Orca Slicer needs to be installed and able to connect to, or at least export G-code compatible with, the Klipper-based printer being used. The book does not depend on any particular printer brand or size, since the settings discussed (flow ratio, pressure advance, retraction, input shaping) exist in some form on essentially every Klipper machine. What differs between printers is the specific numeric values that come out of testing, not the existence of the settings themselves or the method used to find them.
An accelerometer, or an equivalent resonance-measurement tool supported by Klipper, is needed specifically for the input shaping chapter. Not every printer ships with one built in, so this may be the one piece of hardware that needs separate purchase or borrowing before that particular chapter can be followed hands-on. Every other chapter in the book can be followed with nothing beyond the printer and slicer already mentioned.
A basic set of measuring tools makes several tests far easier to run accurately. A digital caliper is useful for measuring filament diameter and for checking the dimensions of test prints such as flow ratio calibration cubes. A kitchen scale, while not strictly required, helps with some filament and extrusion measurements described in later chapters. Neither tool needs to be expensive or precise to a high number of decimal places, since the tests in this book are designed to tolerate ordinary measurement variation.
Filament choice matters more than it might seem at first. Running every test in this book on the same spool, ideally a filament type that is behaving predictably and has not been exposed to much humidity, keeps results comparable across chapters. Switching filament brands or types partway through the calibration sequence effectively restarts the process, since flow ratio, temperature, and retraction values are all somewhat specific to the filament being used. Keeping one spool consistent from the baseline print through to the troubleshooting routine chapter avoids a lot of confusion later.
Time is a resource worth planning for honestly. The book's description promises calibration from scratch in a single afternoon, and that is achievable for the core sequence of flow ratio, temperature, pressure advance, and basic retraction tuning. Input shaping, because it depends on accelerometer setup and a separate measurement process, is reasonably treated as a second session rather than squeezed into the same afternoon. Spreading the work across two sessions rather than rushing through it in one sitting tends to produce more trustworthy results.
A notebook, spreadsheet, or simple text file for recording test results turns out to matter more than most new printer owners expect. Calibration tests produce numbers and observations that are easy to forget within a day, especially when several tests are run back to back. The chapter on Klipper macros later shows how to make this recording process more structured, but even an informal running log kept from the very first baseline print pays off once later chapters start referring back to earlier measurements.
None of these requirements demand expensive equipment or advanced skill. A caliper and a kitchen scale are common household items for many hobbyists already, and an accelerometer board compatible with Klipper tends to be an inexpensive addition compared to the printer itself. The investment this book actually asks for is attention and patience across a focused afternoon or two, not a shopping list of new purchases.
One more preparation step deserves mention before moving into the first chapter: lowering expectations about the number of test prints involved. Proper calibration from scratch involves printing several small test pieces, not one single perfect print on the first attempt. Each test piece typically uses only a small amount of filament and a short print time, so the material and time cost of doing this properly is much smaller than it might sound. Expecting several short prints rather than one long one keeps the process from feeling wasteful or discouraging partway through.
With the hardware, software, and mindset in place, the next chapter turns to the first link in the chain: how a 3D model actually becomes the stream of G-code commands that Klipper will later schedule into physical motion. Everything that happens afterward, from flow ratio to pressure advance to the shape of a corner on a finished part, begins there.
Chapter 1: From Model to Motion
Every print failure begins before the first layer: the moment a slicer converts triangles into numbered instructions, decisions are already locked in, and most users never open the file to look. A 3D model sitting in Orca Slicer is just a mesh of surfaces with no notion of time, speed, or material. Somewhere between that mesh and the nozzle moving across the bed, a translation happens. That translation is what this chapter unpacks, because almost every defect discussed later in this book traces back to a choice made during this translation, long before the printer ever moves.
Treat the process as three linked stages. First, the slicer takes the model and your settings and produces a plan: where the walls go, how infill fills the inside, where supports are needed. Second, that plan gets written out as a text file of commands, the G-code, which is a sequence of simple instructions a machine can follow one line at a time. Third, Klipper, the firmware running the printer's motion system, reads that file and turns each line into actual movement of motors, the heater, and the extruder. Each stage can introduce a different kind of problem, so knowing which stage you are looking at saves enormous diagnostic time.
It helps to think of this like a recipe being adapted three times over. A chef writes a recipe in general terms (the model). An editor rewrites it as a strict step-by-step list with exact quantities and timings (the G-code). A line cook then executes that list, timing each action against the oven, the other dishes, and the limits of their own hands (Klipper's scheduling). If the final dish tastes wrong, you need to know whether the recipe was vague, the rewrite was sloppy, or the cook mistimed something. The same logic applies to a failed print.
This chapter stays narrowly focused on that translation chain. Calibration values like flow ratio, pressure advance, and retraction distance get their own chapters later, because they are settings you tune once you already understand what the slicer and Klipper are doing with your instructions. Here, the goal is to see the pipeline itself clearly: what slicing actually produces, how to read a line of G-code without fear, and how Klipper decides when and how fast to execute that line. Once that chain is visible, every later chapter about tuning a specific setting becomes much easier to place.
What slicing actually produces
Slicing is named for what it literally does: it cuts a solid 3D model into a stack of flat horizontal layers, each one as thin as the printer's configured layer height. For every layer, the slicer looks at the cross-section of the model at that height and decides how to fill it with toolpaths, the paths the nozzle will trace to deposit plastic. This is the slicing pipeline in its simplest form, and it runs independently for each layer from the bottom of the model to the top. A tall vase and a short cube go through the exact same process, just with different numbers of layers to work through.
Within each layer, Orca Slicer separates the cross-section into distinct feature types, and documentation for the software describes these slicing stages explicitly, covering geometry features such as perimeters, infill, and support material as separate categories the slicer handles in turn[1]. Perimeters are the outer and inner walls that trace the shape's boundary, usually printed first for each layer since they define visible surfaces. Infill fills the remaining interior space according to a pattern and density, giving the part internal structure without using solid plastic throughout. Support material is added where the model overhangs empty space, creating temporary scaffolding so molten plastic has something to sit on.
Each of these feature types gets its own settings in Orca Slicer, which is why wall count, infill density, and support type are chosen independently of one another even though they interact physically inside the finished part (a topic developed fully in the chapter on walls, infill, and supports). During slicing, these settings combine with the model's geometry to produce a toolpath plan unique to that specific print. Two identical models sliced with different wall counts will produce completely different toolpaths, even though the outer shape of the finished object may look nearly the same from across a room.
Speed and timing decisions also get made at this stage, even though they feel like printer behavior rather than slicer behavior. The slicer assigns a target speed to each type of toolpath (walls often move slower than infill, for example, because visible surfaces benefit from more careful motion). It also decides where to start and stop extrusion for each path, which is the seed of retraction behavior discussed later. None of these decisions involve the actual printer yet. They exist purely as numbers written into a plan, waiting to be exported.
A simple way to picture this stage is through a cross-section example. Imagine a plain cylinder with a set number of walls and a moderate infill percentage. At the first layer, the slicer draws concentric circles for the walls, then fills the inner circle with whatever zigzag or grid pattern the infill setting specifies, stopping at the configured coverage. At a later layer, near the top, it does the same calculation again, layer by layer, with no memory of what happened at layer 1 beyond the geometry inherited from the model. This repetition, done hundreds or thousands of times, is the entire slicing pipeline in practice.
Where slicing commonly goes wrong is not in some exotic corner case but in a mismatch between settings and geometry. A thin vertical spike with only one wall and no infill might slice into a toolpath so fragile the nozzle has almost nothing solid to build on as it climbs. A model with large flat overhangs but supports disabled will slice into toolpaths that try to print plastic in mid-air, which obviously cannot work as drawn. These are not Klipper problems and not calibration problems. They are slicing-stage mismatches, and they are worth ruling out first whenever a defect appears in a strange, geometry-specific location rather than uniformly across a print.
Once every layer has been processed this way, the slicer has a complete internal plan covering the whole model from base to top. That plan is still just data inside Orca Slicer at this point. It becomes useful to a printer only once it is written out as G-code, which is the next stage in the chain and the subject of the following section.
Reading G-code line by line
G-code is the plain-text output of the slicing pipeline, and Orca Slicer treats exporting it as the final step of slicing a model[1]. It is readable with any basic text editor, which is one of its most useful traits for troubleshooting. Opening a sliced file and scrolling through it can feel intimidating at first, since a single print can contain many thousands of lines, but the vocabulary used is small and repetitive. Learning to recognize a handful of command types unlocks most of what matters in the file, and none of it requires programming experience.
Each line in a G-code file is usually one instruction, built from a letter and a number, followed by optional parameters. The letter identifies the command family: G commands handle motion and general setup, M commands handle machine functions like heating or fan speed, and parameters like X, Y, Z, E, and F specify coordinates, extrusion amount, and feed rate (speed). A line like G1 X100 Y50 E2.4 F1200 tells the printer to move in a straight line to position X=100, Y=50, pushing 2.4 millimeters of filament through the extruder, at a feed rate of 1200 units per minute.
The table below lists a few of the most common commands you will see in nearly every sliced file, along with what each one controls.
| Command | Function | Typical appearance |
|---|---|---|
| G0 | Rapid, non-printing move | G0 X10 Y10 |
| G1 | Linear move, often while extruding | G1 X50 Y50 E1.2 F1500 |
| G28 | Home one or more axes | G28 X Y Z |
| M104 / M109 | Set or set-and-wait hotend temperature | M109 S210 |
| M140 / M190 | Set or set-and-wait bed temperature | M190 S60 |
| M106 / M107 | Turn cooling fan on or off | M106 S255 |
Beyond individual move commands, a sliced G-code file carries a predictable overall structure. It opens with a start sequence that homes the axes, heats the bed and nozzle, and often runs a priming routine to get filament flowing cleanly. The middle section, by far the largest part of the file, is the layer-by-layer printing itself, often marked with comments like ;LAYER_CHANGE and ;Z:2.4 that make it possible to jump to a specific height while reading the file. The file closes with an end sequence that retracts filament, turns off heaters, and moves the toolhead to a resting position. Klipper's documentation notes that start and end sequences like these are commonly implemented through Klipper macros rather than fixed text, letting the same slicer output adapt to different printer configurations[2].
Comments are another feature worth recognizing, since they make a raw G-code file far less mysterious. Any line beginning with a semicolon is ignored by the printer entirely and exists only for human readers. Orca Slicer inserts comments liberally, marking layer changes, feature types (such as ;TYPE:Outer wall or ;TYPE:Sparse infill), and sometimes even the settings used for that section. Searching a file for these comments is often the fastest way to find exactly where a defect started, since you can jump straight to the layer in question and read the actual commands the printer executed there.
A practical diagnostic habit worth building early is opening the sliced file for a failed print and searching around the height where the defect appeared. If a blob shows up at a specific height, scroll to the comment marking that layer and read the surrounding lines. Does the extrusion amount in the E parameter look consistent with neighboring lines, or does it spike? Does the feed rate change abruptly at a corner? This kind of direct inspection turns a vague visual symptom into a specific, checkable detail, and it costs nothing beyond opening a text file.
It is useful to preview this inspection as a short routine you can repeat on any failed print, shown in the steps below.
Inspecting G-code around a defect
- Locate the layer - Measure the approximate height of the defect on the physical print and convert it to a layer number using the layer height.
- Search the file - Open the sliced G-code file in a text editor and search for the matching ;Z: height comment that follows each ;LAYER_CHANGE marker.
- Read surrounding lines - Scan the G1 commands just before and after that point for unusual jumps in the E or F values.
- Compare to neighboring layers - Check whether nearby layers show the same pattern or whether the anomaly is isolated to one spot.
- Note the feature type - Check the ;TYPE comment to see whether the defect sits in a wall, infill, or support region, which narrows down likely causes.
None of this requires editing the file by hand, though experienced users sometimes do exactly that to test a theory before reslicing. For most readers, reading G-code is a diagnostic skill rather than an editing one: it lets you confirm or rule out whether a problem originated in the slicer's plan before assuming it must be a Klipper or hardware issue. With that reading skill in hand, the next question is what the printer does with these lines once they arrive, which is where Klipper's role begins.
How Klipper interprets and schedules moves
Klipper is the firmware layer that receives the sliced G-code file and turns its line-by-line instructions into coordinated motion of stepper motors, the hotend, and the fans. Klipper's own documentation describes this relationship directly, noting that G-code is sent from a slicer and that Klipper interprets the subset of commands it supports, while leaving printer-specific actions like start and end sequences to be defined as macros rather than hardcoded text[2]. This separation matters practically: the same sliced file can behave slightly differently on two printers if their macros define the start and end sequences differently, even though the printing portion of the file is identical.
Unlike a simple instruction-follower that executes one line, waits for it to finish, then starts the next, Klipper works from something closer to a planned itinerary. It reads ahead through a batch of upcoming move commands before executing any of them, building what is often called a move queue. This lookahead lets Klipper calculate smooth transitions between consecutive moves rather than jerking to a stop after each one, which is essential for print quality. A sharp 90-degree turn in the toolpath, for instance, benefits from knowing in advance that it is coming, so the firmware can plan deceleration and acceleration around it rather than reacting line by line.
This lookahead and scheduling process is Klipper's version of the line cook timing multiple dishes at once rather than finishing one task completely before glancing at the next ticket. Klipper converts each queued move into a precise sequence of stepper motor pulses, calculated well ahead of when those pulses actually need to fire, and timed against the real clock running inside the printer's control board. This is fundamentally different from older firmware designs that calculated motor timing in real time on much less capable hardware. Klipper instead does the heavy calculation in advance, often on a more capable computer attached to the printer, and sends the finished, precisely timed instructions down to the simpler board that drives the motors.
Acceleration and velocity limits set in Klipper's own configuration directly shape how this scheduling plays out, independent of whatever speeds the slicer requested. If Orca Slicer's G-code asks for a feed rate that exceeds what Klipper's configured maximum velocity or acceleration allows, Klipper does not simply fail; it caps the move to what the machine's physical limits permit. This is one reason the same sliced file can produce visibly different results on different printers: the G-code requests a plan, but Klipper's scheduling decides what is actually achievable given the specific machine's configured limits.
Pressure advance, covered fully in its own chapter, is a concrete example of a feature that lives entirely inside this scheduling layer rather than in the G-code file itself. Unless the filament profile is set to send a pressure advance value at the start of the print, the sliced file never mentions pressure advance; it simply contains extrusion and movement commands as usual. Klipper applies its own compensation on top of those commands during scheduling, adjusting extruder timing around accelerations and decelerations based on a value you configure separately. This is a good illustration of the general principle that not every printer behavior originates in the slicer. Some behaviors are entirely the product of how Klipper schedules and interprets commands that the slicer never customized for that purpose.
Input shaping, discussed later in the chapter on resonance and ringing, works similarly: it is a scheduling-layer feature that modifies how Klipper times motor movements to reduce vibration-induced artifacts, without any change to the G-code file being sliced. Recognizing this pattern early saves confusion later. When a defect seems tied to acceleration, cornering, or vibration rather than to the shape of a specific toolpath, the cause is more likely to sit in Klipper's scheduling and configuration than in anything Orca Slicer wrote into the file.
A useful mental checkpoint, when facing an unfamiliar defect, is asking which of the three stages plausibly owns it. If the defect follows the geometry of the model closely, such as sagging only on steep overhangs or weakness only where wall count is low, the slicing stage is the natural suspect. If the defect correlates with a specific value visible directly in the G-code file, such as an unusually large retraction distance or a feed rate spike, the G-code itself is worth inspecting closely. If the defect shows up as ringing after sharp direction changes, uneven corner shapes, or timing-sensitive blobbing, Klipper's scheduling and its related calibration settings are the more likely owner.
This three-stage view does not replace the deeper diagnostic routine built later in this book, which walks through variable isolation and repeatable testing in full. What it offers instead is a map for where to start looking. Before changing a single calibration number, it is worth asking whether the problem could instead be a slicing choice (wrong wall count for the geometry), a G-code quirk (a strange value worth inspecting directly), or a Klipper scheduling behavior (something tied to acceleration, cornering, or timing). Framing a failed print this way, as a question about which stage of the pipeline is responsible, turns a frustrating guessing game into a much shorter, more targeted search.
Chapter 2: Setting Up Orca Slicer and Klipper
Copying someone else's profile is the 3D-printing equivalent of borrowing a prescription: it might work, but you have no idea why, and when it fails, you have nowhere to start. A profile downloaded from a forum was tuned on a different nozzle, a different hotend, and possibly a different spool of filament than the one sitting on the spool holder right now. It might print a decent first layer. It might also leave you chasing a stringing problem for a week, never realizing the retraction settings were calibrated for someone else's Bowden tube length. Building a profile from scratch in Orca Slicer is not about reinventing every number from theory. It is about measuring the handful of values that are specific to a machine and keeping everything else as a reasonable starting point.
This chapter walks through the two profiles Orca Slicer needs before any print can be trusted: the printer profile and the filament profile. Each one controls a different part of the pipeline that turns a model into toolpaths and G-code, a process covered in the chapter on the slicing pipeline. The printer profile tells the slicer what the machine physically looks like and how it moves. The filament profile tells the slicer how a specific material behaves when it melts and cools. Mixing up what belongs in which profile is one of the most common sources of confusion for owners who have only ever edited a copied setup without understanding its structure.
The goal by the end of this chapter is a baseline print, a single test object that comes out clean enough to serve as a reference point for every calibration test that follows in later chapters. That baseline is not the finish line. It is the starting line. Nozzle temperature, flow ratio, pressure advance, and retraction all still need tuning, and those get their own chapters. What matters here is building the two profiles honestly, from measurements taken on the actual machine, so that every later test is adjusting real values instead of guessing at numbers inherited from someone else's printer.
Think of it like calibrating a kitchen scale before following a recipe that depends on exact gram measurements. Skipping that step does not always ruin the dish, but it removes any ability to explain why a result turned out wrong. A printer profile and filament profile built from scratch give a known reference. Every defect diagnosed later in this book, from under-extrusion to warping, starts from the assumption that the baseline settings were earned, not borrowed.
Building a printer profile from scratch
A printer profile in Orca Slicer describes the physical shape and motion limits of the machine itself. This includes the bed size and shape, the nozzle diameter, the maximum travel speed and acceleration, the number of extruders, and whether the machine uses a direct drive or Bowden extruder. None of these values depend on what filament is loaded. They depend only on the hardware sitting on the desk. Starting a new profile instead of editing a downloaded one forces a careful look at each field, which is exactly the point: nothing gets copied without being checked.
Begin in Orca Slicer by creating a new printer profile rather than editing a downloaded one. Even if the printer is a common Klipper-based model with a preset available, start the new profile from a close preset and then verify every value by hand instead of trusting it. Work through these fields in order:
- Bed shape and size: measure the actual printable area, not the marketing dimension on the box, since frame clearance often shrinks it slightly.
- Nozzle diameter: check the physical nozzle installed, since a swapped 0.6 mm nozzle on a profile still set to 0.4 mm will throw off every extrusion calculation downstream.
- Z height limit: set this to the real travel distance of the Z axis, confirmed by watching the printer home and reading the position reported by Klipper.
- Extruder type: direct drive and Bowden setups behave very differently under retraction, so this single setting changes expectations for a later chapter.
- Machine limits (speed and acceleration): these should match the values already configured in the printer's Klipper configuration file, not a generic default.
The machine limits deserve particular attention because they are the one place where the printer profile and Klipper configuration must agree. Klipper's own configuration file sets hard limits on acceleration and velocity for the hardware, covered in the chapter on how Klipper schedules motion. If the Orca Slicer printer profile allows speeds higher than what Klipper is configured to accept, the slicer will generate G-code that asks for motion the firmware simply will not deliver, and the mismatch can produce anything from silently clamped speeds to unexpected print behavior. Open the Klipper configuration file (commonly named printer.cfg) and copy the max_velocity and max_accel values from the [printer] section into the matching fields in the Orca Slicer printer profile.
Start G-code and end G-code also live inside the printer profile, and this is a field that gets pasted in from old setups more often than almost any other. A start G-code snippet copied from an unrelated printer might reference a bed mesh command that this machine's Klipper configuration does not support, or it might home axes in an order that conflicts with the frame design. Build this field deliberately: include homing, a bed mesh call if the configuration defines one, nozzle and bed temperature waits, and a simple purge line near the edge of the bed. Keep it minimal at first. Extra lines copied from someone else's macro collection can silently depend on Klipper macros that do not exist on this machine, which will halt a print with an error that looks unrelated to the actual cause.
One frequent mistake is leaving the default retraction values from a generic preset untouched inside the printer profile, assuming they will get fixed later in the filament profile. Orca Slicer actually allows retraction settings in both the printer profile and the filament profile, with the filament-level setting typically overriding the printer-level one. Leaving stale numbers in the printer profile is harmless as long as the filament profile override is confirmed to be active, but it becomes a source of confusion later if the two disagree and the wrong one turns out to be controlling the print. Decide early on which level will govern retraction for this setup and stay consistent.
Another detail worth checking by hand is the nozzle's maximum temperature and bed's maximum temperature fields, which exist to protect the printer from accidentally being told to heat past what the hardware tolerates. Set these to match the actual hardware limits of the installed hotend and heated bed, not the defaults carried over from a generic preset that might assume a hotend with a higher temperature ceiling. This becomes directly relevant in the chapter on temperature tuning, where a temperature tower test will fail outright if the profile's ceiling is set too low to reach the range needed for testing.
A printer profile answers one question only: what can this specific machine physically do? Every field in it should trace back to something measured or read directly off the hardware and its Klipper configuration, never assumed from a template.
Save the profile under a name that identifies the machine clearly, not a generic label like "My Printer." If the setup changes later, such as a nozzle swap or an upgraded extruder, that profile name should make it obvious which hardware configuration it describes. This matters more than it sounds. Owners who manage more than one printer, or who experiment with hardware upgrades over time, often end up with several printer profiles in Orca Slicer, and a vague name turns a five-second profile selection into a guessing game before every print.
Once the fields above are filled in and saved, the printer profile is functionally complete, though it will likely need small revisions as later calibration tests reveal mismatches. A rotation distance correction from the chapter on flow ratio, for instance, lives in the Klipper configuration rather than the Orca Slicer printer profile, but it affects how accurately the printer profile's assumptions about extrusion translate into real plastic on the bed. Treat the printer profile as a living document for the life of the machine, not a one-time setup task to finish and forget.
A practical check before moving on: open the finished printer profile and read through every tab as if auditing someone else's work. Ask for each field whether it was measured, read from the Klipper configuration, or still carries a default value nobody verified. Any field in that last category is a risk waiting to surface during a later calibration test, when a confusing result turns out to trace back to an unverified printer profile field rather than the setting actually being tested.
The checklist below captures the fields most often missed when converting a downloaded or default profile into a trustworthy, verified one.
Printer profile fields to verify by hand
- Bed shape and printable area measured directly, not taken from spec sheet
- Installed nozzle diameter confirmed physically
- Z height limit confirmed against actual travel distance
- Extruder type (direct drive or Bowden) matches the hardware
- Machine max_velocity and max_accel copied from the Klipper configuration file
- Start G-code tested line by line with no unexplained macro calls
- Nozzle and bed maximum temperature fields match real hardware limits
- Profile saved under a name that identifies the exact hardware setup
Filament profiles and what they control
Where the printer profile describes hardware, the filament profile describes material behavior. It holds the values that change depending on what spool is currently loaded, regardless of which printer it ends up on. This includes the nozzle temperature range for that material, the bed temperature, cooling fan settings, retraction distance and speed (when overriding the printer profile), and the flow ratio that scales how much plastic the extruder pushes out per unit of commanded motion. Two spools of the same filament type from different manufacturers, or even different batches from the same manufacturer, can need slightly different values here, which is exactly why this profile should never be assumed identical to one built for a different spool.
Start a new filament profile the same way as the printer profile: from a close built-in preset matching the general material type (a PLA preset for a PLA spool, for instance), then edit every field with intent rather than trusting the defaults. The temperature range field deserves special attention because it sets the boundaries that the temperature tower test in the next chapter will actually print within. If the range is set too narrow, the test will not explore enough of the material's real working window; too wide, and time gets wasted testing temperatures the filament clearly cannot tolerate, such as degrading well before the lower bound or stringing badly well before the upper one.
Flow ratio lives inside the filament profile because it is fundamentally a material property combined with a specific nozzle and hotend combination, not a printer-wide constant. It scales the volume of plastic the slicer commands the extruder to push for a given toolpath, correcting for small inaccuracies in how the filament's actual diameter and density match what the slicer assumes. Orca Slicer's calibration guide includes a dedicated flow ratio test alongside separate tests for temperature, maximum volumetric speed, pressure advance, and retraction, each targeting a different part of the extrusion pipeline[1]. That test is covered in depth in the chapter on temperature and flow ratio tuning. For now, leave flow ratio at its default value of 1.0 inside the new filament profile and plan to revisit it once the baseline print below is complete.
Cooling fan settings inside the filament profile often get overlooked because they feel secondary compared to temperature, but they shape surface quality and bridging performance directly. A material like PLA generally benefits from aggressive cooling after the first few layers, while a more heat-sensitive engineering filament might need cooling kept low to avoid layer adhesion problems. Set the fan speed curve to match the general guidance for the material family loaded, then treat it as something to revisit once visual defects start showing up in later test prints, particularly the kind of warping and layer-adhesion issues discussed in the chapter on reading common print defects.
Retraction distance and speed can be set at the filament profile level to override whatever was left in the printer profile, and for most owners this is the more sensible place to manage them. Filament behaves differently under retraction depending on its stiffness and how much it oozes when molten, so tying retraction to the filament rather than the printer profile keeps the values attached to the material they were actually tuned for. Leave these at the preset's starting values for now. The dedicated retraction chapter covers the test procedure for tuning them precisely, and running that test before a baseline print exists would make it harder to judge whether a result came from retraction or from some other uncontrolled variable.
A subtlety worth flagging here: Orca Slicer separates flow ratio, which lives in the filament profile, from the Klipper-side extruder rotation_distance setting, which lives in the printer's Klipper configuration file rather than in any Orca Slicer profile at all. The two interact but are not the same thing. Rotation distance corrects for how far filament actually moves per motor step, a hardware-level calibration that should, in principle, stay constant across different filaments on the same extruder. Flow ratio then fine-tunes on top of that for a specific material's quirks. Confusing the two is a common trap for owners used to single-value "extrusion multiplier" settings from other slicers, and it gets its own full treatment in the next chapter.
If the printer profile answers what the machine can do, the filament profile answers how this particular material behaves when pushed through it. Keep those two questions separate, and troubleshooting becomes far easier later.
Naming matters here just as much as it did for the printer profile. A filament profile named only after the generic material type, like "PLA," becomes useless the moment a second PLA spool from a different brand enters rotation. Name the profile with enough detail to distinguish it: the brand, the color if it matters for the application, and ideally a note about which spool or batch it came from if testing reveals batch-to-batch variation. This habit pays off directly in the troubleshooting routine covered later in the book, where recognizing that a defect started only after switching spools can save hours of chasing the wrong setting.
A common failure pattern worth naming directly: an owner downloads a filament profile matched to the exact brand and color printed with, assumes it must be correct since it matches so specifically, and never notices that the profile was built on a different hotend with a different thermistor, leading to a temperature offset that is impossible to see without an independent temperature check. The brand match felt reassuring, but it said nothing about the actual hardware the profile was tuned on. A profile built from scratch and measured on the real setup, even if it takes longer at the start, removes this entire category of silent mismatch.
Before moving to the baseline print, do a final pass over the new filament profile and confirm that every number traces back to either a manufacturer's starting recommendation (for temperature range and bed temperature) or a deliberate decision to leave something at default pending a later calibration test (for flow ratio and retraction). Nothing in the profile should be a mystery value nobody can explain. That discipline is what separates an owned profile from a copied one, even when some of the starting numbers happen to match what a downloaded profile would have contained.
The table below summarizes which values belong in which profile, a distinction that will keep coming up through the rest of the book as each chapter tunes a different setting.
| Setting | Printer profile | Filament profile |
|---|---|---|
| Bed size and shape | Yes | No |
| Nozzle diameter | Yes | No |
| Max velocity and acceleration | Yes (matched to Klipper config) | No |
| Nozzle temperature range | No | Yes |
| Bed temperature | No | Yes |
| Flow ratio | No | Yes |
| Retraction distance and speed | Possible, but often overridden | Yes (recommended) |
| Cooling fan curve | No | Yes |
Establishing a known-good baseline print
With both profiles built and saved, the next step is printing a single, simple test object and judging it honestly. This is the baseline print, and its purpose is narrow: confirm that the printer profile and filament profile, as currently configured, produce a print clean enough to serve as a reference for the calibration tests that follow in later chapters. It is not meant to be perfect. Flow ratio, pressure advance, and retraction have not been tuned yet, so some imperfection is expected and even useful, since it gives a visible starting point to compare against once those settings are dialed in.
Use a small, simple geometry for this print rather than anything with fine detail or overhangs. A small calibration cube is a standard choice, since it has flat vertical walls, sharp corners, and a flat top, all of which make defects easy to spot. Avoid anything with bridging, steep overhangs, or small text, since those features introduce variables that belong to later chapters (support configuration, cooling tuning) rather than to this basic sanity check. Slice the cube using the new printer profile and filament profile, with default settings for wall count, infill, and layer height, since those are design choices covered in a later chapter and should not be tuned yet.
Before starting the print, run through the steps below in order. Skipping any of them risks attributing a defect to the wrong cause, which defeats the purpose of building a clean baseline.
Baseline print procedure
- Confirm bed leveling - Run the printer's bed leveling or mesh procedure fresh, since an old mesh from a previous nozzle or bed surface can mimic unrelated extrusion problems.
- Load and dry the filament - Use a spool that has been stored properly and is not visibly damp, since filament moisture can introduce defects unrelated to the profile itself.
- Slice with default design settings - Keep wall count, infill density, and layer height at reasonable defaults so the print tests the profiles, not a design choice.
- Watch the first layer closely - A clean, evenly adhered first layer with no gaps or dragging confirms bed temperature, first-layer height, and basic leveling are reasonable.
- Let the print finish completely - Resist the urge to judge quality mid-print, since corner quality and top-layer finish only become visible once the object is done.
- Inspect walls, corners, and the top surface - Check for consistent layer lines, no visible gaps, no excessive bulging at corners, and a mostly solid top surface.
Once the print finishes, inspect it under good lighting and compare it against what a clean baseline should look like versus the two most common deviations: over-extrusion and under-extrusion. The illustration below shows what to look for.

A cube showing bulging corners or slightly rough vertical walls, with no gaps, generally points toward over-extrusion, which the flow ratio test in the next chapter will address directly. A cube showing thin gaps between layer lines, or a top surface that does not fully close over, points toward under-extrusion, a defect with several possible causes covered in the chapter on reading common print defects. Neither of these outcomes means the profiles are wrong. They mean flow ratio has not been tuned yet, which is expected at this stage. What would actually indicate a profile mistake is something more severe: a print that fails to adhere to the bed at all, layers that visibly shift mid-print, or extrusion that stops entirely partway through. Those point back to a printer profile error, such as a mismatched nozzle diameter or an unverified Z height limit.
If the baseline print shows one of those more severe failures, work backward through the printer profile fields checked earlier rather than jumping straight into the calibration tests of later chapters. A layer shift on a baseline print with default acceleration settings, for instance, often traces back to a mismatch between the printer profile's machine limits and the actual Klipper configuration, exactly the kind of mismatch the earlier verification step was meant to catch. Diagnosing layer shifts in more depth, including mechanical causes unrelated to the profile, belongs to the chapter on reading common print defects, but a baseline print is the first and cheapest place to catch an obvious profile error before investing time in further calibration.
It helps to keep a simple written record of this first baseline print rather than relying on memory. Note the date, the filament spool used, the printer profile name, and a short description of what the cube looked like, including any visible over- or under-extrusion. This record becomes the first entry in the kind of structured log that the chapter on Klipper macros and logging results builds into a habit, and it gives a concrete point of comparison once flow ratio, pressure advance, and retraction are tuned in later chapters. Without that record, it becomes easy to forget just how rough the very first print looked, which makes it harder to appreciate how much later tuning actually changes.
A baseline print is not a pass-or-fail test. It is a snapshot, honestly recorded, of what two from-scratch profiles produce before any fine-tuning begins.
One more check worth doing on the same baseline cube: measure its actual dimensions with calipers against the dimensions it was sliced at. A small, consistent oversizing or undersizing across all three axes, more than a fraction of a millimeter on a cube this size, is a useful early signal that flow ratio or rotation distance will need real correction in the next chapter, rather than just a cosmetic tweak. A cube that measures very close to its sliced dimensions, even with some surface roughness, suggests the extrusion volume is already reasonably close to correct and that remaining defects are more about fine-tuning than fundamental miscalibration.
Resist the temptation to start adjusting flow ratio or temperature immediately based on this first cube. The next chapter builds a dedicated, controlled test specifically for that purpose, and changing settings based on a single uncontrolled print risks chasing noise rather than a real pattern. The entire value of a baseline print comes from treating it as a fixed reference point, recorded and left alone, while the real tuning work happens through the structured tests that follow.
Key takeaway: What the baseline print actually proves
A usable baseline print confirms that the printer profile's hardware description and the filament profile's material settings are both roughly correct, before any fine-tuning begins. Mild over- or under-extrusion is expected and gets corrected through flow ratio tuning next. Severe failures (poor adhesion, layer shifts, stopped extrusion) point back to an unverified field in the printer profile, not forward to calibration.
With a baseline print in hand and recorded, both profiles stop being untested guesses and become a real, owned reference. Every test in the chapters ahead, from the temperature tower to the pressure advance calibration, will change one of these values deliberately and compare the result back against this same cube. That comparison only means something because the starting point was measured, not copied.
Chapter 3: Temperature and Flow Ratio
Flow ratio is the single multiplier that scales every extrusion move in a print. Get it wrong by a meaningful percentage and every wall, every layer, every dimension is off by that same proportion. It does not announce itself the way a tangled string or a shifted layer does. Instead it hides inside walls that measure slightly thin, top layers with visible gaps, or parts that feel subtly weaker than they should. Because the error is spread evenly across the whole model, it is easy to blame the wrong thing, like infill density or wall count, when the actual cause is a single multiplier set incorrectly months ago and never checked again.
Nozzle temperature and flow ratio both control how much plastic ends up where it belongs, but they act through different mechanisms. Temperature changes how the filament behaves as it melts and flows through the nozzle. Flow ratio changes how much the slicer tells the extruder to push, regardless of temperature. Treating them as one setting is a common mistake. A print that looks under-extruded might need a hotter nozzle, a higher flow ratio, or a corrected extruder rotation_distance, and each of those fixes a different part of the problem.
This chapter also introduces extruder rotation_distance, a Klipper-level setting that sits upstream of everything the slicer calculates. If the extruder does not move the amount of filament it thinks it moves, no flow ratio adjustment in Orca Slicer can fully compensate, because the error changes with extrusion rate and filament grip rather than staying constant. Getting rotation_distance right first, then tuning flow ratio in the slicer, keeps the two settings from fighting each other.
The order followed in this chapter matters for a reason that will come back in pressure advance calibration: Klipper's own documentation on pressure advance recommends setting rotation_distance and nozzle temperature before tuning pressure advance, because both extrusion rate and temperature can affect how pressure advance behaves[1]. Nozzle temperature, flow ratio, and rotation_distance form the foundation that every later calibration step builds on. Skipping them, or doing them out of order, means chasing problems in the wrong place later.
The three sections ahead move through this foundation in a practical order: finding a nozzle temperature that produces clean, strong layers, tuning flow ratio so the printer deposits exactly the amount of plastic the model calls for, and verifying that the extruder itself moves filament accurately before any of those slicer numbers are trusted.
Finding the right nozzle temperature
Nozzle temperature controls how well melted filament bonds to the layer beneath it, how easily it strings between features, and how smooth or rough the surface of a finished part looks. Too cold, and each new layer barely fuses to the one before it, leaving a part that looks fine but pulls apart with surprisingly little force. Too hot, and the plastic becomes runny: it oozes between retractions, sags on overhangs, and often leaves a glossy, slightly bulging surface. The correct temperature for a given filament is not a single universal number. It depends on the specific spool, the hotend's thermal design, and even the color and additive package used by the manufacturer.
A temperature tower is the standard way to find this value without guessing. Orca Slicer can generate a single tall print made of stacked segments, each one printed a few degrees cooler or hotter than the one below it, using a built-in temperature change at specific layer heights. Rather than printing a dozen separate test pieces at a dozen temperatures, this produces one object that shows the entire range in a single pass. The physical result becomes a reference you can hold up to the light and compare section by section.
The illustration below shows what a finished tower typically looks like, with texture changing visibly from bottom to top.

Reading a finished tower is a matter of inspecting each band with your eyes and fingers rather than running a measurement. Work from the bottom of the tower, which was printed hottest if the tower cools as it rises, or from the top if it was set up the other way, and check the slicer settings to confirm which direction the temperature moved. Look for these signs in each band:
- Stringing or fine hairs between overhangs or bridges, a sign the segment ran too hot
- A rough, matte surface with visible gaps between the lines of plastic, a sign the segment ran too cold
- Sagging or drooping on any bridge or overhang section built into the tower, also a sign of excess heat
- A clean, slightly satin surface with crisp overhangs and no visible stringing, the band worth choosing
Most towers include a small bridging or overhang test built into each segment specifically so this inspection is possible without extra prints. If the tower design used does not include one, printing a simple bridge test afterward at the two or three candidate temperatures narrows the choice further. The goal is not to find the single coldest temperature that avoids stringing, since running close to the lower edge of acceptable quality leaves little margin if ambient conditions shift. Instead, pick a temperature from the middle of the clean-looking range, giving a buffer against drafts, filament moisture, or a slightly different spool later.
Once a candidate temperature is chosen from the tower, confirm it with a short standalone print rather than trusting the tower segment alone. The tower cools and reheats quickly between temperature changes, which does not always match how the hotend behaves during a longer, steady print. A small single-wall test cube, printed entirely at the chosen temperature, gives a more realistic check of layer bonding and surface finish under normal printing conditions.
It helps to write the chosen temperature down immediately, in the filament profile in Orca Slicer and in a physical notebook or spreadsheet tied to that specific spool. A common mistake is finding a good number through a tower test, then forgetting it was tied to one particular roll of filament. The next spool, even from the same manufacturer and color, can behave differently enough to need a few degrees of adjustment. Treat every new spool as a candidate for a quick retest rather than assuming the old number still applies.
Filament moisture also interacts with this temperature choice in ways that are easy to misdiagnose as a tuning problem. A spool that has absorbed humidity from the air will often string and pop audibly as it prints, even at a temperature that worked perfectly when the spool was fresh. The fix there is drying the filament, not lowering the nozzle temperature further, since a lower temperature on wet filament usually just adds under-extrusion to the moisture problem. This distinction is explored further in the chapter on stringing, where temperature and moisture are separated as two different causes of the same visible symptom.
Different materials carry different temperature ranges and different sensitivity to getting that range wrong. A standard PLA typically tolerates a fairly wide window without dramatic quality loss, which is one reason it is a common starting material. Materials like PETG or nylon tend to have narrower acceptable ranges, and a few degrees of error shows up faster as stringing, warping, or poor layer adhesion. Running a dedicated temperature tower for every new material used, rather than reusing a tower result from a different filament type, saves a surprising amount of troubleshooting time later.
Bed temperature deserves a brief mention here even though the tower focuses on the nozzle. A nozzle temperature that looks correct on paper can still produce poor first layers or warping if the bed temperature is mismatched for the material. This interaction becomes more important in the chapter dealing with warping and bed adhesion, but it is worth keeping in mind while running a temperature tower: a slightly cool bed can make a correctly tuned nozzle temperature look worse than it actually is.
Once a nozzle temperature has been chosen and confirmed, resist the urge to keep adjusting it every time a later print shows a flaw. Temperature is only one input among several covered in this book, and a defect that looks like a temperature problem, such as slight under-extrusion or a rough top surface, often traces back to flow ratio or rotation_distance instead. The next section picks up exactly there, holding temperature fixed and testing how much plastic the printer is actually depositing.
Tuning flow ratio for accurate extrusion
Flow ratio is a multiplier applied by Orca Slicer to every extrusion move calculated for a print. If the slicer calculates that a wall needs a certain volume of plastic deposited along a path, the flow ratio setting scales that volume up or down before it becomes a G-code command. A flow ratio of 1.0 means the slicer's calculated volume is used exactly as computed. A value below 1.0 tells the printer to deposit less plastic than calculated, and a value above 1.0 tells it to deposit more. This single number touches every wall, every top layer, every bit of infill in the entire model, which is why getting it wrong produces a consistent, proportional error across the whole print rather than a localized defect.
The usual symptom of an incorrect flow ratio is subtle rather than dramatic, which is exactly why it gets misdiagnosed so often. A flow ratio set too low produces walls that measure thinner than the slicer intended, top surfaces with small gaps between the lines of plastic even though infill looks fine underneath, and parts that feel slightly weaker than expected without any obvious visual flaw. A flow ratio set too high produces the opposite: walls that bulge outward very slightly, dimensions that measure a touch oversized, and sometimes a rougher, blobbier surface finish as excess plastic gets pushed out along each pass.
The standard way to measure flow ratio accuracy is a single-wall calibration cube, sometimes called a flow ratio test or extrusion multiplier test. Orca Slicer's own built-in flow rate calibration works differently, printing a set of small blocks at different flow values and asking you to pick the one with the smoothest top surface, but the single-wall cube is a common alternative that works with any slicer. It is printed as a thin-walled box with no top, no bottom, and no infill, so the only variable being measured is how accurately the walls themselves are printed. Because the test strips away every other factor, including infill pattern and top layer settings, any thickness error measured on the walls points directly back to flow ratio rather than some other setting interacting with it.
Running a flow ratio calibration test in Orca Slicer
- Slice the calibration object - Load a simple cube model in Orca Slicer, set wall count to a single perimeter, and disable top, bottom, and infill so only the wall thickness is being tested.
- Print at your confirmed temperature - Use the nozzle temperature chosen from the temperature tower test, and keep every other setting at the baseline established earlier, changing only flow ratio between test pieces if printing more than one.
- Measure the wall with calipers - Once the print cools, measure the wall thickness at several points around the object using digital calipers, and average the readings to reduce the effect of any single inconsistent spot.
- Compare to the expected thickness - Compare the measured average to the wall thickness the slicer was set to produce, for example a line width of 0.4 millimeters printed as a single wall.
- Calculate the correction - Divide the expected thickness by the measured thickness, then multiply the current flow ratio by that number to get a corrected value, for example a measured wall of 0.38 millimeters against an expected 0.4 millimeters suggests multiplying the current flow ratio by roughly 1.05.
- Re-test and confirm - Enter the new flow ratio into the filament profile, print the calibration object again, and measure once more to confirm the correction landed close to the expected thickness before moving on.
Working through the calculation by hand makes the logic concrete. Suppose the slicer was set to produce a wall of 0.4 millimeters, matching a 0.4 millimeter nozzle, but calipers measure an average of 0.38 millimeters across the printed object. The correction factor is 0.4/0.38, which works out to approximately 1.053. If the flow ratio was previously set at the default of 1.0, multiplying by this correction factor gives a new flow ratio of roughly 1.05. Entering that value and reprinting the test should bring the measured wall thickness much closer to the intended 0.4 millimeters, though a second measurement pass is worth doing to confirm rather than assume.
It helps to take several measurements around the test object rather than a single reading from one spot. A caliper reading taken right at a corner, where plastic tends to pile up slightly from direction changes, will read differently than one taken along a flat straight section. Averaging four or five measurements taken from different sides and different heights up the wall gives a more honest picture of the typical wall thickness than any single number. If the readings vary a lot from spot to spot, that inconsistency itself is useful information, often pointing toward a mechanical issue like an inconsistent extruder grip rather than a flow ratio problem at all.
A flow ratio correction found on one filament spool does not automatically transfer to a different material, and often does not transfer cleanly even to a different spool of the same material from a different batch. Treat flow ratio as something tied to the filament profile in Orca Slicer, saved and loaded alongside that specific filament rather than the printer profile. A PETG spool and a PLA spool from the same manufacturer can easily need different flow ratio values because they behave differently as they melt and flow through the nozzle, even if the nozzle temperature difference between them has already been accounted for separately.
One mistake worth calling out directly is treating flow ratio as a fix for under-extrusion caused by something else entirely. If a print shows gaps in the top layer, weak walls, or thin features, the instinct is often to raise flow ratio until the symptom disappears. But if the real cause is a partially clogged nozzle, a slipping extruder gear, or an incorrect rotation_distance value, raising flow ratio just compensates for the shortfall without fixing the underlying mechanical issue. The print might look acceptable at an elevated flow ratio, but that masks a problem that will likely reappear, perhaps worse, the next time filament, temperature, or print speed shifts even slightly.
This is exactly why rotation_distance verification, covered next, has to happen alongside flow ratio tuning rather than being skipped as a minor technical detail. A flow ratio correction found without first confirming rotation_distance is accurate is really two unknowns being solved with one number, and the result will not hold up reliably across different print speeds or filament batches. Separating the two lets each one be trusted on its own.
Once a flow ratio value has been confirmed through measurement, it belongs saved into the filament profile, not left as a one-off adjustment remembered only in the current slicer session. Orca Slicer profiles can be exported and reused, and writing the measured value directly into the profile, along with a note about which spool and nozzle it was measured with, keeps that work from being lost the next time the software is updated or a profile gets accidentally reset to a default.
The table below summarizes how flow ratio errors typically show up, to make it easier to recognize the pattern on a finished print rather than re-measuring from scratch every time.
| Symptom | Likely flow ratio direction |
|---|---|
| Walls measure thinner than intended, visible gaps in top layer | Flow ratio too low |
| Walls measure thicker than intended, slight outward bulge | Flow ratio too high |
| Rough, blobby surface with excess plastic along seams | Flow ratio too high |
| Parts feel noticeably weaker than expected despite correct infill | Flow ratio too low |
Keep in mind that this table describes tendencies rather than certainties. A rough, blobby surface can also come from a nozzle temperature set too high, and weak parts can come from poor layer adhesion rather than thin walls. The caliper measurement from the flow ratio test remains the deciding evidence, not the visual impression from across the room. Use the table as a starting hypothesis to test, then confirm or rule it out with an actual measurement before changing any settings.
Measuring extruder rotation distance in Klipper
Extruder rotation_distance is a Klipper configuration value that defines how much filament moves through the extruder for one full rotation of the stepper motor driving it. In effect, it tells Klipper how to translate a commanded extrusion length, coming from the G-code produced by Orca Slicer, into an actual number of motor steps. If this value does not match the real mechanical behavior of the extruder, a discrepancy appears between how much filament the slicer thinks it asked for and how much actually gets pushed through the hotend, no matter how carefully flow ratio was tuned in the previous section.
This is the key reason rotation_distance needs attention before flow ratio is treated as final. Flow ratio is a slicer-side multiplier applied to a calculated volume. Rotation_distance is a printer-side value that determines whether a commanded length of filament actually moves that far. If rotation_distance is off by a consistent percentage, flow ratio tuning in Orca Slicer can mask the symptom by scaling every print to compensate, but that correction is really patching over a mechanical inaccuracy rather than fixing it. Worse, that patched correction may only hold at the print speed and temperature it was tested under, breaking down again when either changes.
Klipper's own documentation describes measuring actual extruder filament movement directly and using that measurement to adjust rotation_distance, rather than relying on a value copied from another printer or calculated purely from stepper and gear specifications[2]. This matters because two extruders built with the same stated gear ratio can still move filament slightly differently in practice, due to small manufacturing tolerances, how tightly the idler tension is set, or wear on the hobbed gear that grips the filament. Measuring the real behavior on the actual machine in front of you removes the guesswork that comes from trusting a number that worked for someone else's printer.
The practical test for rotation_distance follows a simple physical measurement. Heat the hotend to printing temperature so filament can move freely, then mark the filament with a pen or piece of tape at a fixed distance above the extruder's entry point, commonly 70 millimeters, the distance Klipper's own guide uses. Using Klipper's console, command the extruder to feed a shorter length of filament slowly, for example 50 millimeters with G91 followed by G1 E50 F60, then measure the remaining distance from the extruder to the mark and subtract it from the starting distance. If the mark is now 22.5 millimeters from the extruder, the filament actually moved 47.5 millimeters rather than the commanded 50, and that gap reveals the real relationship between commanded motion and actual filament movement.
Measuring and correcting extruder rotation_distance
- Heat the hotend - Bring the nozzle up to printing temperature so filament can move through it without resistance from cold, stiff plastic.
- Mark the filament - With filament loaded, mark a clear reference line on the filament a fixed distance above the extruder entry point, such as 70 millimeters, measured carefully with calipers or a ruler.
- Command a known extrusion length - Using the Klipper console, issue a command to extrude a shorter fixed length slowly, for example 50 millimeters, and let the extruder complete the move.
- Measure the actual distance moved - Measure the new distance from the extruder entry point to the mark and subtract it from the starting distance, which gives how far the filament actually traveled rather than how far it was commanded to travel.
- Calculate the corrected value - Multiply the current rotation_distance by the ratio of actual distance moved to commanded distance, for example an actual 47.5 millimeters against a commanded 50 millimeters means multiplying the current value by 47.5/50, or 0.95.
- Update the config and verify - Enter the corrected rotation_distance into the printer configuration, restart Klipper, and repeat the test once more to confirm the commanded and actual distances now match closely.
Running through the arithmetic with concrete numbers makes the correction clear. Suppose the current rotation_distance value in the Klipper configuration is 22.67 millimeters, a common figure for a particular gear and stepper combination. During the test, commanding 50 millimeters of extrusion actually moves the filament only 47.5 millimeters. The corrected value is calculated as 22.67 × (47.5/50), which comes out to approximately 21.54. A smaller rotation_distance makes the motor turn further for each millimeter of filament, which is what an extruder that under-feeds needs. Entering that updated figure into the configuration and repeating the measurement should bring the commanded and actual distances much closer together, typically within a millimeter or two on a repeat test.
A small amount of measurement error is normal and expected in this test, since marking filament by hand and reading a ruler or calipers introduces some imprecision. Running the test two or three times and averaging the results gives a more reliable corrected value than trusting a single pass. If repeated tests give wildly inconsistent results, rather than small variations around a similar number, that inconsistency often points toward a mechanical issue, such as a loose idler tension or worn hobbed gear, that needs physical attention before a rotation_distance number can be trusted at all.
Once rotation_distance has been measured and corrected on the actual printer, it should be treated as a fairly stable value that does not need re-checking before every print, unlike flow ratio and nozzle temperature which can shift with each new filament spool. Rotation_distance is tied to the mechanical extruder itself, including its gear, stepper, and idler assembly, rather than to any particular filament. It is worth re-verifying after any mechanical change to the extruder, such as swapping a hobbed gear, replacing the stepper motor, or adjusting idler tension, since any of those can shift the real relationship between commanded motion and actual filament movement.
With rotation_distance confirmed as accurate, the flow ratio value measured in the previous section can be trusted as a genuine correction for how the specific filament behaves, rather than a number quietly compensating for a mechanical inaccuracy underneath it. This separation matters a great deal going forward. The next chapter builds directly on this foundation, since Klipper's pressure advance documentation specifically calls for rotation_distance and nozzle temperature to be settled first, precisely because pressure advance tuning assumes the extruder is already moving the amount of filament it is told to move[3].
A useful way to think about the relationship between these three settings is as layers built on top of each other. Rotation_distance establishes an honest, mechanically accurate baseline for how filament actually moves through the extruder. Nozzle temperature determines how that filament behaves once it reaches the hotend, affecting bonding, stringing, and surface finish. Flow ratio then fine-tunes the volume of plastic deposited to match what the model geometry actually calls for, now that the first two layers are trustworthy. Tuning them out of order, or skipping one because it seems like a minor technical detail, tends to produce calibration numbers that look reasonable on paper but do not hold up once speed, temperature, or filament changes.
With nozzle temperature confirmed through a tower test, flow ratio measured against a physical calibration object, and rotation_distance verified through direct measurement on the extruder itself, the printer now has a trustworthy foundation for how much material it deposits and where. That foundation is exactly what the next chapter assumes is already in place, since pressure advance tuning depends on extrusion behavior being predictable before its own corner and seam quality tests can mean anything at all.
Chapter 4: Pressure Advance and Corner Quality
At the instant a printhead rounds a corner, the filament inside the melt zone is still under pressure, and that pressure has nowhere to go except out the nozzle tip as a blob. The extruder has spent the straight section of the wall pushing filament through the hotend at a steady rate, building up a slight backpressure the same way water builds pressure in a hose. When the nozzle suddenly slows to turn a corner, that stored pressure keeps pushing filament out even though the toolhead is barely moving, and the result is a small bulge of extra plastic sitting right at the corner. The opposite problem happens when the nozzle speeds back up after the turn, where the melt zone briefly runs low on pressure and the corner looks thin or starved before the flow catches up.
This chapter is about the setting built specifically to manage that pressure lag: pressure advance. It is easy to confuse with flow ratio, which fixes how much plastic comes out overall, but pressure advance never changes the total volume of filament extruded. It only changes the timing of when that filament gets pushed, moving a bit of the extrusion earlier before a corner and holding some back right after one. Think of it as anticipation rather than correction. A good analogy is easing off the accelerator before a curve in a car rather than slamming the brakes mid-turn, since both get you through the corner but one is smoother and more controlled.
Corner blobbing is the most visible symptom pressure advance addresses, but it is not the only one. Ooze during fast direction changes, fuzzy outer walls on sharp geometry, and even inconsistent seam appearance on round prints can all trace back to pressure mismanagement in the melt zone. Because the amount of pressure buildup depends on how fast the extruder is moving filament and how much resistance the hotend presents, the correct pressure advance value is specific to the combination of extruder, nozzle, and filament in use, not a universal number that transfers between machines.[1] A direct-drive extruder with a short, stiff filament path behaves differently from a Bowden setup with several hundred millimeters of flexible tubing between the motor and the hotend, so copying a pressure advance value from someone else's printer is close to guesswork.
This chapter picks up right where flow ratio tuning left off. Flow ratio makes sure the printer deposits the correct volume of plastic over the whole print, and extruder rotation_distance makes sure the motor's steps translate into accurate filament movement. Pressure advance works on top of both of those, fine-tuning the timing of extrusion during moments when the toolhead's speed changes abruptly, which is exactly when corners, seams, and sharp direction changes occur. The three subsections ahead explain what pressure advance physically compensates for, walk through running Klipper's pressure advance test to find a working value, and show how to read the printed results so overcorrection does not get mistaken for a fix.
What pressure advance compensates for
Melted plastic inside a hotend does not behave like a rigid rod being pushed through a tube. It compresses slightly under pressure, the same way a loaded spring stores energy before releasing it. When the extruder motor turns steadily during a long straight wall, the filament in the melt zone reaches a stable pressure that matches the flow rate, and plastic comes out of the nozzle at a matching steady rate. The moment the toolhead needs to slow down for a corner, the extruder motor also slows, but the compressed filament in the melt zone keeps relaxing and pushing material out for a short moment afterward. That lag is the root cause of the blob sitting right on the corner.
The same lag works in reverse when the toolhead speeds back up. After a sharp turn, the printer accelerates into the next straight section, but the melt zone needs a moment to build pressure back up to match the new speed. During that catch-up period, less plastic comes out than the toolhead's speed would suggest, leaving a thin or slightly under-filled patch right after the corner. Without any compensation, a square test print ends up with small blobs on the leading side of each corner and faint starvation on the trailing side, a pattern that is often mistaken for an under-extrusion or flow ratio problem when the real cause is purely about timing.
Pressure advance works by predicting this lag and acting before it happens. Klipper calculates, based on the configured pressure advance value, how much extra filament to push during an acceleration and how much to hold back during a deceleration, so the melt zone's pressure rises and falls in step with the toolhead's actual speed changes rather than trailing behind. The practical effect is that by the time the nozzle reaches the corner, the melt zone pressure has already been adjusted to match what the new, slower speed requires, so no extra plastic leaks out. Right after the corner, the melt zone has already been pre-loaded with slightly higher pressure, so the flow keeps up with the toolhead's acceleration instead of lagging.
The pressure advance value itself represents how strongly this compensation should act, and it scales with how quickly the melt zone's pressure responds to changes in extrusion speed. A high value means the firmware anticipates aggressively, which suits setups with a lot of pressure lag, such as long Bowden tubes or softer filaments that compress more. A low value, closer to zero, suits setups with very little lag, such as short, stiff direct-drive paths feeding a well-matched nozzle. Because this responsiveness depends on the physical plumbing between motor and nozzle tip, the correct number genuinely differs from one machine to the next, which is exactly why Klipper's documentation frames pressure advance as dependent on the specific extruder, nozzle, and filament combination in use rather than a fixed constant.[2]
It helps to separate pressure advance clearly from two settings it is often confused with. Flow ratio scales the total amount of filament extruded across an entire print, correcting for systematic over- or under-extrusion caused by nozzle wear, filament diameter variance, or calibration drift. Retraction distance and retraction speed, covered later alongside stringing, control how much filament gets pulled back during travel moves when the nozzle lifts off the part entirely. Pressure advance sits between these two, acting only during printing moves where the toolhead changes speed, never during a full retraction event and never changing the total extruded volume. Confusing the three usually leads to chasing a corner blob by lowering flow ratio, which fixes nothing and introduces a new under-extrusion problem on straight walls.
A useful mental model is a garden hose with a slight amount of stretch in it. Squeeze the trigger steadily and water flows out steadily. Let go of the trigger suddenly and a little water still dribbles out because the hose was stretched and under pressure. Squeeze the trigger again after a pause and there is a brief delay before full flow resumes because the hose needs to re-pressurize first. Pressure advance is the equivalent of anticipating the trigger release slightly early and squeezing slightly early on the way back in, so the dribble and the delay both disappear. The nozzle and melt zone play the role of the hose, and the extruder motor plays the role of the hand on the trigger.
Running the pressure advance test
Klipper includes a dedicated test pattern for finding a working pressure advance value, and it is designed to be run after flow ratio and extruder rotation_distance have already been confirmed, since pressure advance tuning assumes the baseline extrusion amount is already correct. The test typically prints a tower or a series of line segments at different speeds, with the pressure advance value changing in small steps from one segment to the next, often controlled through a Klipper macro that steps the value up as the print progresses. The deeper mechanics of writing and parameterizing that kind of test macro belong to the chapter on building reusable Klipper macros, but the test itself is simple enough to run even with a generic version downloaded from a community source.
Before starting, it helps to prepare a short checklist so the test produces a clean, readable result instead of a confusing mess of smeared lines.
Before running the pressure advance test
- Confirm flow ratio and extruder rotation_distance are already calibrated
- Use the same nozzle temperature and filament planned for normal printing
- Make sure the bed is level and the first layer adheres cleanly
- Load the test macro or test model matching the printer's firmware version
- Have good lighting and a magnifier or phone camera ready for reading results
Once the test print starts, watch how the segments change as the pressure advance value increases from a very low setting toward a higher one. At the low end of the range, the printed line segments or the corners on a tower shape typically show visible blobbing or rounding, since too little compensation is being applied and the melt zone pressure lag is still showing through. As the value climbs through the correct range, the corners sharpen up and the blobbing disappears, often across a fairly narrow band of values rather than a single exact number. Past that band, the segments start to show the opposite problem: pinched or thin corners, sometimes with a slight gap, because the compensation is now overcorrecting and starving the nozzle right at the turn.
Reading the test print is mostly a visual exercise, but it helps to follow a consistent procedure rather than eyeballing the whole tower at once.
Reading a pressure advance test tower
- Let the print cool - Remove the test print only after it has cooled enough to handle without warping or smearing soft corners.
- Scan for the blobbing threshold - Starting from the segment printed with the lowest pressure advance value, find the first segment where corner blobs clearly disappear.
- Scan for the starving threshold - Continuing upward, find the first segment where corners start to look pinched, thin, or slightly gapped.
- Pick the midpoint - Choose a pressure advance value roughly in the middle of the clean band between those two thresholds.
- Record the value with its conditions - Note the nozzle temperature, filament, and nozzle size alongside the chosen value, since changing any of them means retesting.
Once a value is chosen, it gets entered into the printer's configuration, typically through Klipper's extruder settings or through a slicer-side G-code adjustment depending on the setup being used. Some workflows store pressure advance directly in Klipper's printer configuration file as a fixed value per filament type, while others trigger a Klipper macro at the start of each print that sets the value based on a parameter passed from Orca Slicer's filament profile. Either approach works, but consistency matters more than the method chosen, since switching between a hardcoded value and a macro-set value without updating both places is a common source of confusion when a later print suddenly starts blobbing again for no apparent reason.
It is worth running the full test again whenever a major variable changes, even if the printer "worked fine" with the old value on a different spool. A switch from a flexible filament to a stiff one, a nozzle swap to a different diameter, or even a significant change in ambient temperature affecting melt zone viscosity can shift the ideal pressure advance value enough to bring blobbing back. Printer owners who keep a simple record of pressure advance values per filament type and nozzle size, similar to the record suggested in the checklist above, save themselves from re-running the full test from scratch every time, since the record often narrows the search to a much smaller range almost immediately.
One practical shortcut worth knowing: if a test tower comes out with every segment looking roughly the same regardless of the pressure advance value being tested, the test itself is likely not stressing the toolhead enough to reveal the pressure lag in the first place. This usually means the print speed or acceleration settings used for the test are too low to create a meaningful pressure difference between the straight sections and the corners. Raising the test print's speed, or specifically its acceleration, closer to what normal prints actually use will usually reveal the blobbing-to-starving transition clearly, since pressure advance only matters in proportion to how abruptly the toolhead changes speed.
Resist the temptation to tune pressure advance and input shaping in the same test session on a machine that has never had either calibrated. Ringing from unresolved resonance issues, covered separately when discussing resonance frequency and accelerometer measurement, can distort the corners of a pressure advance test in ways that look similar to blobbing or starving but come from a completely different cause. Running pressure advance calibration first, then addressing resonance, keeps the two effects from being tangled together in the same test print, which is exactly the kind of mixed-variable trap the troubleshooting routine later in the book is built to avoid.
Recognizing over- and under-compensation
Finding the right pressure advance value is less about hitting one perfect number and more about recognizing the two failure patterns that bracket the correct range from either side. Under-compensation looks almost identical to a print with no pressure advance applied at all, since too small a value simply does not push the compensation far enough to counteract the melt zone's pressure lag. The telltale sign is a small blob or rounded bulge sitting right at each corner, usually on the side the toolhead was approaching from, with straight wall sections elsewhere in the print looking perfectly clean. Because the extra material appears only at corners and nowhere else, it is easy to mistake this for a flow ratio problem, but raising flow ratio would only make the straight sections over-extrude without fixing the corners at all.
Over-compensation produces the opposite visual signature and can be just as easy to misread. When the pressure advance value is set too high, the firmware pulls back too aggressively right before a deceleration, starving the nozzle at the exact moment the corner is being printed. The result is a corner that looks pinched, thin, or slightly recessed compared to the surrounding wall, sometimes with a visible gap where plastic simply did not reach. This can look superficially similar to under-extrusion caused by a partially clogged nozzle or an incorrect flow ratio, but the key difference is that over-compensated pressure advance only affects corners and sharp direction changes, leaving straight sections of the same wall looking completely normal.
The illustration below shows this contrast directly, comparing a printed corner with too little compensation against one correctly tuned and one pushed too far in the other direction.

A table makes the distinction easier to keep straight when looking at a confusing print and trying to decide which direction to adjust.
| Symptom | Likely cause | Adjustment direction |
|---|---|---|
| Rounded blob right at corners, straight walls look fine | Pressure advance too low | Increase the value |
| Pinched or thin corners, slight gap, straight walls look fine | Pressure advance too high | Decrease the value |
| Entire wall over-extruded, corners and straight sections both heavy | Flow ratio too high, not a pressure advance issue | Re-check flow ratio instead |
| Entire wall under-extruded, corners and straight sections both thin | Flow ratio too low or nozzle partially clogged, not a pressure advance issue | Re-check flow ratio and nozzle condition |
Seams on round or curved prints offer another useful diagnostic surface for the same two failure patterns, since a seam is essentially a corner where the toolhead stops and restarts extrusion. An under-compensated pressure advance value often shows up as a small bump or blob right at the seam line, visible as a faint vertical ridge running up the side of an otherwise smooth cylindrical print. An over-compensated value can instead leave a slight dip or notch at the seam, where the nozzle briefly produced less material than the surrounding wall needed. Checking the seam alongside the sharp corners on a test tower gives two independent data points instead of relying on corners alone.
Extremely high speeds or accelerations can make even a well-tuned pressure advance value look imperfect, simply because the physical limits of how fast the melt zone can respond get pushed past what any reasonable compensation value can fully correct. If a print looks fine at moderate speeds but starts showing blobbing or starving again once speed or acceleration is pushed much higher, the fix is not necessarily a different pressure advance value. It may instead mean the printer's practical speed ceiling for clean corners has been reached, and further speed increases should be accompanied by accepting a small amount of corner imperfection as a trade-off.
Tip: Quick visual gut-check
Hold the test print up to a light and run a finger gently along a few corners. A blob feels like a small raised bump under the fingertip, while over-compensation feels like a slight dent or a corner that sits lower than the wall around it. This tactile check is a fast confirmation alongside the visual read, especially on glossy filaments where lighting can make subtle bumps and dips hard to see by eye alone.
Once a value is confirmed through both the visual read and the tactile check, it is worth printing one more unrelated model, something with a mix of sharp corners, curves, and a visible seam, purely as a sanity check before locking the value in for regular use. A single test tower is a controlled environment, but real models sometimes combine speed changes, direction changes, and retraction events in ways the test print does not fully replicate. If the sanity print still shows a small amount of blobbing or starving on a particular feature, it is a signal to revisit the test rather than to assume the calibration was wrong from the start.
With pressure advance settled, corners and seams should look sharp and consistent across a full range of normal printing speeds, leaving the remaining visible imperfections, especially fine hair-like strands between separate features, to a different mechanism entirely. That stringing problem is driven by travel moves where the nozzle lifts and crosses open space rather than by speed changes during printing moves, which means it calls for a completely different setting to fix.
Chapter 5: Retraction and the Problem of Stringing
Two prints, same retraction settings, one strings and one doesn't. That mismatch is the first clue that the difference is almost never the number sitting in the retraction field. A print that strings on Tuesday and comes out clean on Thursday, using the identical printer profile and filament profile, tells you something mechanical changed between the two sessions, not that the slicer suddenly forgot how to calculate a retraction move. Retraction distance and retraction speed matter, but they are only one variable among several that can produce the exact same thin hair-like strands between towers, letters, or separated islands on a model.
Stringing is a visible symptom, and like most symptoms in 3D printing, it can come from more than one underlying cause stacked together. Treating every string as a retraction problem is the single most common mistake a beginner makes, because retraction is the first thing every tutorial mentions. That instinct leads to a cycle of nudging retraction distance up a little, then a little more, without ever testing whether the real cause was sitting somewhere else entirely, such as a nozzle running hotter than it needs to or a spool that has quietly absorbed moisture from the air.
This chapter separates the retraction mechanism itself from the other forces that produce strings, so a test can isolate one variable instead of changing three things at once and guessing which one worked. The approach mirrors the same discipline used for flow ratio and pressure advance earlier in the book: hold everything constant except the one setting under test, print a sample, and read the result before touching anything else. Stringing responds well to this discipline because it is easy to see and easy to compare across prints, provided the comparison is fair.
By the end of this chapter, the goal is a short diagnostic habit: look at a stringy print, ask whether it points to retraction mechanics, excess heat, or a wet filament spool, and test that one hypothesis before reaching for the retraction distance slider again. That habit saves hours of trial and error and stops a reader from permanently over-retracting a filament to mask a problem that temperature or filament storage would have solved more cleanly.
Why stringing appears between features
Stringing happens when molten plastic oozes out of the nozzle during a travel move, the point where the printhead moves from one printed feature to another without extruding. If the nozzle still holds pressurized, melted filament at the tip when that travel move starts, gravity and leftover pressure pull a thin strand out behind it. That strand stretches across the gap and cools in midair, leaving the hair-like string you see once the part comes off the bed. The travel move itself does not cause the ooze, it just gives the ooze somewhere to go and something to bridge across.
Prusa's own troubleshooting guidance for stringing and oozing lists several contributors worth checking before blaming retraction alone, including high nozzle temperature, retraction settings, filament moisture, and the physical condition of the hardware itself[1]. That list matters because each of these four categories changes the melt in a different way, and none of them is fixed by the same adjustment. A reader who only ever touches retraction distance is working on one branch of a four-branch tree and hoping the other three never matter.
Temperature affects stringing because a hotter melt zone is thinner and runs more freely, which means more plastic leaks out during a travel move even with the same retraction settings. This is why a temperature tower run earlier in a calibration sequence, covered in nozzle temperature tuning, often changes stringing behavior as a side effect even though it was not testing retraction at all. A filament printed ten degrees hotter than it needs to be will almost always string more, independent of how aggressively it retracts.
Filament moisture changes stringing through a different mechanism entirely. Many filaments, especially PETG and nylon-based materials, absorb water from the air when left uncovered. When that filament hits the hot end, the trapped moisture turns to steam and causes tiny eruptions in the melt, which push extra plastic out of the nozzle tip in an uncontrolled way. The result looks like stringing and sometimes like fine bubbling or a rough, hair-covered surface, but no retraction setting fixes it because the problem is water vapor, not pressure left in the melt zone.
Hardware condition rounds out the fourth category, and it is the one most often skipped. A worn nozzle, a partially clogged tip, or a hot end with inconsistent heat distribution can all leak filament in ways that mimic a retraction failure. A loose heat break or a nozzle that is not fully tightened can let plastic creep past seals that should contain it. None of these problems show up in the slicer settings at all, which is exactly why they get missed when a reader assumes every visible defect must map to a number somewhere in Orca Slicer.
A simple way to keep these four categories straight before testing anything is a short decision tree that routes a stringy print toward the right first move.
Where to start when a print strings
- Print shows stringing between features
- Filament feels damp or spool was left uncovered Dry a sample and reprint it
- Stringing persists after drying Move on to retraction distance and speed testing
- Filament is dry but stringing is heavy at current temperature Lower nozzle temperature in 5°C steps and reprint
- Stringing persists after lowering temperature Move on to retraction distance and speed testing
- Stringing looks uneven or oozes constantly, even while idle Inspect nozzle and heat break for wear or looseness
- Hardware checks out fine Move on to retraction distance and speed testing
- Filament feels damp or spool was left uncovered Dry a sample and reprint it
Notice that retraction sits at the end of this tree, not the beginning. That ordering is intentional. Retraction distance and retraction speed are the easiest variables to change, and they are also the last ones to check, because fixing a hardware leak or a wet spool with more retraction only hides the real problem under a setting that now has to compensate for something it was never meant to fix. A reader who works through drying, temperature, and hardware first arrives at the retraction test with a cleaner baseline and a much better chance of reading the result correctly.
Consider a concrete case: a print strings heavily on PETG that has been sitting open on a shelf for several weeks. The reader raises retraction distance from a modest starting value to a much larger one, and stringing drops a little but never fully clears. Frustrated, they then try lowering the nozzle temperature by five degrees, with only a marginal improvement. The actual fix in this scenario is usually drying the filament for several hours in a filament dryer or a low oven setting, because PETG is particularly prone to absorbing moisture and the stringing pattern it produces, fine and widespread rather than a few long hairs, is a classic sign of steam escaping the melt rather than excess pressure.
The opposite case also happens. A reader dries a spool of PLA that was never exposed to much humidity, assuming moisture must be the cause because that is the trendy explanation online, and sees no change at all. In that case the filament was never wet to begin with, and the time spent drying it was wasted while the real cause, a nozzle temperature set thirty degrees above what the filament profile actually needed, went untested. This is why the order in the decision tree matters more than any single fix: test the cheapest, fastest-to-rule-out cause first, and only escalate to retraction once temperature and moisture have genuinely been eliminated.
A short callout captures the core distinction worth remembering before moving into retraction mechanics directly.
Key takeaway: Stringing has four possible doors
Before touching retraction distance, rule out nozzle temperature, filament moisture, and hardware condition. Retraction tuning only works cleanly once the other three are no longer adding ooze on top of what retraction is meant to control.
With the four-category view in place, the rest of this chapter narrows in on the retraction mechanism itself, since that is the one variable that actually lives inside the slicer's retraction settings and the one most readers reach for first. Understanding how retraction distance and retraction speed physically work makes the difference between a test that produces a clean, readable result and one that produces a confusing mix of effects layered on top of each other.
Adjusting retraction distance and speed
Retraction distance is the amount of filament the extruder pulls backward before a travel move, measured in millimeters, and its job is to relieve the pressure sitting in the melt zone so filament stops oozing out the tip while the nozzle is not printing. A direct drive extruder, where the motor sits right above the hot end, typically needs a much shorter retraction distance than a Bowden setup, where the filament travels through a long tube before reaching the hot end and compresses slightly along the way. Starting values differ enough between these two mechanical layouts that a profile copied from a Bowden printer onto a direct drive machine will almost always over-retract, and the reverse under-retracts.
Retraction speed is the rate at which that retraction move happens, and it interacts with retraction distance rather than acting independently. A retraction that happens too slowly leaves filament oozing for longer than necessary even if the total distance pulled back is correct, because the pressure in the melt zone has more time to push plastic out while the retraction is still underway. A retraction that happens too fast, on the other hand, risks grinding the filament against the extruder gear, since the gear teeth can only bite into the filament so quickly before they start stripping a groove into it rather than pulling it back cleanly.
Testing retraction distance and speed separately avoids conflating two different mechanical effects into one confusing result. The standard approach is a retraction tower, a model built specifically for this test, printed as a tall structure with a deliberate series of travel moves at different heights, each height segment using a different retraction value defined through the slicer's height-range modifiers or a built-in calibration object in Orca Slicer. Each band of the tower represents one retraction distance, and the reader inspects the surface at each band for stringing, then picks the lowest value that produces a clean result.
A concrete starting routine makes this test repeatable instead of a guessing exercise, and it should always happen after temperature and moisture have already been ruled out as described above, so the strings seen here are actually caused by retraction and nothing else.
Running a retraction distance test
- Confirm the baseline - Reprint the baseline print from the printer profile and filament profile setup, confirming nozzle temperature matches the filament profile and the spool has been stored dry.
- Load or build a retraction tower - Use Orca Slicer's calibration object for retraction, or a height-range modifier on a simple multi-tower model, stepping retraction distance across several bands (for example, in 0.2 mm increments).
- Hold speed constant - Keep retraction speed fixed at a moderate value for this first pass so distance is the only variable changing between bands.
- Print and inspect each band - Look for strings or hair-like residue at the transition points between towers in each band, and note the lowest distance where stringing disappears or becomes negligible.
- Lock in distance, then test speed - Fix retraction distance at the value found above, then rerun a similar tower varying only retraction speed to find the fastest speed that still retracts cleanly without grinding.
- Record both values in the filament profile - Save the resulting distance and speed into the filament profile so they travel with that specific filament and printer combination rather than living only in slicer memory.
Klipper's own documentation adds an important piece of guidance that changes how this test should be set up in Orca Slicer. The documentation advises against using slicer coasting together with Klipper, while stating that slicer retraction and wipe settings can still be used normally[2]. Coasting is a slicer feature that stops extrusion slightly before a perimeter ends, letting residual pressure in the melt finish the line instead of a full retraction, and it can interact poorly with how Klipper schedules motion and extrusion together. Keeping coasting disabled while testing retraction distance and speed in Orca Slicer removes one more variable that could blur the result.
A reader working through this test for the first time often hits one of two confusing outcomes. The first is stringing that never fully disappears no matter how far retraction distance is pushed, which almost always means the real cause sits outside retraction entirely, back in the temperature or moisture categories from the first subchapter, and the test should stop and redirect there rather than pushing distance past what the extruder can reasonably handle. The second is stringing that disappears at a modest distance but corners start to show small blobs or gaps, a sign that retraction distance has been pushed well past what is needed and is now interacting with pressure advance tuning covered in the dedicated chapter on that topic.
Retraction speed testing follows the same tower logic but watches for a different failure sign. Too slow a speed and the tower still shows light stringing even at a distance that worked fine in the distance test, because the retraction move itself drags out over enough time for ooze to escape before it completes. Too fast a speed and the extruder motor may audibly click or skip during the retraction move, a sign the gear is slipping against the filament rather than pulling it back cleanly, which over many print hours can wear a visible flat spot into the filament itself.
A short checklist pulls the retraction test into something that can be run quickly on a repeat printer or a new spool without re-reading the full procedure each time.
Before trusting a retraction result
- Filament has been stored dry or freshly dried before the test
- Nozzle temperature matches the value confirmed during temperature tuning, not a guess
- Slicer coasting is turned off for this test
- Retraction distance and retraction speed are tested one at a time, never together
- The lowest clean retraction distance is recorded in the filament profile, not left as a one-off slicer setting
- Corners are checked for new blobbing after raising retraction distance, since this interacts with pressure advance
Bowden setups deserve one more note, since the tube length between the extruder and the hot end means a larger share of the retraction move is spent simply removing slack from the filament path rather than relieving pressure at the nozzle tip. This is why Bowden printers often need distances several times larger than a direct drive machine before any ooze reduction even begins. Testing on the actual printer rather than trusting a number from a forum post or a friend's profile avoids wasting several prints chasing a value that was tuned for a mechanically different setup.
Once both values are locked in and saved to the filament profile, they should hold steady across most prints using that same spool and nozzle, aside from occasional small adjustments if the nozzle wears or the filament batch changes slightly. The next subchapter turns to the harder diagnostic skill: looking at a stringy print after calibration and deciding, without rerunning a full tower test every time, whether the cause has drifted back toward temperature or moisture rather than retraction itself.
Separating stringing from temperature and moisture
Once retraction distance and speed have been calibrated and locked into the filament profile, a new round of stringing on a later print should raise a different question than before. The instinct to reopen the retraction settings and nudge them further is usually wrong at this stage, because the values already found through the tower test represent the mechanical limit of what retraction alone can fix. If stringing reappears after a clean calibration, the more productive question is what changed since that calibration, not whether the calibration itself was wrong.
The most common change is the filament itself. A spool that printed cleanly a month ago can absorb enough moisture sitting in a humid room to start producing fine, widespread stringing again, even though nothing in the printer profile or filament profile has been touched. This pattern, stringing that appears gradually over weeks rather than suddenly after a settings change, is one of the clearest signs pointing toward moisture rather than retraction. A quick way to test this without fully re-running the retraction tower is to dry a short sample of the same spool and print one small test object, comparing it directly against a piece printed straight from the undried spool.
Popping or crackling sounds coming from the hot end while printing are a strong and often overlooked signal of moisture, since they are the audible result of trapped water flashing to steam inside the melt. A reader who hears this sound and still reaches for the retraction distance slider is solving the wrong problem. Drying filament typically means running it through a dedicated filament dryer or a low-temperature oven for several hours, following the guidance that came with the dryer or the filament manufacturer's recommendation, and then printing immediately or storing it in a sealed container with desiccant afterward to keep it from reabsorbing moisture before use.
Temperature drift is the second most common reason clean retraction settings start producing strings again. This can happen because a new spool of the same filament color or brand behaves slightly differently even at the same nominal temperature, or because a nozzle temperature that was always a little too high has been masked until now by retraction values that happened to compensate for it under the exact conditions of the original test. Lowering temperature in small steps, five degrees at a time, while keeping retraction fixed at its calibrated value, isolates this cause cleanly, much like the original temperature tower process but used here as a confirmation step rather than a first calibration.
A practical way to keep this diagnostic fast is to treat it as a short quiz a reader can run against themselves before touching any slicer setting, rather than jumping straight back into a full tower reprint.
Hardware drift rounds out the list of causes worth revisiting after a clean calibration starts producing strings again. A nozzle that has been in heavy use for a long stretch of prints can wear slightly at the tip, changing how cleanly it seals when not actively extruding, and a loose heater block or heat break can develop play that was not present when the retraction tower was first run. Neither of these shows up as a slicer setting, and no amount of retraction tuning compensates for a physically degraded nozzle. A quick visual inspection, and in some cases simply swapping in a new nozzle to test, settles this question faster than another round of retraction tower prints.
Keeping a simple written log of which filament spool, nozzle, and retraction values were used for each calibration test turns this diagnostic process from guesswork into comparison. When stringing reappears, that log lets a reader check quickly whether the spool, the nozzle, or the surrounding humidity has changed since the last clean print, rather than relying on memory. This same habit of recording test conditions becomes central later in the troubleshooting routine built around Klipper macros, where consistent logging across calibration sessions is what makes a personally owned profile trustworthy rather than a set of numbers nobody remembers the reasoning behind.
The practical payoff of separating retraction mechanics from temperature and moisture is that a reader stops treating every string as an invitation to pull retraction distance higher and higher, a path that eventually produces its own problems, including gaps at the start of perimeters and under-extruded sections right after each travel move. Retraction exists to solve a specific, narrow problem: pressure left in the melt zone during a travel move. Once that value is correctly tuned, any further stringing is a signal pointing somewhere else entirely, and chasing it with more retraction only buries a temperature or moisture problem under a setting that was never designed to fix it.
A spool that strings today and printed cleanly last month has not developed a retraction problem. It has most likely picked up moisture from the air, drifted slightly in how the nozzle handles it at the same temperature, or started revealing wear in a nozzle that has quietly degraded over dozens of prints. Reading which of these three doors applies, rather than defaulting to the one slicer field every tutorial mentions first, is what turns stringing from a recurring mystery into a two-minute diagnosis.
Chapter 6: Input Shaping and Ringing
Ringing is the printer's frame vibrating at its own natural frequency, a physics problem that no slicer setting can fix without first measuring the frequency itself. Walk up to a finished print with a sharp corner or a raised letter and tilt it under a light. If faint, evenly spaced ripples run across the wall near that feature, the toolhead was shaking after it changed direction, and that shake left its mark in plastic before it settled down. No amount of adjusting flow ratio, nozzle temperature, or retraction distance will remove it, because those settings control how much material comes out, not how steady the frame is while it moves.
The fix lives inside Klipper, not inside Orca Slicer's print settings panel, and it works by measuring the machine rather than guessing at a universal number. Input shaping is a resonance-compensation feature that reshapes the motion commands sent to the stepper motors, timing small counter-movements so they cancel out the vibration the frame would otherwise produce[1]. It does not strengthen the frame or remove the vibration's source. It predicts the vibration and cancels it in advance, the way noise-cancelling headphones play an inverted sound wave rather than physically blocking noise.
Three ideas carry the rest of this chapter: resonance frequency, accelerometer measurement, and shaper selection. Resonance frequency is the specific rate at which a given axis naturally wants to vibrate, and it differs between the X and Y axes because they carry different masses and have different frame geometry. Accelerometer measurement is how that frequency gets found on an actual printer instead of copied from a forum post. Shaper selection is the decision of which compensation algorithm to apply once the frequency is known, since different shapers trade vibration reduction against how much they slow the printer down.
None of this replaces the earlier calibration steps. Flow ratio, pressure advance, and retraction all still need their own tuning, as covered in their respective chapters. A print with stringing from poor retraction or blobbing from unset pressure advance will still show those defects after input shaping is dialed in. Treat this chapter as the step that removes one specific, physics-based artifact, not as a catch-all fix for every rough-looking print.
This matters most on printers with fast travel speeds, tall thin features, lightweight frames, or printed enclosures that flex more than a metal one. A heavy, well-braced machine printing slowly may show almost no ringing at all, while a fast printer with a tall X-axis gantry can show it on nearly every corner. Measuring resonance tells which situation applies, instead of assuming the worst and over-correcting.
How printer resonance creates ringing
Every moving structure has a frequency at which it vibrates most easily, the same way a tuning fork rings at one specific pitch no matter how it is struck. A printer's toolhead, gantry, and frame form a similar system. When a stepper motor accelerates or decelerates the toolhead, especially at a sharp corner where direction reverses quickly, it injects a burst of energy into that structure. If the timing of that burst matches the structure's natural frequency, the frame keeps oscillating back and forth for a short time after the command has finished, like a diving board that keeps bouncing after someone has already stepped off it.
That lingering oscillation moves the nozzle slightly off its intended path while the extruder keeps depositing plastic. Each tiny back-and-forth motion leaves a thin ridge in the print surface, and because the oscillation happens at a fixed frequency, the ridges come out evenly spaced. Seen from a distance, those ridges look like water ripples spreading out from the corner that triggered them. This is ringing, and it is a visible record of the frame's vibration frequency written directly onto the part.
Ringing shows up most clearly near features that force a sudden change in direction: sharp external corners, text embossed into a wall, or a small boss sticking out from a flat surface. A smooth curve rarely triggers it because the toolhead's direction changes gradually rather than snapping from one vector to another. This is a useful diagnostic shortcut. If ripples cluster specifically around corners and sharp features while flat curved walls stay clean, resonance is the likely cause rather than a hardware fault such as a loose belt or binding rod, both of which tend to produce more random or constant texture rather than evenly spaced ripples tied to direction changes.
Two separate axes usually have two separate resonance frequencies, and sometimes two very different ones. The X axis typically moves the toolhead itself and all its attached mass (hotend, fan shroud, wiring), while the Y axis on many printer designs moves the whole bed, which carries a different mass and is supported differently by the frame. A gantry that is tall and lightly braced can resonate at a noticeably lower frequency than a short, heavily supported one. This is why a single shared resonance value copied from someone else's printer, even an identical model, often performs worse than expected: frame tolerances, added accessories, and even how tightly belts are tensioned all shift the actual frequency.
Temperature of the print itself is not the variable at play here, nor is flow ratio or retraction. It helps to be precise about what ringing is not, since it is easy to lump it in with other corner-related defects covered elsewhere.
Ringing is a frame vibration artifact tied to acceleration and direction changes. Corner blobbing, addressed through pressure advance, is a material-pressure artifact tied to extrusion flow. Both show up near corners, but one is mechanical motion and the other is extrusion pressure, and they call for entirely different fixes.
A practical way to separate the two on an actual print is to look at the shape of the defect rather than just its location. Blobbing from pressure advance issues appears as a localized bulge or gap right at the corner itself, often just on one side of the direction change. Ringing appears as a repeating wave pattern that fades in amplitude as it moves away from the corner, visible on the wall surface well beyond the corner's immediate vicinity. Holding the part at a raking angle under a single light source makes this wave pattern much easier to see than looking at it straight on under diffuse light.
It also helps to know that ringing severity scales with print speed and acceleration settings, not just with the frame's inherent stiffness. A printer that shows barely visible ringing at a moderate acceleration setting can show dramatic ringing once acceleration is pushed higher in search of faster print times. This means input shaping and speed settings interact. Raising acceleration without re-checking resonance compensation can reintroduce ringing that was previously well controlled, so any future attempt to speed up a profile deserves a fresh look at this chapter's settings rather than an assumption that the old shaper values still apply.
Printers with lightweight frames made from extruded aluminum profiles are common in the hobby space, and these frames are generally stiffer and lighter than fully enclosed sheet-metal or printed-panel designs, but stiffness and lightness pull in opposite directions for resonance. A very light gantry can still ring at a high frequency even if the overall frame is stiff, because the moving mass itself is what determines part of the oscillation behavior. This is one more reason a generic number borrowed from another printer rarely transfers cleanly: the combination of frame stiffness and moving mass on any single setup is close to unique.
Mechanical slack also amplifies ringing even when it is not the root cause. Loose belts, an under-tightened pulley grub screw, or play in a linear rail carriage all let the toolhead move slightly out of sync with the commanded position, and that slack can make a moderate resonance look far worse on the printed part than the underlying frame vibration alone would suggest. Before relying entirely on input shaping to fix a badly rippled print, it is worth doing a basic mechanical check: hold the toolhead and gently try to rock it side to side by hand, feeling for any looseness in the belts or carriage that a tensioner adjustment could address first.
None of this diagnostic work requires special equipment yet. A trained eye, a raking light, and a basic mechanical check go a long way toward confirming that ringing, rather than another defect, is actually present before investing time in resonance measurement. Once that confirmation is in hand, the next step is to quantify the resonance frequency precisely rather than estimating it from how the ripples look, and that requires a piece of hardware purpose-built for the job.
Consider a specific case: a printer shows ripples spaced roughly a few millimeters apart on tall vertical corners, but the top surfaces and curved sections print cleanly. That pattern (sharp corners only, evenly spaced ripples, clean curves) is close to a textbook description of resonance-driven ringing. A printer instead showing a single bulge right at a corner with no repeating wave pattern beyond it is more likely facing a pressure advance issue, not a resonance one, and belongs back in that chapter's test rather than this one.
Measuring resonances with an accelerometer
Guessing a resonance frequency from how ripples look on a print is unreliable, because the spacing of ripples depends on both the frequency and the print speed at the time, and translating that spacing back into a frequency by hand, although Klipper documents a ringing-tower method for it, is slower and less precise. The reliable method is to measure vibration directly with a small sensor called an accelerometer, a chip that reports how strongly it is accelerating and in which direction many times per second. Mounted on the toolhead, it effectively lets the printer feel its own shaking in a way no human observation can match for precision.
A common accelerometer used for this purpose is a small board built around an ADXL345 chip, connected to the printer's control board and recognized by Klipper as a measurement device. It gets mounted rigidly to the part of the printer whose resonance is being tested, most often the toolhead carriage for the X axis and the bed or its carriage for the Y axis. The word rigidly matters here: if the sensor is taped on loosely or dangling from a long wire, it will record its own wobble on top of the printer's, corrupting the measurement with noise that has nothing to do with the frame's actual behavior.
The illustration below shows this mounting arrangement in detail.

Once mounted and wired, Klipper runs a built-in test sequence that commands the toolhead to vibrate across a range of frequencies on one axis at a time, while the accelerometer records how strongly the frame responds at each one. The output is a graph with frequency along one axis and vibration intensity along the other, and it typically shows one or more clear peaks. Those peaks are the resonance frequencies: the specific rates at which the frame amplifies vibration rather than damping it out. A printer can show a single dominant peak or, on a less rigid frame, two or three smaller peaks spread across the frequency range.
The practical steps for running this test follow a consistent order, regardless of the specific printer model involved.
Measuring resonance frequency with an accelerometer
- Mount the sensor - Attach the accelerometer rigidly to the toolhead carriage for the X axis test, using a secure mount rather than tape or adhesive putty.
- Confirm wiring and recognition - Connect the sensor to the control board and confirm Klipper recognizes it as an active measurement device before running any test.
- Clear the work area - Remove loose cables, tools, or objects near the toolhead's travel path, since the test sequence moves the toolhead through a wide range of frequencies and speeds.
- Run the resonance test for the X axis - Start the built-in measurement sequence and let it complete without interruption, recording vibration intensity across the frequency sweep.
- Remount for the Y axis - Move or remount the accelerometer to the bed or its carriage, depending on printer design, and repeat the sweep for the Y axis.
- Review the resulting graphs - Identify the frequency where each axis shows its strongest peak, since that is the resonance frequency Klipper will use to configure input shaping for that axis.
Reading the resulting graph takes a little practice but the key feature to look for is straightforward: a tall, narrow spike means a strong, well-defined resonance that input shaping can target precisely. A broad, low hump with no sharp peak suggests a less dramatic resonance problem, or one spread across several frequencies at once, which tends to be harder to fully cancel with any single shaper setting. Printers showing multiple smaller peaks often have more than one structural element contributing to vibration, such as a loosely mounted display panel or an accessory cooling fan shroud vibrating at its own separate frequency.
One frequent mistake is skipping the Y-axis test because the X-axis result looks fine, assuming both axes behave the same way. They rarely do, since the bed-moving Y axis usually carries a heavier combined mass (the bed itself plus whatever part is currently printing) than the X-axis toolhead. A bed loaded with a tall, heavy print can even shift its own resonance behavior somewhat compared to an empty bed, though for most calibration purposes testing with an empty bed is the standard approach. Treating both axes as a matched pair without actually measuring each one separately defeats much of the purpose of running an accelerometer test in the first place.
Another common mistake involves loose mounting hardware introducing false peaks into the graph. If a result shows an unusually sharp, narrow spike at a frequency that seems implausibly high or low compared to the rest of the printer's structure, it is worth double-checking the accelerometer's physical mount before trusting that number. A board that is only lightly clipped on, or a sensor cable that is pulling against the toolhead during the sweep, can both introduce artifacts that look like genuine resonance peaks but are really just measurement noise from the sensor's own attachment.
It also helps to repeat each axis test once after the first run, simply to confirm the peak frequency lands in roughly the same place both times. A result that shifts significantly between two otherwise identical runs usually points to a loose mechanical component somewhere in the system rather than a stable, measurable resonance, and that loose component is worth tracking down and tightening before relying on the measured frequency for shaper configuration. Consistency between repeated runs is a strong signal that the number being used going forward is a true property of the frame, not an artifact of that particular test run.
With a confirmed, repeatable resonance frequency recorded for each axis, the measurement phase is complete. What happens next is a software decision rather than a hardware one: translating those two frequency numbers into an actual input shaping configuration, and more specifically, choosing which shaping algorithm, or shaper, best fits the tradeoffs a given printer and workflow can tolerate.
Warning: A loose sensor ruins the measurement
An accelerometer that is taped on, dangling by its cable, or mounted to a flexing bracket will record its own extra motion on top of the printer's real vibration. Always mount it to a rigid point that moves exactly with the toolhead or bed carriage being tested, and repeat the test once to confirm the peak frequency is stable before trusting the result.
Choosing a shaper and balancing smoothing
Once resonance frequencies are known for both axes, Klipper can apply one of several shaping algorithms, each built on a different mathematical approach to cancelling vibration. All of them work by splitting a single commanded move into multiple smaller, precisely timed movements that interfere with the frame's natural oscillation and cancel it out, rather than letting the frame ring freely after a sharp direction change. The documentation describing input shaping notes that different shaper choices trade off vibration reduction against how much they smooth, or soften, the resulting motion[2]. That tradeoff is the central decision this section works through.
The core tension is this: a shaper that cancels vibration more aggressively also tends to smooth out, or round off, fine motion detail, because it is spreading each sharp movement across a slightly longer window of time. A shaper tuned for maximum vibration reduction can soften small details like fine text embossed into a part or very tight corners, making them look slightly rounded compared to the sharp geometry in the original model. A lighter-touch shaper preserves more of that fine detail but leaves a bit more residual ringing behind. Neither extreme is universally correct, and the right choice depends on what a given print actually needs.
This tradeoff is easiest to see laid out side by side, comparing the general character of different shaping approaches rather than claiming one is strictly superior.
| Shaper character | Vibration reduction | Detail smoothing | Best suited for |
|---|---|---|---|
| Lighter-touch shaping | Moderate | Minimal | Parts with fine surface detail printed at modest speeds |
| Balanced shaping | Strong | Mild | General-purpose printing across most part types |
| Aggressive shaping | Strongest | Noticeable | Tall, ringing-prone prints at higher speed or acceleration |
Klipper's configuration lets a shaper be selected by name for each axis independently, since the X and Y axes often benefit from different choices given their different measured resonance frequencies and different structural behavior. In Klipper those names are shaper types such as zv, mzv, and ei, which run roughly from the lightest touch with the least smoothing to the strongest vibration reduction with the most smoothing, with 2hump_ei and 3hump_ei going further still. The measurement itself comes from the TEST_RESONANCES command, which vibrates one axis and records the response, or from SHAPER_CALIBRATE, which runs the accelerometer test on both axes and suggests a shaper type and frequency for each. The chosen values then go into the [input_shaper] section of printer.cfg as shaper_type_x, shaper_freq_x, and their Y-axis counterparts. After selecting a shaper and setting the corresponding frequency value for each axis, the practical next step is always a test print rather than trusting the numbers alone. A simple tall object with a few sharp external corners makes a good test subject, since it reproduces the exact kind of direction change that triggers ringing in normal use.
Evaluate the test print by tilting it under a single raking light to reveal any ripple patterns. Look specifically at the corners for ripple patterns, and separately look at any fine surface detail, such as text or small protruding features, for signs of excessive rounding or blurring. A printer running well-tuned input shaping should show corners that are clean and ripple-free while fine detail remains crisp and legible. If ripples are still visible, the chosen shaper may be too light for the measured resonance, or the frequency value itself may need rechecking against the accelerometer data. If detail looks noticeably soft, an aggressive shaper may be smoothing more than this particular print needs.
A decision tree is useful here for working through this evaluation methodically rather than by trial and error alone.
Choosing a shaper after the test print
- Inspect the test print
- Ripples still visible at corners?
- Yes Move to a more aggressive shaper or recheck frequency
- No Fine detail blurred or rounded?
- Yes Move to a lighter-touch shaper
- No Keep current shaper, result is balanced
- Ripples still visible at corners?
Print speed and acceleration settings interact directly with this choice, since faster motion generally excites resonance more strongly and demands more aggressive compensation to keep ringing under control. A profile tuned for moderate speeds with a lighter-touch shaper may need to move to a stronger shaper if acceleration is later increased in pursuit of shorter print times. This is one more reason input shaping belongs in the same repeatable testing mindset as the rest of this book's calibration work: it is not a one-time setting locked in forever, but a configuration that should be revisited whenever speed, acceleration, or even significant frame hardware changes.
A balanced shaper is a reasonable default starting point for most general-purpose printing, since it offers strong vibration reduction without the most noticeable detail softening. From there, adjust toward a lighter or more aggressive choice based on what the specific test print reveals, rather than assuming any single named shaper is correct for every printer and every part. A printer primarily used for fast functional prints with few fine details can lean toward the more aggressive end of the spectrum without much visible downside, while a printer regularly producing display pieces with fine embossed text benefits from staying closer to the lighter end.
It is also worth testing both axes' chosen shapers together on the same print rather than evaluating them in isolation, since most real prints involve motion on both axes simultaneously and the combined effect is what actually shows up on a finished part. A shaper combination that looks fine when each axis is tested with simple back-and-forth moves can still reveal unexpected interactions on a print with diagonal moves or curved paths that engage both axes at once. The tall test object with sharp corners used earlier naturally exercises both axes together, which is part of why it works well as a standard check.
Treat the resulting configuration as a working baseline tied to this specific printer, this specific accelerometer mounting, and this specific speed profile, not as a permanent fact about the machine. A frame modification, a new heavier hotend, or a decision to push acceleration higher for faster everyday printing all justify running the resonance measurement again rather than assuming the old numbers still hold. The same discipline that applies to flow ratio and pressure advance calibration applies here: measure the actual machine in front of you, trust that measurement over a number found online, and revisit it when something about the printer's physical setup changes.
Chapter 7: Reading Common Print Defects
A failed print is a crime scene. The layer shift, the gap, the curl at the corner, each one is a physical record of exactly what went wrong, if you know how to read it. Most printer owners look at a failed print and feel only frustration, because the plastic does not explain itself in words. But it does leave marks, and those marks follow mechanical logic. A shifted layer moves in a direction and by an amount that points back to a specific physical cause. A thin, hollow-sounding wall points to a narrower set of culprits than a photo alone would suggest.
The temptation, especially for someone who has copied profiles rather than built one, is to treat every defect as a mystery with one hidden answer: change this one number and the problem goes away forever. That approach ignores how many parts of the system can produce the same visible symptom. A gap between layers might come from the hotend, the extruder, the slicer settings, or the filament itself. Treating a defect as a diagnosis instead of a symptom is exactly the mistake this chapter corrects.
This chapter works through three defect families that account for a large share of the failed prints an everyday Klipper and Orca Slicer user will encounter: layer shifts, under-extrusion, and warping tied to bed adhesion. Each section explains what the defect looks like, what mechanical or settings causes can produce it, and how to narrow down which one applies to the print in front of you. None of this replaces the deeper calibration work covered when tuning nozzle temperature and flow ratio, pressure advance, or input shaping. Instead, it teaches you to recognize when a failure belongs to one of those categories in the first place.
Think of this chapter as a field guide rather than a rulebook. A field guide does not promise that every bird with a red patch is the same species, it teaches you to notice shape, size, call, and habitat together before naming what you see. Reading a failed print works the same way. The direction of a shift, the layer at which it appears, the pattern of gaps across a surface, the shape of a lifted corner, each detail narrows the list of suspects. The goal is not instant certainty, it is a shorter, smarter list of things to test one at a time.
Layer shifts and mechanical clues
A layer shift happens when one or more layers end up printed in a different position than the layers below or above them. Prusa's knowledge base describes layer shifting as layers displaced from the position the model actually intended, and names belt tension and unsecured pulleys as common causes[1]. The defect is usually easy to spot visually: a tower or vase that looks fine up to a certain height, then suddenly offsets sideways and continues printing from the new, wrong position. Unlike warping or under-extrusion, a layer shift is a positional error, not a material error, which immediately points investigation toward motion and mechanics rather than temperature or flow.
The direction and shape of the shift carries real information. A shift that happens in a single clean step, where every layer after a certain point sits offset by the same fixed amount in one direction, usually means something slipped once and then held its new position. A shift that grows gradually, drifting a little more with every layer, points toward something loosening progressively rather than failing all at once. A shift that recovers after a layer or two, where the model briefly jumps and then returns close to its correct position, suggests a single transient obstruction rather than a persistent mechanical fault. These three shapes map to different repair paths, which is why looking only at "it shifted" and skipping the shape wastes the clue sitting right in front of you.
A sudden, clean offset that holds steady afterward is the classic signature of a belt skipping on a pulley, often because belt tension has loosened over time or was never set correctly. Toothed belts rely on consistent tension to keep every tooth seated; once tension drops below a threshold, a sudden load spike during a fast direction change can pop the belt over a tooth, and the carriage ends up permanently offset by that tooth's width. Checking belt tension by hand, comparing the resistance and pitch of both belts on an axis, and retensioning evenly is the first and cheapest test. A belt that feels noticeably looser than its counterpart on the same axis is a strong candidate before touching any slicer setting.
A gradual, creeping shift that worsens over the height of the print more often traces back to a loose pulley or eccentric nut rather than belt tension itself. An unsecured pulley, as Prusa's guidance names directly, can let the pulley slip around the motor shaft while the belt stays seated on its teeth, which produces a slow drift instead of a sharp jump[1]. An eccentric nut on a V-wheel carriage that has backed off slightly will let the carriage rock under acceleration instead of tracking a rigid line, and that rocking accumulates into a visible lean rather than a crisp step. Physically wiggling the carriage by hand, with the printer powered off, often reveals this kind of play before it shows up as a drifted print.
A single-layer slip that recovers points away from the belt and pulley system entirely and toward something blocking motion briefly: a stray piece of filament caught in a linear rail, a wire snagging on a cable chain at the extreme of its travel, or a print fan shroud brushing a part at one specific position. These obstructions tend to repeat at the same X or Y coordinate every time the toolhead passes through it, so checking whether the shift happens at a consistent position on the bed, rather than a consistent layer height, is a useful test. If the shift always happens near the same physical spot on the bed regardless of which print or which height, the obstruction is almost certainly mechanical rather than settings-related.
Before concluding the cause is purely mechanical, rule out two settings-side possibilities that produce similar symptoms. The first is a travel speed or acceleration value set too aggressively for the printer's mass and rigidity, which can cause the same skipped-step behavior as loose belts even on a well-tensioned machine. The second is a stepper driver current set too low for the motor and load, which lets the motor lose synchronization with the commanded position under load, usually during fast infill or travel moves. Both of these sit closer to the motion scheduling work covered when discussing how Klipper schedules moves, but they are worth ruling out before spending time retensioning belts that were never the real problem.
The following decision tree offers a structured way to narrow down a layer shift from the shape of the defect to the most likely mechanical cause.
Diagnosing a layer shift by its shape
- Layer shift observed on a finished print
- Sudden clean offset, holds steady Check belt tension on the affected axis
- Tension feels loose Retension the belt evenly, reprint
- Tension feels fine Review travel acceleration and stepper current
- Gradual, worsening lean Check pulleys and eccentric nuts for play
- Play found Tighten the loose pulley or eccentric nut
- No play found Review travel acceleration and stepper current
- Single-layer slip, recovers Check for a consistent bed position across prints
- Position repeats Inspect cable routing and fan shrouds at that position
- Sudden clean offset, holds steady Check belt tension on the affected axis
Keep a short written log of where on the bed and at what layer height each shift occurs, because a single incident rarely tells you enough. If three separate prints all shift near the same corner of the bed, that consistency is more diagnostic than any single photograph. If the shift instead appears at random heights and positions across different prints, mechanical wear is less likely than a settings issue that applies uniformly, such as acceleration values pushed past what the frame can handle. This kind of pattern recognition across multiple failures, rather than a single defect, is the habit that separates a confident troubleshooter from someone guessing print to print.
One practical test worth running before assuming the worst is simply printing the same model again with no changes at all. If the shift does not reappear in the same place, the cause may have been transient, such as a loose cable that happened to snag once, rather than a persistent mechanical fault. If it reappears in the same place on the same model, the mechanical explanation strengthens considerably. This single repeat print costs little time compared to disassembling an axis on a hunch, and it is the kind of low-cost test that belongs early in any troubleshooting routine.
Layer shifts rarely show up gradually in the slicer preview the way under-extrusion sometimes can, because Orca Slicer has no way to predict a belt that will skip mid-print. This is a defect detectable only after the fact, from the physical object, which is exactly why learning to read its shape matters more here than for settings-driven defects that a careful baseline print might catch earlier. Treat every layer shift as new evidence rather than confirmation of a cause you already suspect, since two shifts that look similar at a glance can still have different root causes once you examine their direction and position closely.
Under-extrusion and its many sources
Under-extrusion describes a print that receives less plastic than the slicer intended for a given area, which Prusa's guidance frames directly as missing material in printed layers[1]. The visible symptoms vary with severity and location. A mild case shows as thin gaps or pinholes between infill lines, or a top surface that looks slightly rough with faint lines showing through. A severe case shows missing walls entirely, gaps you can see light through, or a nozzle that intermittently stops extruding while still moving, leaving visible skips in a single layer. Because the symptom can range from barely noticeable to catastrophic, severity itself is a useful first clue about where to look.
The range of possible causes is genuinely wide, and Prusa's own guidance lists slicer settings, nozzle condition, extruder gears, and filament itself among the contributing factors[1]. That breadth is exactly why under-extrusion is a poor candidate for guessing a single fix. A flow ratio set too low in Orca Slicer produces the same visible gaps as a partially clogged nozzle, and both produce symptoms similar to an extruder gear slipping on filament it cannot grip firmly enough. Treating any one of these as the automatic answer, without checking the others, is how a printer owner ends up chasing a flow ratio number that was never the actual problem.
The table below organizes the most common sources of under-extrusion by where the cause originates, which helps narrow investigation before touching any single setting.
| Source area | Typical clue | First check |
|---|---|---|
| Slicer settings | Gaps uniform across the whole print, every layer affected equally | Review flow ratio and line width settings in Orca Slicer |
| Nozzle condition | Extrusion starts fine then tapers off mid print, or clicks heard at extruder | Inspect nozzle for partial clogging or wear |
| Extruder mechanism | Filament grooved or chewed where the gear bites it | Check idler tension and gear cleanliness |
| Filament itself | Inconsistent diameter, brittle feel, or old stock | Measure diameter at several points along the spool |
Start with the filament itself, because it is the cheapest and fastest thing to rule out. Measuring the filament's diameter with calipers at several points along a meter or two of spool will reveal whether it varies noticeably, since a filament that swings outside its nominal diameter feeds inconsistently regardless of how well the rest of the printer is tuned. Also check whether the filament feels unusually brittle or snaps easily when bent, a sign it has absorbed moisture from the air, which is covered more fully alongside stringing diagnosis since moisture affects multiple defects at once. A quick filament check takes minutes and can eliminate an entire category of suspects before any disassembly.
Next, physically inspect the extruder's grip on the filament. Open the idler and look at the section of filament that has just passed through the gear teeth. A healthy grip leaves light, even tooth marks. A grip that is slipping leaves a visibly chewed or flattened groove, often pale where the material has been ground away repeatedly without advancing, because the gear is spinning faster than the filament is actually moving forward. This points toward insufficient idler tension, a dirty or worn extruder gear, or resistance further down the path (a stiff PTFE tube, a kinked bowden tube, or a partially blocked nozzle) that is fighting against the extruder's grip strength.
If the extruder's grip on the filament looks healthy, the next suspect is the hotend itself, specifically a nozzle that is partially obstructed. A clean, unobstructed nozzle at a correct flow ratio extrudes a consistent bead at the expected rate. A partial clog restricts that flow unevenly, sometimes producing steady but thin extrusion and sometimes producing extrusion that starts strong and tapers as backpressure builds. A cold pull, where filament is heated, then cooled slightly, then pulled through the nozzle to drag debris out with it, is the standard low-risk way to check this without fully disassembling the hotend. If the pulled filament shows a clean tip, the nozzle was likely not the bottleneck. If it shows charred material or an irregular tip, a partial clog was almost certainly contributing.
Warning: Do not chase flow ratio first
A flow ratio adjusted in Orca Slicer compensates for the average amount of material a nozzle delivers, not for a mechanical fault. If the actual problem is a slipping extruder gear or a partially clogged nozzle, raising flow ratio to compensate will mask the symptom on one print and fail unpredictably on the next, once the clog worsens or the gear wears further. Confirm the hardware is sound before touching flow ratio again.
Only once filament, extruder grip, and nozzle condition have been checked and found reasonably sound does it make sense to revisit the slicer settings themselves, including flow ratio and extruder rotation distance, both covered in depth in their own dedicated chapter. A uniform under-extrusion that appears identically across an entire print, on every wall and every infill line, with no tapering or intermittent skipping, is the pattern most consistent with a settings-level cause rather than a mechanical fault, since a mechanical issue usually introduces some irregularity over the height or duration of the print.
Location on the model matters as much as severity. Under-extrusion concentrated only on overhangs or bridges often has a different explanation than under-extrusion spread evenly across vertical walls, since overhangs introduce cooling and support-related variables that a flat wall does not face. Under-extrusion that appears only at the very start of a print, then disappears, points toward a cold nozzle not yet fully at temperature or a first layer not properly primed, rather than a systemic flow problem. Separating "everywhere" from "only in specific features" narrows the list before a single test print is even run.
A simple diagnostic print worth keeping on hand is a single-wall cube or cylinder with no infill and no top layers, printed slowly, so any inconsistency in extrusion is immediately visible on a surface with nothing else to distract from it. Running a finger lightly along the printed wall (once cooled) can reveal thin spots that are hard to see under normal lighting. Comparing this test print before and after any single change, such as cleaning the extruder gear or performing a cold pull, isolates whether that change actually mattered, which is the same one-variable discipline covered more systematically in the troubleshooting routine chapter.
Keep in mind that under-extrusion and over-extrusion sometimes get confused when a print looks rough rather than obviously thin. An over-extruded print shows bulging, blobby surfaces and poor dimensional accuracy on the oversized side, while under-extrusion shows gaps, pinholes, and surfaces that are dimensionally undersized. If unsure which is happening, measuring a printed wall's thickness with calipers against the intended wall thickness from the slicer settles the question quickly, rather than guessing from visual roughness alone.
The practical lesson is sequencing: check the cheap and reversible things first (filament condition, extruder grip, nozzle cleanliness) before touching settings that require recalibration and retesting. This order saves time because mechanical faults, once found, are usually quick to fix, while a slicer setting changed to compensate for a mechanical fault creates a profile that will not transfer correctly once that fault is actually repaired.
Warping and bed adhesion questions
Warping happens when a printed part lifts, curls, or detaches from the bed as it cools, most visibly at corners and edges of large flat prints. The underlying mechanism is thermal contraction: plastic deposited hot shrinks slightly as it cools, and if the bottom layer is held firmly to the bed while the upper layers are already cooling and contracting, the resulting internal stress pulls the corners upward. The larger and flatter the first layer, and the more that material tends to shrink as it cools, the more pronounced this effect becomes. This is why warping shows up far more often on wide, flat parts than on small or rounded ones, since a small footprint has less leverage to lift and less accumulated stress to begin with.
The illustration below shows the characteristic shape of corner warping, with the lifted edge and gap clearly visible against the bed surface.

Reading the severity of warping from the gap size is a useful first triage step. A barely visible lift, just a hair's width at the very corner, suggests a mild adhesion issue that a cleaner bed surface or a slightly adjusted first layer might resolve on its own. A lift of several millimeters, enough that the corner has fully detached and curled well off the bed, suggests either a severe cooling imbalance, a bed temperature too low for the material, or a first layer that never bonded properly to begin with. A print that has fully popped off the bed partway through, with the whole object displaced from its original position, has moved past "warping" into complete adhesion failure, which points even more strongly toward bed preparation or first-layer settings than toward anything happening later in the print.
Bed adhesion and warping are closely related but not identical questions, and separating them helps target the right fix. Adhesion is about whether the first layer bonds to the bed at all. Warping is about whether that bond, once made, can resist the stress of later layers cooling and contracting. A print can have excellent adhesion and still warp if the material shrinks aggressively and the environment cools it unevenly. A print can have poor adhesion and warp almost immediately, lifting within the first few layers, long before enough material has been deposited for contraction stress to be the main driver. Noticing when in the print the lifting began, immediately or only after many layers, helps tell these two apart.
The matrix below frames warping and adhesion issues along two axes: when the lifting begins, and how far it has progressed, to help orient which category a given failure falls into.
| Lifts early (first few layers) | Lifts late (after many layers) | |
|---|---|---|
| Mild (slight curl, still attached) | Weak initial bond under mild stress Light first-layer lift at one corner, part still printable | Contraction stress overcoming a strong bond Corners lift late as upper layers cool and shrink |
| Severe (detached or displaced) | Adhesion failure before the print can establish Part detaches or shifts within the first layers | Combined adhesion and contraction failure Part fully pops off partway through printing |
For a failure sitting in the early-lift, mild quadrant, the first and cheapest thing to check is bed cleanliness, since skin oils and dust are among the most common reasons a first layer fails to bond despite otherwise correct settings. A bed wiped with isopropyl alcohol just before printing often resolves this category entirely without touching a single slicer value. For failures in the early-lift, severe quadrant, where the part detaches or shifts within the first few layers, bed temperature and first-layer height are the next things to check, since a bed that is too cool for the material or a first layer squished too thin or too thick both reduce the contact area available for bonding.
For failures in the late-lift, mild quadrant, where the bond holds initially but corners creep upward as the print proceeds, cooling behavior is the more likely driver than adhesion itself. Uneven cooling, such as a part cooling fan that reaches one side of a wide print more than the other, or a drafty room pulling heat away unevenly, creates asymmetric contraction that pulls corners up even when the bed bond was never the weak point. Enclosures and draft shields address this category directly by keeping the ambient temperature around the print more consistent, which reduces the thermal gradient driving the contraction stress in the first place.
For failures in the late-lift, severe quadrant, where a part fully detaches or shifts position partway through an otherwise long print, both categories of cause are likely compounding each other, and isolating which one dominates takes a bit more deliberate testing. Printing a smaller test piece with the same material and bed settings, but a much smaller footprint, removes most of the contraction stress while keeping the adhesion conditions identical. If the smaller piece prints cleanly, contraction stress on the larger geometry was the dominant factor. If the smaller piece also struggles to stay down, the adhesion itself needs attention first, regardless of part size.
Material choice itself deserves a mention even though settings and bed preparation dominate most fixes, since some filaments contract on cooling far more aggressively than others by their chemical nature. A filament known for pronounced shrinkage will warp more readily on a wide flat part even with excellent bed preparation, simply because there is more stress to manage in the first place. This does not mean settings are irrelevant for that material, but it does mean expectations should adjust: a filament prone to strong contraction may always need a brim, an enclosure, or a slower first layer on large parts, regardless of how well the rest of the printer is calibrated.
The broader habit worth carrying forward from both this section and the ones before it is resisting the pull toward a single, universal explanation for a visual defect. A lifted corner, a gap between walls, or a sideways jump in a tower each have a handful of plausible causes, and the fastest way to a reliable fix is examining the shape, location, and timing of the defect closely enough to shorten that list before testing anything. The troubleshooting routine later in the book builds directly on this habit, turning the pattern recognition developed here into a structured, repeatable process that changes one variable at a time and keeps a record of what each test actually proved.
Chapter 8: Walls, Infill, and Supports
Wall count, infill density, and support style are the three levers that determine whether a part survives its intended use, yet most users leave them at defaults they inherited from a stranger's profile. Those defaults were tuned for someone else's printer, someone else's filament, and most likely a part with completely different demands than the one sitting in the build plate preview right now. A phone stand and a load-bearing bracket should never share the same wall count or infill density, but a copied profile treats them identically. The settings covered in earlier chapters, flow ratio, pressure advance, retraction, control how cleanly material gets deposited. Wall count, infill density, and support style control how much material gets deposited and where, which is a design decision, not a calibration problem.
This distinction matters because it changes how to think about troubleshooting. A stringing issue or a layer shift has a root cause to hunt down and fix. Wall count and infill density do not have one correct value to discover. They have a correct value for a specific purpose, and that value shifts depending on whether the part needs to look good, hold weight, flex, resist impact, or print quickly as a throwaway prototype. Treating these like calibration targets leads to wasted time chasing a number that does not exist. Treating them like design trade-offs leads to faster, more deliberate decisions.
Supports fall into a slightly different category because they interact directly with surface quality and the slicing pipeline's handling of overhangs. A support structure is a temporary scaffold, printed in the same material (usually) as the part, that holds up geometry the printer cannot otherwise bridge. Getting support settings wrong does not just waste material and print time, it can leave a scarred, rough surface exactly where appearance matters most, or it can let a critical overhang sag and fail entirely. Like walls and infill, support choices depend on the part's geometry and purpose, but they also carry a removal step that walls and infill do not, which adds its own set of trade-offs.
Wall count, infill density, and support style interact with each other more than they first appear to. A part with thick walls and sparse infill behaves differently under load than one with thin walls and dense infill, even if the outer dimensions and total print time are similar. A tall, thin spike without support will keep failing no matter how perfectly walls and infill are tuned, because the defect being chased there is a geometry problem, not a density problem. Thinking about all three together, before slicing, saves the kind of back-and-forth where one setting gets endlessly adjusted while the real fix was in a different setting entirely.
Choosing wall count for strength
Wall count refers to the number of solid perimeter loops the slicer prints around the outside of each layer before switching to infill for the interior. OrcaSlicer documents wall loops as affecting strength, rigidity, how much infill pattern shows through the surface (sometimes called infill ghosting), and overall print time[1]. That single setting touches four outcomes at once, which is exactly why it deserves more attention than leaving it at whatever a downloaded profile specified.
Think of walls as the shell of the part and infill as its internal skeleton. For many geometries, especially anything that gets gripped, dropped, flexed, or loaded along its outer surface, the walls do more structural work than the infill hiding inside them. A thin-walled vase with twenty percent infill and a thick-walled vase with the same infill will behave very differently if squeezed, because the load travels through the solid perimeter first. This is the opposite of the common assumption that infill percentage is the main strength knob. For many parts, wall count moves the needle further.
A practical way to think about wall count is by category of part, not by a single number applied to everything. A decorative figurine, printed purely to look good, rarely needs more than two walls since it is not going to be loaded or stressed. A functional bracket or mounting arm that will carry real force benefits from more walls, often enough to make the wall thickness itself the primary strength contributor, with infill playing a secondary role. A part that will be drilled, tapped, or have screws driven into it needs enough wall thickness at the fastening point to hold the bite, which sometimes means a locally thicker wall even when the rest of the part is thin.
Consider a simple test case: a smartphone mount arm that clips onto a car vent. It takes repeated small flexes every time it is clipped in and out, so fatigue resistance matters more than raw stiffness. A wall count on the higher end gives that arm more solid material to flex through without cracking at a thin perimeter, compared to a thin-walled version with the same overall infill. The difference will not show up on day one. It shows up after a few weeks of repeated use, which is exactly why copied profiles tuned for appearance rather than durability tend to produce parts that look fine in photos and fail in practice.
Increasing wall count is not free. Each additional wall loop adds print time and material, and past a certain point, adding more walls provides diminishing strength return because the interior infill pattern starts contributing less relative to an already-thick shell. There is also a geometric limit: on a very thin part, requesting more wall loops than physically fit across the thickness just gets reduced or merged by the slicer, so checking the sliced preview after changing wall count is worth doing rather than assuming the number requested is the number produced.
The table below sketches a rough decision aid for wall count across typical part categories, understanding that specific geometry and load direction will always shift the ideal number.
| Part purpose | Typical wall count | Why |
|---|---|---|
| Decorative, display only | 2 | Appearance and speed matter more than load |
| Light-duty functional (clips, hooks) | 3 | Needs some flex and drop resistance |
| Load-bearing or fastened (brackets, mounts) | 4 or more | Shell carries most of the structural load |
| Vase or container holding liquid or light weight | 3 to 4 | Needs wall rigidity, leak resistance less relevant to walls directly |
Wall count also interacts with the infill ghosting effect mentioned in the OrcaSlicer documentation, where the internal infill pattern becomes visible as a faint texture on the outer surface[1]. This happens because a thin wall flexes slightly over the ridges of the infill pattern as it is extruded, or because heat from the infill below telegraphs through a thin shell during cooling. Adding another wall loop puts more solid material between the visible surface and the internal structure, reducing how much of that pattern telegraphs through. So a wall count increase intended purely for cosmetic smoothness is a legitimate reason on its own, separate from strength.
A common mistake is reaching for infill density to fix a problem that is actually a wall count problem. If a part feels like it flexes or cracks along its outer surface under light pressure, increasing infill from a low to a moderate percentage often produces a smaller improvement than expected, because the load was never reaching deep into the infill in the first place. Bumping wall count by even one loop, frequently produces a more noticeable improvement in exactly that kind of surface-level rigidity, at a lower material and time cost than a large infill increase.
The opposite mistake also happens: printing display-only parts with excessive wall counts inherited from a functional-part profile, which wastes filament and print time with no benefit since the part is never going to be stressed. Reviewing wall count every time a new type of part gets sliced, rather than trusting whatever profile was last used, avoids both of these wasted-effort directions.
Tip: Quick wall count check
Before slicing a new part, ask what it will actually experience: being dropped, flexed, fastened, loaded, or just looked at. Set wall count for that specific stress, not for whatever the last project used.
Testing wall count changes on a small sample section of a large or expensive print beats committing the full print time to a guess. Slicing the same geometry twice, once at a lower wall count and once at a higher one, and comparing the estimated print time in Orca Slicer gives a concrete sense of the trade-off before material gets committed. For a large print that will take many hours, this five-minute comparison step is cheap insurance against finding out too late that the part flexes more than expected.
Wall count changes also affect how a part responds to the extrusion settings discussed in earlier chapters. A part with more wall loops has more total perimeter length per layer, which means flow ratio and pressure advance errors compound across a larger printed area. This is not a reason to avoid more walls, but it is a reason to confirm flow ratio and pressure advance are already dialed in on the baseline print before relying on wall count changes to fix a strength problem, since an under-extruded wall is a weak wall no matter how many loops are specified.
Finally, wall count should be considered alongside wall line width, even though width itself is a separate setting. A wider wall line, printed through a larger nozzle or a wider extrusion width setting, adds strength per loop compared to a thin line, which means the right wall count for a given strength target depends partly on what line width is already in use. Two printers running different nozzle diameters will need different wall counts to hit the same effective wall thickness, which is one more reason copied profiles from someone else's hardware do not translate cleanly.
Infill density and pattern trade-offs
Infill density is the percentage of a layer's interior that gets filled with structural material rather than left hollow, and infill pattern is the geometric shape that material takes. OrcaSlicer describes infill as an internal structure that can be adjusted to balance material use, print time, and part strength[2], which frames it correctly as a three-way trade rather than a single dial to maximize. Pushing density toward one hundred percent does not simply make a part stronger in every direction. It makes it heavier, slower to print, and in many cases only modestly stronger for the specific load the part will actually experience.
Density and pattern are two separate decisions that get conflated too often. Density answers how much material goes inside
, while pattern answers how is that material arranged
. A ten percent gyroid infill and a ten percent grid infill use roughly the same amount of material and print in a similar amount of time, but they distribute strength very differently across directions, which matters more for some parts than others.
Patterns fall broadly into two behavior groups. Patterns like grid and honeycomb print as repeating two-dimensional shapes stacked layer after layer, which makes them fast to print and strong primarily along the directions aligned with the pattern, but weaker between layers where the printed structure relies on layer adhesion. Patterns like gyroid print as a continuously curving three-dimensional structure that changes orientation as it rises through the part, which spreads strength more evenly in all directions at the cost of a somewhat more complex, and sometimes marginally slower, toolpath.
The illustration below shows what these patterns actually look like once a part is sliced open, since none of this geometry is visible on a finished, closed print.

A fifth pattern worth knowing is lightning infill, which does not try to fill space evenly at all. Instead it grows thin branching supports from the top surface downward, concentrating material only where it is needed to hold up the layers directly above it. This makes it extremely fast and light, well suited to parts that mostly need to resist sagging during printing rather than carry load afterward, such as a decorative item or a prototype that will never be stressed. Using lightning infill on a part that needs to survive being sat on or clamped is a mismatch, since it deliberately skips filling most of the interior.
Choosing a density for a given part works best by thinking about the direction of expected load rather than reaching for a flat percentage. A part that will be compressed from the top, like a small stand holding a monitor, benefits from a pattern and orientation that resists vertical crushing. A part that will be twisted or bent, like a hook or a clip, benefits more from a pattern that holds up well under shear and tension across its infill, which tends to favor the three-dimensional patterns like gyroid over the flatter grid pattern at equivalent density.
The matrix below frames the choice as two axes: how much the part needs to resist load, and how much print time and material matter for this particular job. Most real decisions land somewhere between the extremes, but the quadrants help identify a starting point before fine-tuning.
| Low load demand | High load demand | |
|---|---|---|
| Speed and material matter most | Throwaway test prints 0-5% lightning, Minimize time and waste | Light functional parts 15-20% gyroid or grid, Everyday durability |
| Time and material less critical | Display pieces 5-10% grid or lightning, Clean look, little load | Load-bearing brackets 30-50% gyroid, Multi-directional strength |
Print time and material cost scale with density in a way that is worth seeing plainly before committing to a high percentage out of caution. Doubling infill density roughly doubles the material and time spent on the interior structure, though not the whole print, since wall and top/bottom layers stay constant. The chart below illustrates this relationship for a representative part, showing how print time climbs as density rises.
| Infill density | Print time | |
|---|---|---|
| 10% | 2.1 | |
| 20% | 2.6 | |
| 40% | 3.5 | |
| 60% | 4.3 | |
| 80% | 5.0 |
Notice how the time increase flattens somewhat at higher densities rather than growing in a straight line, since walls, top and bottom layers, and travel moves stay fixed regardless of interior density. This flattening is a useful reminder that jumping from twenty to forty percent density often buys meaningfully more strength for a proportionally smaller time cost than the jump from sixty to eighty percent, which tends to add weight and time without a corresponding strength gain for most parts.
A common troubleshooting trap is treating a weak part as an infill density problem when it is actually a pattern mismatch. A hook printed with grid infill oriented so its lines run parallel to the pulling direction may fail at a density where a gyroid pattern, or even the same grid pattern rotated differently, would have held. Before increasing density as a fix, check whether the pattern's natural strength direction lines up with how the part will actually be loaded, since that alignment often matters more than an extra ten percent of material.
Top and bottom solid layers deserve a brief mention here since they interact with infill density directly. A low infill density print still needs enough solid top layers to fully bridge and close over the infill pattern below, or pinholes and a rough top surface will appear. If a flat top surface looks rough or shows gaps at low infill density, the fix is usually adding one or two more top solid layers rather than raising the overall infill percentage, since the two settings solve different visible problems.
Support type, density, and removal
A support type in Orca Slicer determines the overall structure generated under overhangs and bridges that the printer cannot otherwise form in mid-air. The two broad categories are normal supports, which build simple columns or a grid directly from the bed or from the part itself up to the overhang, and tree supports, which grow branching trunks that reach toward overhangs from fewer contact points on the bed. Choosing between them is mostly a question of geometry and how much surface contact is acceptable, since each leaves a different kind of mark where it touches the part.
Normal supports work well for simple geometric overhangs, flat shelves, and situations where the support needs to touch a wide, flat area underneath the part. They are predictable and easy to reason about, since they build straight up from whatever surface needs support. Tree supports work better for complex organic shapes with scattered overhang points, such as a figurine's outstretched arm, because a single branching trunk can reach several nearby overhang points without filling the entire space beneath the part with material, saving both time and the awkward removal of a dense support block from an area with limited access.
A frequent misstep is using heavy supports on a part that could instead be reoriented to reduce overhangs. Before ever generating supports, checking whether rotating the part on the build plate eliminates or shrinks the unsupported overhang often removes the support problem entirely rather than solving it with more support material. A design printed flat versus printed standing upright can go from needing extensive supports to needing almost none, purely through orientation, which is worth testing in the slicer preview before accepting default supports.
Support density, usually set as a percentage similar to infill, controls how solid the support structure itself is. A low density, sparse support uses less material and comes off more easily, but it may not hold rigid enough to keep a large overhang from sagging during printing. A high density support holds overhangs more reliably but takes longer to print and is harder to snap away cleanly afterward, sometimes leaving more surface damage in the process. For most overhangs, a moderate density in the lower-middle range balances these two concerns, with increases reserved for overhangs that are failing to hold their shape at the lower setting.
The setting that determines how cleanly a support separates from the finished part is the support interface distance, which Orca Slicer exposes as a vertical gap setting between the support's top interface layer and the model's surface[3]. This small gap is the entire difference between a support that snaps away cleanly and one that fuses to the part so firmly that removing it tears chunks out of the surface. Too large a gap and the overhang sags into the empty space before reaching solid support, defeating the purpose of adding support in the first place. Too small a gap and the support layer bonds to the part almost as strongly as the part bonds to itself.
The illustration below shows this interface zone directly, since it is the physical area readers have to manage every time a support gets peeled away.

Finding a workable support interface distance for a given filament and nozzle setup is a small test worth running once rather than guessing on every print. Print a simple overhang test piece, like a small bridge with a steep unsupported angle, at a few different interface distance values and compare how easily the support peels away and how rough the resulting surface looks underneath. A slightly larger gap that still holds the overhang's shape, paired with an easy clean removal, beats a tight gap that leaves a damaged surface requiring sanding afterward.
Material choice affects this more than many people expect. A support printed in the same filament as the part tends to bond more strongly at the interface than a hypothetical dissolvable or different-material support would, which is why single-material setups rely more heavily on getting the interface distance right. For printers running a single extruder and one filament, which covers most setups described in this book, the interface distance setting carries all of the responsibility for clean removal that a dual-material dissolvable support system would otherwise handle automatically.
Supports also interact with wall count and infill in one specific way worth flagging. A part printed with very sparse infill can sag slightly under its own support contact points if the top layers above the infill are thin, since there is less solid structure resisting the small compressive force of support contact during printing. If a part with low infill density shows unexpected dents or depressions exactly where supports touched it, increasing top solid layer count, not infill density, usually resolves the issue, since it is the same top-surface thickness problem mentioned in the infill section, triggered this time by support contact rather than bridging.
A bracket meant to carry real load, printed with four walls, a moderate gyroid infill aligned to resist the expected pulling direction, and tree supports set with a tested interface distance, represents the kind of deliberate, purpose-matched decision this chapter has been building toward. None of those three settings were copied from a stranger's profile. Each one was chosen because of what the part needs to do, which is the habit that separates a printer owner running someone else's numbers from one running a setup they actually understand.
Chapter 9: Klipper Macros for Repeatable Tests
A calibration test you run by hand once is an experiment; a calibration test encoded in a macro is a repeatable instrument, and only the second one lets you trust the result next month. When you tune flow ratio by typing commands into a console, adjusting a setting, slicing a new file, and eyeballing the result, you are relying on memory and habit to keep every session the same. Memory is unreliable. You forget which temperature you started at, whether you cleared the nozzle the same way, or if the bed was at the same height. A macro removes that guesswork by turning a sequence of actions into a single named command that behaves identically every time it runs.
This matters because calibration is not a one-time event. A new spool of filament, a replaced nozzle, or a rebuilt hotend can shift your flow ratio, pressure advance, or extruder rotation_distance enough to matter. Without a consistent way to re-test, you either skip re-calibration (and live with drifting quality) or you re-invent your test procedure from scratch, often slightly differently than before, which makes it hard to tell whether a new result reflects a real change or just a different test setup. Klipper macros solve this by making the test itself a fixed, saved object you can run on demand.
The payoff compounds across the whole book. The flow ratio test, the pressure advance test, and the temperature tower all benefit from a macro that heats the nozzle to a known state, primes the extruder the same way, and executes the same pattern of moves every time. Once that macro exists, re-running a calibration test after a filament swap takes a few minutes instead of an afternoon. You also gain something subtler: a written record of exactly what the test does, which becomes your reference when a result looks strange and you want to check whether the test itself behaved as expected.
None of this requires programming experience. Klipper macros are built from G-code and a small templating language layered on top of it, and most calibration macros reuse a handful of patterns: heat, move, extrude, wait, repeat. This chapter builds that vocabulary from the ground up, then applies it directly to the calibration tests already covered, and finishes with a simple way to log results so that a test run in week one stays comparable to one run in week ten.
Writing reusable G-code macros in Klipper
A Klipper macro is a named block of G-code commands that you define once in your printer's configuration and then call like any other command. Instead of typing a dozen lines into the console every time you want to prime the extruder before a test, you type one word, and Klipper runs the whole sequence. Klipper macros can contain reusable command sequences and use template evaluation and macro parameters, which means a macro is not just a fixed script but something that can adapt its behavior based on values you pass to it[1]. That combination, reusability plus parameters, is what makes macros useful for calibration rather than just convenience.
A macro is defined in the printer configuration file using a section header and a block of G-code. Here is a minimal example that heats the hotend to a fixed temperature and waits for it to stabilize:
[gcode_macro PRIME_HOTEND]
gcode:
M104 S210
M109 S210
G1 E20 F300
Once saved, typing PRIME_HOTEND into the console or calling it from a print start sequence runs those three lines in order: set the target temperature, wait until it is reached, then extrude twenty millimeters of filament at a controlled speed, assuming absolute extrusion mode (M82) with the extruder position at zero. This alone is useful, but it is still a fixed script. The real value appears once you introduce parameters, which let the same macro behave differently depending on what you pass to it.
Macro parameters are placeholders filled in at call time, written inside curly braces using the template syntax Klipper provides. A parameter is referenced as params.NAME, and it is common to give it a default value in case the caller does not supply one. Rewriting the priming macro with a temperature parameter looks like this:
[gcode_macro PRIME_HOTEND]
gcode:
{% set temp = params.TEMP|default(210)|int %}
M104 S{temp}
M109 S{temp}
G1 E20 F300
Now calling PRIME_HOTEND TEMP=230 primes at 230 degrees, while calling PRIME_HOTEND with no argument falls back to the default of 210. This is the exact mechanism a temperature tower test or a flow ratio test needs: one macro, reused at every temperature or every flow value, with only the number changing between runs. The alternative, copying and editing a script by hand for each test point, is exactly the kind of inconsistency that makes two test sessions hard to compare.
Template evaluation extends beyond simple number substitution. Klipper's macro language supports conditionals, loops, and basic arithmetic inside the template blocks, borrowed from a common templating syntax. A macro can check a parameter and branch its behavior, for example skipping a bed-mesh step if a flag is not set, or looping a movement pattern a fixed number of times. For calibration purposes you rarely need anything elaborate. A conditional to supply a sensible default and a loop to repeat a priming move are usually enough. Reaching for complex logic inside a macro is usually a sign the test itself needs simplifying, not that the macro needs more code.
It helps to think of a macro as a small contract: given these parameters, it always performs these exact physical actions in this exact order. Keep that contract narrow. A macro that heats, waits, and primes is easy to trust. A macro that also levels the bed, homes all axes, and runs an input shaping check at the same time becomes hard to reason about when something goes wrong, because you cannot tell which part of the sequence caused an odd result. Build calibration macros as small, single-purpose blocks, and chain them together explicitly when you need a longer sequence.
One common beginner mistake is embedding a hard-coded value that should have been a parameter. If a macro always extrudes exactly 20 millimeters regardless of what a test calls for, re-using it for a different calibration pattern means editing the macro itself every time, which reintroduces the inconsistency macros exist to remove. The fix is almost always to expose the value as a parameter with a default, so that routine use is unchanged but flexibility is available when needed. The example below shows the extrusion amount and feedrate both exposed this way.
[gcode_macro PRIME_HOTEND]
gcode:
{% set temp = params.TEMP|default(210)|int %}
{% set amount = params.AMOUNT|default(20)|int %}
{% set speed = params.SPEED|default(300)|int %}
M104 S{temp}
M109 S{temp}
G1 E{amount} F{speed}
Another useful habit is naming macros for what they do rather than for the test they were first written for. A macro named PRIME_HOTEND is clearly reusable across the flow ratio test, the pressure advance test, and the temperature tower, because its job (heat and prime) does not change even though the surrounding test does. A macro named FLOW_TEST_STEP_3 locks you into one narrow use and invites duplication when the next test needs something almost identical.
Comments inside a macro cost nothing and save real time later. Klipper G-code treats a line starting with a semicolon as a comment, ignored at execution but visible when you reopen the configuration file months later. A short comment above a macro stating its purpose and expected parameters turns the configuration file into its own documentation, which matters more than it seems the first time you return to a macro you wrote during an afternoon of calibration and cannot remember the reasoning behind.
The checklist below captures the core habits that keep macros reliable as your library of them grows.
Habits for reliable calibration macros
- Give every macro a name that describes its action, not the test it was built for
- Expose values likely to change (temperature, speed, distance) as parameters with sensible defaults
- Keep each macro to one physical action or a short tightly related sequence
- Add a short comment above each macro stating its purpose and parameters
- Avoid hard-coding a number that a future test will need to change
- Test a new macro by running it once in isolation before chaining it into a longer sequence
Before moving to full calibration macros, it is worth testing parameter substitution on something harmless, like a macro that only moves the toolhead a short distance. Confirm that passing a parameter changes the behavior as expected and that omitting it falls back to the default without throwing an error. Catching a syntax mistake in a two-line test macro is far easier than debugging it inside a ten-step calibration sequence that also controls your hotend temperature.
With the mechanics of parameters and templating in place, the next step is combining them into macros that actually run a calibration test from start to finish, rather than performing a single supporting action within one.
Building calibration macros for consistent results
A calibration test macro differs from a simple utility macro in scope: it is meant to run an entire repeatable procedure, not just one supporting step. Consider the extrusion step that the flow ratio and rotation_distance tests share, where the goal is to push a fixed length of filament under identical conditions every time. A macro built for this purpose should heat the nozzle, prime it to clear any ooze or gaps, then extrude a precise, parameterized length at a controlled speed, and finally retract slightly to prevent ongoing ooze from distorting the measurement. Wrapping all of that into one call means every flow ratio test, whether run this week or next month, follows the identical sequence.
[gcode_macro FLOW_TEST]
gcode:
{% set temp = params.TEMP|default(210)|int %}
{% set length = params.LENGTH|default(100)|int %}
{% set speed = params.SPEED|default(300)|int %}
M104 S{temp}
M109 S{temp}
G92 E0
G1 E{length} F{speed}
G1 E{length - 2} F{speed}
Reading through this macro line by line shows the structure: set the temperature and wait for it, reset the extruder's position counter to zero with G92 E0 so the following move represents an absolute, known extrusion length, then command the full length and finish with a small retraction. Marking a clean zero point before the test move is essential, because without it the extruder's internal position may carry over from a previous operation and quietly skew your measurement. This single detail, easy to forget when typing commands by hand, is guaranteed every time once it lives inside the macro. Two Klipper details matter here. Klipper refuses an extrude-only move longer than the max_extrude_only_distance setting in the [extruder] section, which defaults to 50 millimeters, so either raise that setting or pass a shorter LENGTH. The final retraction line also assumes absolute extrusion mode, so add an M82 line before G92 E0 if your start G-code switches to relative extrusion with M83.
Pressure advance calibration benefits even more from macro automation, because the test pattern involves repeated direction changes at varying speeds, which is tedious and error-prone to type manually. A macro built for this purpose can accept a range of pressure advance values and a travel speed, then run a short back-and-forth pattern at each value, pausing briefly between runs so you can note which section of the printed pattern corresponds to which setting. The parameters here are not just conveniences, they are what make the test interpretable afterward, since you need to know exactly which pressure advance value produced which segment of the test print.
[gcode_macro PA_TEST_SEGMENT]
gcode:
{% set pa = params.PA|default(0.04)|float %}
{% set speed = params.SPEED|default(80)|int %}
SET_PRESSURE_ADVANCE ADVANCE={pa}
M83
G1 X20 Y20 F{speed * 60}
G1 X100 Y20 E2.7 F{speed * 60}
G1 X100 Y40 E0.7 F{speed * 60}
G1 X20 Y40 E2.7 F{speed * 60}
Calling PA_TEST_SEGMENT PA=0.02, then PA_TEST_SEGMENT PA=0.04, and so on across a sweep of values produces a series of identical movement patterns, each printed at a different pressure advance setting, making the corners directly comparable. The extrusion amounts assume a 0.4 millimeter nozzle and 0.2 millimeter layers, and every call prints over the same rectangle, so raise Z by one layer height between calls to stack the segments into a small test wall. Without a macro, achieving this consistency requires either manually re-typing the move sequence at each value (inviting small variations) or relying on a separate calibration tool, which may not match the specific travel pattern or speed you actually care about for your typical prints.
Consistency across sessions is the other half of the value macros provide. When a macro is saved in your printer's configuration, it survives printer restarts, firmware updates, and weeks of disuse, meaning the test you run today executes identically to the one you ran during your original calibration. This matters because calibration values drift: a new nozzle, a filament from a different manufacturer, or a mechanical adjustment can all shift the flow ratio or pressure advance you previously settled on, and copying a stale calibration macro ad-hoc introduces drift of its own if the procedure itself keeps changing between uses.
A practical structure for building out a small library of test macros is to separate supporting actions from test sequences, then chain them. A supporting macro like PRIME_HOTEND handles heating and priming. A test macro like FLOW_TEST or PA_TEST_SEGMENT calls the supporting macro internally, then performs its specific test pattern. This layering avoids duplicating the priming logic inside every test macro, so if you later refine how priming should work (say, adding a short pause after reaching temperature to let the hotend stabilize thermally), you update it in one place and every test macro benefits automatically.
[gcode_macro FLOW_TEST]
gcode:
{% set temp = params.TEMP|default(210)|int %}
{% set length = params.LENGTH|default(100)|int %}
PRIME_HOTEND TEMP={temp}
G92 E0
G1 E{length} F300
Testing a new calibration macro deserves the same caution as testing any new setting. Run it once with conservative, known-safe parameters before trusting it with an unattended sequence, and watch the first run closely to confirm the toolhead moves where expected and the extruder behaves as commanded. A macro with a typo in a feedrate value can send the toolhead moving far faster than intended, which is a mechanical risk as well as a wasted test. The decision tree below walks through a simple way to validate a new macro before relying on it for real calibration data.
Validating a new calibration macro before trusting its results
- Run the macro once with conservative parameters
- Watch the full sequence execute without intervening
- Matches expectation Behavior matches what the G-code lines describe
- Macro is ready for repeated calibration use
- Does not match Toolhead or extruder does something unexpected
- Re-check parameter names, defaults, and units in the macro (Re-test: return to "Run the macro once with conservative parameters")
- Matches expectation Behavior matches what the G-code lines describe
- Watch the full sequence execute without intervening
It is tempting, once macros are working, to build one large macro that runs an entire calibration session end to end: heat, prime, sweep through a full temperature tower, then a full pressure advance sweep, without pausing. Resist this for anything you intend to inspect between steps. A pressure advance test is only useful if you can see and measure each segment, which usually means pausing or printing distinct physical sections you can examine afterward. A single uninterrupted macro removes your ability to react to what you are seeing in real time, trading flexibility for a small amount of convenience.
A safer middle ground is a macro per test step, called manually or from a short script you control, so you retain the ability to stop between steps, inspect the part, or adjust a parameter based on what the current result shows. This mirrors the broader principle of changing one variable at a time: your macros should support stopping and observing, not just executing blindly from start to finish. Think of each macro as a single controlled action you can trigger at exactly the moment you choose, not as a fully autonomous test rig.
Once a set of test macros exists and has been validated, the final piece is making sure the data each test produces can be compared meaningfully across sessions, which depends less on the macros themselves and more on how you record what happened when they ran.
Recording results so tests stay comparable
A macro guarantees that the physical test is identical each time it runs, but that guarantee is wasted if the result is not recorded in a way you can compare later. Imagine running the flow ratio test in January, finding a value, and never writing it down anywhere except in your memory. After a nozzle replacement, you run the test again, get a different result, and have no way to tell whether this reflects the nozzle change, filament change, or whether your original 0.98 figure was even accurate. The macro did its job perfectly; the missing piece is a written record connecting each test run to its conditions and result.
The simplest reliable method is a plain text or spreadsheet log kept outside the printer, recording four things for every calibration test: the date, the macro and parameters used, the physical conditions (filament spool, nozzle, hotend), and the measured result. This does not need to be elaborate software. A spreadsheet with one row per test run, and columns for each of these fields, is enough to let you filter by filament type or sort by date and immediately see how a value has drifted over time.
| Date | Macro call | Filament | Measured flow ratio |
|---|---|---|---|
| 2024-01-14 | FLOW_TEST TEMP=210 LENGTH=100 | Spool A, dry | 0.98 |
| 2024-02-02 | FLOW_TEST TEMP=210 LENGTH=100 | Spool A, opened 3 weeks | 0.96 |
| 2024-04-09 | FLOW_TEST TEMP=215 LENGTH=100 | Spool B, new nozzle | 0.95 |
A log like this immediately raises useful questions. A drop in flow ratio on the same spool over time hints that filament moisture may be creeping in, since moisture is known to affect extrusion consistency. A further drop coinciding with both a new spool and a new nozzle means that entry alone cannot isolate which change caused the shift, a reminder that even a well-kept log still benefits from the one-variable-at-a-time discipline applied elsewhere in calibration work. The value of the log is not that it answers every question automatically, but that it preserves enough detail for you to ask the right follow-up question later.
Recording the exact macro call, parameters included, matters as much as recording the result. If the flow ratio test macro defaults change over time (say, you later adjust the default temperature), a log entry that only says FLOW_TEST without its parameters becomes ambiguous, since you cannot tell whether an old entry used the current default or a different one from months ago. Writing out the full call, such as FLOW_TEST TEMP=210 LENGTH=100, removes that ambiguity permanently, regardless of how the macro's defaults evolve afterward.
For pressure advance testing specifically, the log should also capture a reference to the physical test print itself, not just a single final number. Since the pressure advance test typically produces a printed pattern with several segments at different values, the useful record is a photograph of that pattern labeled with which segment used which value, stored alongside the written log entry. A single pressure advance number in a spreadsheet, divorced from the physical evidence that produced it, is far less useful than the same number paired with a labeled photo you can re-examine if a later test produces a surprising result.
Klipper itself can help with part of this record-keeping through its console history and through optional logging commands inside a macro. A macro can include a RESPOND command that prints a message to the console, which is useful for confirming which parameters a given run actually used, especially helpful when troubleshooting a macro that seems to behave inconsistently.
[gcode_macro FLOW_TEST]
gcode:
{% set temp = params.TEMP|default(210)|int %}
{% set length = params.LENGTH|default(100)|int %}
RESPOND MSG="Running FLOW_TEST at {temp}C for {length}mm"
PRIME_HOTEND TEMP={temp}
G92 E0
G1 E{length} F300
This kind of built-in confirmation is a small habit with an outsized benefit: it catches the case where a default silently applied because a parameter name was typed incorrectly, which would otherwise produce a confusing result that looks like a calibration problem but is actually a typo in the macro call. Seeing the confirmed temperature and length printed in the console before the test runs lets you catch that mistake immediately rather than after measuring a part that was never tested the way you intended.
Consistency in logging also means deciding, once, on the units and format you will use and sticking with them. If flow ratio is always recorded as a decimal (0.98) rather than sometimes as a percentage (98%), and pressure advance is always recorded to the same number of decimal places, comparing entries across months becomes mechanical rather than requiring mental conversion each time. This sounds like a minor detail, but small formatting inconsistencies are exactly the kind of friction that causes people to stop maintaining a log after a few entries.
Tip: Keep the log boring
A calibration log works best when it is unglamorous and consistent: same spreadsheet, same columns, same units, every time. The goal is not insight at the moment of recording, it is the ability to look back months later and reconstruct exactly what changed between two test results.
Over time, a maintained log becomes more valuable than any single calibration session, because it turns isolated test results into a timeline. A flow ratio that has drifted steadily downward over several spools might point to a wear pattern in the extruder gear, something no single test would reveal but a logged sequence of tests makes visible. This is the deeper reason macros and logging belong together: the macro guarantees each individual test is trustworthy, and the log turns a series of trustworthy tests into a trend you can actually act on, rather than a handful of disconnected numbers you half-remember.
The combination of reusable macros and a disciplined log is what finally makes calibration an ongoing practice rather than a one-time event performed during initial printer setup. A filament swap, a nozzle change, or a mechanical adjustment no longer means starting from zero. It means running the same trusted macro, adding one more row to a log that already has months of context behind it, and comparing the new result against a history that actually means something.
Chapter 10: A Repeatable Troubleshooting Routine
The difference between a printer owner who fixes problems and one who reprints and hopes is not experience. It is a method: change one thing, record what happened, decide what to change next. Someone who has printed for two years but never worked this way can still be stuck guessing at every new failure, while someone newer who follows a fixed sequence will often solve the same problem faster. The earlier chapters in this book gave the individual pieces: reading a defect, tuning flow ratio, calibrating pressure advance, measuring resonance, adjusting retraction. This chapter puts those pieces into one routine so a failed print stops being a mystery and starts being a short investigation.
A routine matters because print defects rarely announce their own cause. Stringing can come from retraction, temperature, or filament moisture. Blobbing at corners can come from pressure advance or from flow ratio. Without a fixed order of operations, it is tempting to change several settings at once, which erases any chance of knowing which change actually helped. That fixed sequence forces a single discipline: look, guess, isolate, test, record, decide. That discipline is what turns a pile of forum advice into a personal, defensible printer profile.
This is not a universal protocol handed down by any slicer or firmware project. It is a methodological synthesis built from how calibration guides describe testing in general: establish a baseline, change one suspected variable, observe the result, and write it down before moving on[1]. Nothing about it depends on a specific printer brand, nozzle size, or filament type. What it depends on is patience and a willingness to treat each print as a data point rather than a pass or fail verdict.
The goal is a printer profile and a filament profile that you can explain, line by line, because you tested each number yourself. That confidence is worth more than any copied settings file, because copied numbers only work until something in your setup differs from the person who shared them: a different hotend, a slightly worn nozzle, a damp spool. Your own profile travels with your printer because it was built on your printer.
Working through a failed print step by step
Start every troubleshooting session the same way: look at the print before touching any setting. Reading visual evidence on a failed print, covered earlier in this book, is the input to this routine, not a separate skill. Pick up the part, turn it in the light, and note exactly where the defect appears. Is it only at corners, only on the first layer, only after a long bridge, or everywhere? Location is a clue. A defect that only shows up at corners points toward pressure advance or cornering speed. A defect spread evenly across every surface points toward flow ratio, temperature, or a mechanical issue like a loose belt.
Once the location and shape of the defect are clear, write down a short description before guessing a cause. This single habit prevents a common mistake: jumping straight to the first setting that comes to mind because it fixed a similar-looking problem last time. A phrase like fine wispy strings between two islands, worse near the top of the print
is far more useful later than stringing
on its own, because it lets you compare today's print against tomorrow's after a change.
The next step is forming a short list of candidate causes, ranked by how likely they are given the defect's location and shape. For stringing, the list might be retraction distance, retraction speed, nozzle temperature, and filament moisture, in that order if the filament has been sitting open on a humid day. For corner blobbing, the list is pressure advance first, then flow ratio, then cornering speed in the slicer. Building this ranked list is where the content from earlier chapters earns its keep. The routine does not teach you what causes what. It teaches you what order to test things in once you already suspect a few candidates.
The decision tree below shows how the location of a defect narrows the starting point before any single-variable test begins.
Starting point by defect location
- Where does the defect appear?
- Only at corners or seams Suspect pressure advance or cornering speed
- Spread evenly across surfaces Suspect flow ratio or temperature
- Only between separated features Suspect retraction or filament moisture
- Only on the first layer Suspect bed leveling or first layer settings
With a ranked candidate list in hand, pick the single most likely cause and design a test that isolates it. This usually means reprinting a small, fast test object rather than the full failed part. A temperature tower, a retraction test tower, or a simple pressure advance pattern takes a fraction of the time a full model would take, and it rules a candidate in or out quickly. Resist the urge to test on the original large print again. A two-hour reprint that fails the same way tells you almost nothing new, while a fifteen-minute test object tells you exactly what changed.
After the test print finishes, compare it directly against the written description from the original failure. Did the defect disappear, shrink, or stay exactly the same? A defect that stays exactly the same after a targeted test is strong evidence that the candidate was not the cause, and it is time to move to the next item on the ranked list. A defect that shrinks but does not disappear suggests a real but partial cause, often meaning two factors are contributing together, such as both pressure advance and flow ratio being slightly off at once.
This step-by-step approach also protects against wasted material and time. Jumping straight to a full reprint after every guess burns filament and hours on failures that a small test could have ruled out in minutes. Reserve full prints for confirming a fix you are already fairly confident in, not for the exploratory phase. The steps below summarize this working sequence so it can be followed the same way every time a print fails.
Working a failed print
- Inspect before guessing - Examine the failed print under good light and note exactly where the defect appears and what it looks like.
- Write a short description - Record the defect in specific terms, such as location, severity, and whether it is consistent across the print.
- Rank candidate causes - List the one to three most likely settings or mechanical issues based on the defect's location and shape.
- Design a small test - Pick or print a fast test object that isolates the top candidate, rather than reprinting the full part.
- Compare and decide - Check whether the defect disappeared, shrank, or stayed the same, then move to the next candidate or confirm the fix.
A worked example makes this concrete. Suppose a vase-shaped print shows fine wispy strings only between the top rim and a small decorative loop near the base, with no strings anywhere else. The location (only between two distant features, not spread across flat surfaces) points first toward retraction rather than temperature, since temperature issues usually show up more broadly. The ranked list becomes retraction distance, then retraction speed, then filament moisture if the spool has been uncovered. A short retraction test tower, printed in minutes, either confirms retraction as the cause or clears it so attention moves to moisture.
It helps to keep a running note, even a simple one, of which candidates have already been tested and ruled out for a given printer and filament combination. Without this, it is easy to re-test the same setting twice across different sessions, especially weeks apart when memory fades. A simple text file or notebook entry with the date, the defect, the candidate tested, and the result is enough. This running note is the seed of the printer-specific knowledge this whole routine is meant to build.
Treat every failed print as information rather than as wasted effort, even when the part itself cannot be salvaged. A print that fails in a new way after a change still tells you something: either the first candidate was wrong, or it was right but something else is also contributing. Over several sessions, this attitude shift, from frustration to curiosity, is what separates owners who slowly build real understanding of their printer from owners who stay stuck making the same guesses indefinitely.
One caution worth stating directly: a single failed print rarely has one single, certain cause visible from a photograph alone. Several settings can produce similar-looking symptoms, and a mechanical issue can mimic a settings issue. The routine exists precisely because guessing from appearance alone is unreliable. Testing one variable at a time, covered in depth next, is what turns a plausible guess into a confirmed cause.
Finally, keep the test objects themselves consistent across sessions. Using the same small tower or pattern every time, rather than inventing a new test shape for each problem, makes results from different weeks genuinely comparable. This connects directly to the value of Klipper macros for repeatable calibration tests, covered earlier in this book, since a saved macro guarantees the same starting conditions every time a test is run.
Changing one variable at a time
The single rule that makes the entire routine work is variable isolation: change exactly one setting between tests, and nothing else. This sounds obvious stated plainly, but it is the rule most often broken under pressure, especially when a deadline looms and a print needs to succeed now. The temptation is to raise temperature, increase retraction, and lower print speed all in the same attempt, hoping that one of the three fixes things. If the next print succeeds, you still do not know which change mattered, which means the next unrelated failure starts the guessing over from zero.
Variable isolation requires defining, in writing, exactly what is changing before the test starts. Pick one number: nozzle temperature goes from one value to a lower one, or retraction distance goes from one value to a higher one, or pressure advance goes from one value to a higher one. Every other setting in the printer profile and filament profile stays exactly as it was. This includes settings that feel unrelated, such as print speed or cooling fan percentage, because a change there can mask or exaggerate the effect of the variable actually being tested.
A practical way to enforce this discipline is to duplicate the current filament or printer profile in Orca Slicer before making any change, giving the duplicate a name that records the single variable being tested, such as PLA-retraction-1.2mm-test. This naming habit does two things at once. It prevents accidentally overwriting the known baseline profile, and it creates a running history of exactly what was tried, in what order, without relying on memory. When a test succeeds, the working profile can be renamed to something permanent; when it fails, the duplicate can simply be deleted or kept as a record of what not to do.
The table below lays out how this discipline applies across four settings commonly involved in troubleshooting, showing what to hold fixed while each one is tested.
| Variable under test | Hold fixed | Good test object |
|---|---|---|
| Nozzle temperature | Flow ratio, retraction, speed, cooling | Temperature tower |
| Retraction distance and speed | Temperature, flow ratio, cooling | Retraction test tower with bridges |
| Pressure advance | Temperature, flow ratio, retraction | Pressure advance pattern with corners |
| Flow ratio | Temperature, retraction, pressure advance | Single-wall flow ratio cube |
Order matters as much as isolation. Testing settings in the wrong sequence can produce misleading results, because some settings depend on others being roughly correct first. Temperature and flow ratio should generally be settled before pressure advance, since an incorrect flow ratio can distort the cornering behavior that a pressure advance test is meant to reveal. Retraction tuning for stringing should come after temperature is reasonably dialed in, since excess heat alone can cause stringing that no amount of retraction adjustment will fully solve. Working through chapters in the order this book presents them, temperature and flow first, then pressure advance, then retraction, then input shaping, mirrors a sensible testing order for this reason.
It helps to think of each setting as sitting on its own axis of extrusion behavior, even though in practice they interact. Flow ratio controls how much material comes out overall. Nozzle temperature controls how easily that material flows and bonds. Retraction controls what happens at the nozzle during travel moves. Pressure advance controls how extruder pressure is managed during acceleration and deceleration. Treating them as separate axes, tested one at a time, is what makes the interactions manageable instead of overwhelming.
A concrete example shows why skipping this discipline backfires. Imagine a printer producing both mild stringing and mild corner blobbing at the same time. An owner who raises retraction distance and lowers pressure advance in the same test run might see both defects improve slightly. But because two variables moved together, there is no way to know whether retraction fixed the stringing on its own, whether pressure advance fixed the blobbing on its own, or whether some unexpected interaction between the two produced the improvement. If a future print made from a different filament exhibits similar symptoms, none of this combined result can be reused with any real confidence.
Contrast that with isolated testing: first adjust retraction alone, print the stringing test, and confirm the strings are gone or reduced. Then, with retraction locked in, run the pressure advance test and confirm the corner blobbing separately improves. Now both fixes are independently confirmed, and if a different filament later strings again, you know immediately that retraction is the place to look first, not pressure advance, because stringing comes from travel moves and pressure advance only acts during printing moves.
Isolation also applies across print sessions, not just within one. If a test print is run today with a slightly different ambient temperature, a different time since the last nozzle cleaning, or a freshly opened spool versus one left out overnight, those are variables too, even though they feel outside the slicer. Filament moisture in particular can silently undo a retraction test, since damp filament strings regardless of how well retraction is tuned. Separating stringing from temperature and moisture effects, covered earlier in this book, is the companion discipline that keeps this kind of hidden variable from contaminating a retraction test.
Warning: The two-change trap
Changing two settings in the same test print feels efficient but destroys the value of the test. If the print improves, there is no way to know which change mattered, and the next failure starts the guessing over. Change one number, test, record, then move to the next.
Keeping a dated log entry for every single-variable test, even failed ones, turns variable isolation from a one-time discipline into a growing personal reference. Over several months of regular printing, this log becomes more valuable than any downloaded profile, because it reflects the actual behavior of your specific printer, hotend, nozzle, and the filament brands you actually use. A simple spreadsheet with columns for date, variable changed, old value, new value, test object, and result is enough to capture this without turning troubleshooting into paperwork.
Patience with this rule pays off fastest on the defects that resist quick fixes, like intermittent under-extrusion or warping that only shows up on larger parts. These defects often have more than one contributing cause, and only strict variable isolation across several test rounds can untangle which factor is doing how much damage. A single rushed test with several changes at once will almost always miss a secondary cause hiding behind a more obvious primary one.
The payoff for all this discipline is not just solving the print in front of you. It is building a mental and written model of how your printer actually behaves, setting by setting, that holds up the next time something unrelated breaks. That model is the real goal of this entire routine, and it is what the final subchapter turns into a durable, owned printer profile.
Building your own profile with confidence
Every test run through the routine above produces a confirmed number: a nozzle temperature that stops stringing, a retraction distance that clears travel moves, a pressure advance value that sharpens corners, a flow ratio that matches actual extrusion to commanded extrusion. Individually, each number is small progress. Collected together into one printer profile and filament profile in Orca Slicer, they become something larger: a baseline that belongs to this exact printer, this exact hotend, and this exact filament, rather than to whoever originally shared a profile online. This is the shift from copying settings to owning them.
Confidence in a profile comes specifically from knowing why each number is what it is, not from the number itself. A pressure advance value copied from a forum post is just a guess applied to your printer. The same value reached through a confirmed single-variable test, printed on your own hardware, with a test print you can point to and explain, is a measurement. The number can be identical in both cases, but only one of them is trustworthy when conditions change, such as switching to a new spool of the same filament brand or replacing a worn nozzle.
This confidence becomes especially valuable the moment something changes in your setup. Calibration values belong to a specific printer, hotend, nozzle, and filament spool, so a new nozzle, a new spool, or a different filament brand all call the existing numbers back into question rather than guaranteeing they still apply. An owner who copied a profile has no starting point when this happens beyond searching for another profile. An owner who built the profile through tested isolation already knows which settings are likely to need rechecking (usually flow ratio and temperature first, since those are most sensitive to filament and nozzle changes) and which are more likely to carry over unchanged (input shaping, which depends on the printer's mechanics rather than the filament, while pressure advance deserves a quick recheck with each new filament).
Treat a completed profile as a living document rather than a finished product. Every printer profile and filament profile built this way should carry a short changelog, even an informal one in a text file saved alongside the profile, noting what was tested, when, and why a number was set. This matters because printers drift over time: belts loosen slightly, nozzles wear, bearings age. A profile with a changelog lets you recognize when a new defect is probably drift rather than a brand-new problem, because you can see how long it has been since a given setting was last confirmed.
Building this kind of profile does not mean rejecting every shared resource outright. A community profile can be a reasonable starting point for a first baseline print, especially when setting up a brand new printer, since starting completely from zero on every single setting at once is slower than necessary. The difference is in what happens next: a copied profile is a hypothesis to test, not a conclusion to trust. Run the baseline print, then begin the routine from this chapter to confirm or correct each major setting against your own printer rather than leaving the copied numbers unexamined indefinitely.
One common failure mode worth naming directly is profile hoarding, where an owner collects several different profiles for slightly different situations without understanding why any of them differ from the others. This often happens after searching for help with several different defects separately, downloading a new profile for each one, and ending up with overlapping, sometimes contradictory, settings scattered across saved profiles. The routine in this chapter is the cure for this specific habit, because it replaces each borrowed number with a tested, explainable one, collapsing the collection down to profiles you actually understand.
There is also a time-management argument for this approach, beyond just the confidence it builds. A full calibration session, done once with isolated single-variable tests and good documentation, takes an afternoon but needs revisiting only occasionally, mainly after major hardware changes. Chasing a new profile after every failed print, by contrast, repeats a search-and-hope cycle indefinitely, costing more time over a year than the one afternoon of structured testing would have. The upfront investment in this routine is what makes future troubleshooting sessions shorter, not longer.
Sharing your own profile with others, once it is built this way, is also more useful than sharing a copied one, since you can explain the reasoning behind each number to someone with a similar printer rather than just handing over a file. This does not mean the exact values will transfer unchanged to their setup. Nozzle, hotend, and filament differences mean a shared profile is still only a starting hypothesis for them too. What transfers reliably is the method itself: isolate one variable, test it against this printer, record the result, and only then trust the number.
A concrete milestone worth setting is a first fully owned pair of profiles, printer and filament, built entirely through tests run on your own machine rather than inherited from anywhere else. Reaching that milestone does not mean calibration is finished forever. New filament colors, a replaced nozzle, or a mechanical repair will all call parts of the profile back into question. What changes permanently is the response to a new failure: instead of searching for someone else's fix, the printer owner who built this profile reaches for the same routine, inspects the defect, ranks candidates, isolates one variable, tests, and records the result.
That shift, from searching to testing, is the real outcome this chapter has been building toward. A printer that fails is no longer a reason to start over with a stranger's numbers. It is simply the next entry in a log that already has a dozen confirmed answers in it, and one more test away from a dozen and one.
Conclusion
A printer that once produced a shelf full of mismatched failures can, after a single afternoon of structured testing, produce parts that come off the plate looking the way they did in the slicer preview. Nothing about the machine changed in that time. What changed was the owner's relationship to it: from someone hoping a borrowed profile would work, to someone who knows what flow ratio, pressure advance, and input shaping each do and why their own numbers differ from anyone else's. That shift is the real outcome of this book, more than any specific value written down in a notebook.
Looking back across the chapters, a pattern repeats. Every defect, whether corner blobbing, stringing, ringing, or warping, turned out to have more than one plausible cause, and the only reliable way to tell them apart was to isolate variables and test them in order. The slicing pipeline and Klipper motion scheduling explained where a print's instructions come from before a single calibration test was run. Flow ratio and nozzle temperature were separated from pressure advance, and pressure advance was separated from retraction, so that fixing one never meant guessing at the others.
The printer profile and filament profile built from scratch in Orca Slicer gave that whole process a foundation that belonged to one specific machine, hotend, nozzle, and spool. That ownership matters more than it might have seemed at the time. A number copied from a forum post describes someone else's wear, someone else's humidity, someone else's nozzle diameter. A number measured on a baseline print describes the one printer actually sitting on the desk, which is the only printer whose results need explaining.
The troubleshooting routine built in the final working chapters ties all of it together. Changing one variable at a time, recording results, and using Klipper macros to keep each test consistent is not a dramatic skill, but it is the skill that keeps paying off long after the specific calibration values in this book have been superseded by a new nozzle, a new filament, or a new printer entirely. The method survives changes in hardware. A fixed number does not.
None of this means every future print will succeed on the first try. New filament brands behave differently, mechanical parts wear, and firmware updates shift default behavior. What changes is how a failure gets handled when it happens. Instead of searching for someone else's fix, the next step is now obvious: look at the defect, think through which stage of the slicing pipeline or which Klipper feature could produce it, and test that one variable before touching anything else.
Carrying the method into future projects
The specific numbers found while working through this book, a flow ratio, a pressure advance value, a set of retraction settings, will not last forever. A new spool of filament from a different manufacturer can shift flow ratio by a noticeable margin. A new nozzle, even the same stated diameter, can print slightly differently once it has some hours on it. A hotend swap resets pressure advance entirely, since it depends on the mechanical path material takes from extruder gear to nozzle tip. None of that is a failure of the calibration work already done. It is simply what calibration values are: measurements tied to a specific physical setup at a specific moment, not universal truths.
What does carry forward is the order of operations. Temperature and flow ratio get tuned before pressure advance, because an inconsistent extrusion rate makes pressure advance results hard to read. Pressure advance gets tuned before chasing stringing, because corner blobbing and ooze can look similar to stringing caused by retraction settings. Input shaping gets tuned once the mechanical and extrusion settings are stable, since resonance compensation is about motion smoothness, not extrusion accuracy. That sequence works on the next printer exactly as it worked on this one, because it reflects how these systems actually interact, not any single printer's quirks.
Consider a concrete scenario: a new dual-color printer arrives, with a different hotend and a different extruder gear ratio than the machine calibrated throughout this book. The instinct to copy over the old pressure advance value and flow ratio would be understandable but wrong, since both depend on mechanical details that have just changed. The right move is to rebuild the printer profile and filament profile, run a fresh baseline print, and work through flow ratio, pressure advance, retraction, and input shaping again, in that same order, using the same macros built earlier. The second pass will likely be faster than the first, since the reasoning behind each test is already familiar, but it should not be skipped.
The Klipper macros built for calibration testing deserve a permanent place in any printer's configuration, not a one-time use. A macro that runs a flow ratio test, or prints a pressure advance tower, or triggers an accelerometer measurement for input shaping, turns a multi-step manual process into a single command. That matters most exactly when motivation is lowest, such as after a frustrating failed print late in the evening, when running a quick, consistent test is far more likely to happen than reconstructing the whole procedure from memory.
The habit of recording results also outlives any single calibration session. A simple log, whether a spreadsheet, a notebook, or comments inside a slicer profile, that records what filament was used, what flow ratio and pressure advance values were found, and what temperature worked best, becomes genuinely useful months later. When a half-used spool of the same filament reappears, the log saves an entire afternoon of recalibration. When a defect reappears that looks like one solved before, the log often points straight to the cause without any new testing at all.
The decision tree for walls, infill, and supports also travels well beyond the specific parts printed while working through this book. A functional bracket that needs to survive load still calls for more walls and a stronger infill pattern. A display piece still calls for a pattern chosen for consistent top-surface appearance rather than raw strength. A part with overhangs still needs a deliberate choice between support type and support interface distance, weighing cleanup time against surface quality. The specific part changes every time; the questions that decide wall count, infill density, and support configuration do not.
One useful discipline going forward is resisting the pull back toward copied profiles, especially under time pressure. It is tempting, when a deadline is close and a part absolutely needs to print correctly tonight, to download someone else's starting point and hope it matches closely enough. Sometimes that gamble pays off. More often it reintroduces the exact uncertainty this book worked to remove: not knowing why a setting is what it is, and therefore not knowing how to fix it when it stops working. A profile built from known, tested values, even an older one from a previous spool, is a safer foundation than an unfamiliar one borrowed at the last minute.
It also helps to recognize when a defect does not match anything covered here. Few print problems trace to one definitive cause, since filament, mechanics, environment, and settings all interact, and a photograph of a failed print rarely tells the whole story on its own. When a print fails in an unfamiliar way, the right response is still the same: separate the possible causes, change one variable, observe the result, and repeat. That approach does not require having seen the exact defect before. It only requires trusting the process over the urge to guess at a single fix.
The broader shift this book aims for is a change in posture toward the printer itself. A printer is not a mysterious machine that either works or does not, handed down through settings nobody fully explained. It is a predictable system built from a slicing pipeline, a motion controller, a hotend, and a filament, each with measurable behavior. Approaching a new printer, a new filament, or a stubborn failure with that posture turns frustration into a short, structured investigation. That investigation gets faster with practice, but it never stops being useful, which is exactly why it is worth carrying forward into whatever gets printed next.
Glossary
The terms below appear throughout the book, often without a full definition at the point of use, since the surrounding chapter is busy teaching the concept in action. Use this list as a quick lookup when a term resurfaces later and the exact meaning has slipped. Where a term is covered in depth elsewhere, the glossary gives the short version and points you back to the chapter that teaches it properly, rather than repeating the worked examples found there.
G-code is the plain-text instruction set that tells a 3D printer where to move, how fast, and when to extrude or heat. Each line is a short command, such as a move to a coordinate or a temperature target, and the printer's firmware reads these lines in order. The slicing pipeline chapter shows how a 3D model gets turned into thousands of these lines, and how to read a few of them yourself.
The slicing pipeline is the process of converting a 3D model into layers, toolpaths, and ultimately G-code, based on the print settings chosen in Orca Slicer. It decides wall placement, infill paths, support structures, and travel moves before the printer ever sees the file. Two slices of the same model can produce very different prints if the settings differ, which is why so many defects trace back to a setting rather than the printer hardware.
Klipper motion scheduling refers to how Klipper takes the incoming G-code commands and converts them into precisely timed stepper motor movements. Klipper offloads much of this timing math to a connected computer, which lets it plan smoother, more accurate motion than many printer mainboards could manage alone. This scheduling is also where features like pressure advance and input shaping get applied, adjusting the raw motion before it reaches the motors.
A printer profile in Orca Slicer stores the physical and mechanical details of a specific machine, such as build volume, nozzle size, and acceleration limits. A filament profile stores material-specific settings, such as target temperatures and cooling behavior, for a particular spool or filament type. Both are covered in the chapter on setting up Orca Slicer and Klipper, which explains why copying someone else's profile skips calibration steps that matter for your own setup.
A baseline print is a known-good test print, produced with settings you have verified on your own printer, that serves as a reference point for comparison. When a later print fails, you compare it against the baseline to judge whether something has changed. Without a baseline, every failure looks like a mystery instead of a deviation from something known.
Nozzle temperature and flow ratio both control how much material comes out of the nozzle, but in different ways. Temperature affects how easily the filament melts and flows, while flow ratio is a multiplier that corrects for small differences between the commanded and actual amount of plastic extruded. The chapter on temperature and flow ratio explains how to tune each separately rather than confusing one for the other.
Extruder rotation_distance is a Klipper setting that defines how far filament moves through the extruder for a given amount of motor rotation. Volumetric flow describes the rate of material, by volume, that a hotend can melt and push out reliably, and it sets a practical speed limit for any given nozzle and temperature combination. Pushing print speed beyond a hotend's volumetric flow limit tends to cause under-extrusion, even if every other setting is correct.
Pressure advance is a Klipper feature that compensates for the pressure buildup and release inside the extruder as print speed changes, particularly around corners and seams. Without it, pressure lingers after a corner and causes corner blobbing, an excess of material at sharp direction changes. The chapter on pressure advance and corner quality walks through the calibration test and how to recognize when the value is set too high or too low.
Retraction distance and retraction speed control how much filament the extruder pulls back, and how fast, during travel moves where no extrusion should occur. When these values are poorly matched to the hotend and filament, stringing appears as thin strands of plastic stretched between separate features. Filament moisture is a separate but easily confused cause of similar-looking defects, since wet filament can produce fine strands or bubbling that resembles a retraction problem.
Input shaping is a Klipper technique that adjusts motion commands to cancel out vibrations at a printer's known resonance frequency, reducing a wavy surface defect called ringing. An accelerometer measurement is the test used to find those resonance frequencies for a specific printer, since the same shaper settings rarely suit two different machines, even of the same model.
Layer shift describes a print where one or more layers are offset from the ones below, usually from a missed step or mechanical obstruction rather than a slicer setting. Under-extrusion describes a print receiving less material than intended, which can stem from temperature, flow ratio, volumetric flow limits, or a mechanical feed issue. Warping refers to corners or edges lifting away from the bed as the part cools unevenly, a defect closely tied to bed adhesion and cooling behavior.
Wall count, infill density, and infill pattern are slicer settings that shape a part's strength, weight, and print time by controlling how much solid material surrounds and fills the model. Support type and support interface distance control how temporary scaffolding is generated under overhangs, and how easily that scaffolding separates from the finished surface afterward. The chapter on walls, infill, and supports frames these as design trade-offs rather than settings with one correct value.
A Klipper macro is a saved sequence of G-code commands, given a name, that can be triggered with a single call instead of typed out each time. Macro parameters let a macro accept different values each time it runs, such as a test temperature or a specific speed, without rewriting the macro itself. These are covered in the chapter on building repeatable test macros, where they turn a one-off calibration test into something reusable across printers and sessions.
A troubleshooting routine is a structured sequence you follow when a print fails, intended to replace guesswork with a repeatable process of elimination. Variable isolation is the principle behind that routine: changing exactly one setting between test prints, so that any difference in the result can be attributed to that one change with confidence. The chapter on building a repeatable troubleshooting routine applies this principle directly to the defects and settings covered throughout the rest of the book.
Notes
Chapter 1: From Model to Motion
Chapter 2: Setting Up Orca Slicer and Klipper
- 1. "Calibration Guide," OrcaSlicer Wiki
Chapter 3: Temperature and Flow Ratio
- 1. "Pressure Advance," Klipper documentation
- 2. "Rotation Distance," Klipper documentation
- 3. "Pressure Advance," Klipper documentation
Chapter 4: Pressure Advance and Corner Quality
- 1. "Pressure Advance," Klipper documentation
- 2. "Pressure Advance," Klipper documentation
Chapter 5: Retraction and the Problem of Stringing
- 1. "Stringing and oozing," Prusa Knowledge Base
- 2. Klipper, "Slicers," Klipper documentation, 2024
Chapter 6: Input Shaping and Ringing
- 1. "Resonance Compensation," Klipper documentation
- 2. "Resonance Compensation," Klipper documentation
Chapter 7: Reading Common Print Defects
- 1. "Under-extrusion and Layer shifting," Prusa Knowledge Base
- 1. "Under-extrusion and Layer shifting," Prusa Knowledge Base
- 1. "Under-extrusion and Layer shifting," Prusa Knowledge Base
- 1. "Under-extrusion and Layer shifting," Prusa Knowledge Base
Chapter 8: Walls, Infill, and Supports
Chapter 9: Klipper Macros for Repeatable Tests
- 1. "Command Templates," Klipper documentation
Chapter 10: A Repeatable Troubleshooting Routine
- 1. "Calibration Guide," OrcaSlicer Wiki
Use this book
- Read the whole book here for free. No account needed.
- Link to the book or any chapter, and share the links anywhere.
- Share or host the complete PDF or EPUB file for free, including with a class or a library. Keep it unchanged, with the credit inside.
- Quote up to 500 words with credit and a link back to the book.
- Do not post the text on other websites, sell it, change it, translate it, or present it as your own.
Suggested credit: From "Read the Failure, Fix the Setting", a free book by TailoredRead: https://tailoredread.com/book/read-failure-fix-setting-hands-on-method-b102248608a7. See the terms of service for the full rules.
Want a book written for you?
Tell us your goals and background, and get a complete book on this subject or any other, tailored to you.