Klipper Exclude Object: Canceling Failed Parts Mid-Print Without Losing the Whole Plate
Every print farm operator eventually hits the same frustrating moment: eleven of the twelve parts on a plate are printing fine, and the twelfth has come loose and turned into a spaghetti nest that's now dragging across everything else. Without intervention, that one failed part either ruins the rest of the plate or forces a full stop. Klipper's exclude_object feature exists specifically for this situation — it lets you cancel a single object mid-print, in real time, from Mainsail or Fluidd, while the rest of the plate keeps printing normally. It's one of the most underused features in the Klipper firmware this site already covers extensively, and it changes how you should think about running unattended multi-part plates.
How it works
Exclude Object relies on your slicer embedding object boundary and identification comments into the G-code — essentially a map that tells Klipper which extrusion moves belong to which named object on the plate. When you cancel an object through the web UI, Klipper doesn't stop the print; it skips the G-code moves associated with that object's remaining extrusions while continuing to execute everything else in sequence, including travel moves that route around the now-excluded region. The printer keeps homing, keeps its temperatures, and keeps printing every other object on the bed exactly as if the canceled one was never there.
This is fundamentally different from a slicer-level "print one at a time" feature (sequential printing), which changes the print order entirely and requires bed clearance planning between objects. Exclude Object works within a normal simultaneous, interleaved multi-object plate — the kind this site's Klipper macro and quad gantry leveling guides already assume you're running on a CoreXY machine or a Voron — and simply removes one object from the plan once it's already started printing.
Setting it up
1. Enable it in printer.cfg
Add the config section (no additional parameters are required for basic use):
[exclude_object]Restart Klipper (RESTART or a firmware restart from Mainsail) after adding this so the module loads.
2. Make sure your slicer is emitting object labels
OrcaSlicer, SuperSlicer, and recent PrusaSlicer builds all support the "Label objects" setting needed for exclude_object — in OrcaSlicer it's under Printer Settings → General → "Label objects" (some versions call it out specifically as Klipper-compatible object labeling). With it enabled, the slicer writes EXCLUDE_OBJECT_DEFINE commands near the top of the file, one per object, and wraps each object's extrusion moves with EXCLUDE_OBJECT_START/EXCLUDE_OBJECT_END markers carrying that object's name. If you're slicing without this enabled, Klipper has nothing to exclude even with the module loaded — check this first if the cancel option isn't showing up in your interface.
3. Make sure your start macro doesn't eat the object definitions
This is the most common reason people set everything up correctly and it still doesn't work: a custom PRINT_START macro that does its own G-code parsing, or a start sequence that gets inserted before the slicer's EXCLUDE_OBJECT_DEFINE block, can prevent Klipper from ever seeing the object map. If you've built a heavily customized macro setup along the lines of this site's Klipper macros guide, verify the exclude_object definitions still land intact near the top of the sliced file and aren't being stripped or reordered by a post-processing script.
Using it during a print
Once a print with labeled objects starts, Mainsail and Fluidd both display a per-object list — often overlaid directly on the G-code preview — with a cancel button next to each one. When a part starts shifting, delaminating, or spaghetti-ing, click cancel on that specific object. Klipper finishes the current move, stops extruding for that object's remaining toolpath, and the toolhead continues on to the next scheduled object as if nothing happened. Already-printed layers of the canceled object stay on the bed exactly as they were — Klipper doesn't retract or clear the failed part, so on some machines a badly warped or detached failure can still need a manual nudge or a pause to physically remove loose debris before it interferes with a neighboring object's print head clearance.
Where it genuinely pays for itself
- Print farms running Spoolman/OctoPrint fleets (as covered in this site's print farm management guide) — canceling one failed part remotely instead of walking over to hit the stop button on the whole machine.
- Overnight or unattended batch runs — pair it with the AI-powered failure detection tools this site has covered (Obico, Spaghetti Detective) so a detected failure can be excluded automatically or with a single remote click instead of losing the whole plate.
- Large mixed plates where a full restart means re-printing dozens of already-successful small parts alongside the one that failed.
Limitations worth knowing
Exclude Object can't rescue an object once its failure has physically damaged the plate — a detached part that's been dragged across the bed by the nozzle has already ruined whatever it touched, cancel button or not; the feature only works as fast as you can react to a failure in progress. It also depends entirely on accurate object boundaries from the slicer — models with interlocking or touching geometry between "separate" objects can confuse the boundary detection, and multi-color or multi-material prints using a single physical extruder path per layer don't always map cleanly onto per-object exclusion the way a simple single-material plate does. Test it on a low-stakes multi-part plate before trusting it on an overnight production run, so you know what the cancel workflow actually looks like on your specific printer before you need it under pressure.
Related Guides
- How to Install Klipper on Any 3D Printer: Complete Setup Guide
- Running a Small 3D Print Farm: Fleet Management, Job Queuing, and Spool Inventory with Spoolman
- OrcaSlicer Complete Guide: Every Setting Explained for Maximum Print Quality
- How to Manage Klipper Firmware on the Anycubic Kobra 3 V2 with ACE Pro
- Pressure Advance Calibration for OrcaSlicer and Klipper
- Pressure Advance Calibration for Better Print Quality
- Klipper Macros: Writing Custom G-Code Macros, Conditionals, and Variables
- KlipperScreen: Building a Standalone Touchscreen UI for Your Klipper 3D Printer