Print problems · Troubleshooting

No extrusion at the start of a print: empty nozzle, purge line or nozzle height

Nothing, or a thin broken line, in the first moves of a print? How to tell an oozed nozzle, short purge, low nozzle, clog or start G-code fault apart.

Illustration of two rows of 3D printer nozzles, brass and steel, laid out beside a vernier caliper
On this page (11 sections)
The short answer

If the first moves of a print lay down nothing, or a thin and broken line, the nozzle often wasn't full of molten plastic when printing began. Start by heating the nozzle and extruding from the printer's screen. A steady strand means the hotend and filament path are fine, so look at the purge line and the first layer. An empty nozzle happens when it oozed while heating, when the purge line is missing or too short, or when filament was pulled back at the end of the last print and never pushed forward again. Using your printer maker's own profile, which includes their purge, is the first fix. Two other causes look the same at first. Prusa says a nozzle that's too close to the bed blocks its own opening, so nothing comes out "for the first layer or two." A partial clog gives thin, uneven lines that don't recover.

This guide is about the first few seconds of a print. If the print started well and stopped later, read printer stopped extruding mid-print. If filament won't go into the extruder at all, start with filament won't load. If the whole first layer is ridged or gappy, see reading first-layer lines.

What does the failed start look like?

What you seeMost likelyWhere to go
The purge line starts thin or empty and fills in as it goes, and the model prints fineThe nozzle oozed while heating, and the purge line did its jobOozing while heating
The purge line is thin all the way, or there isn't one, and the model's first lines are thin or missingPurge or prime line missing or too shortPurge line missing or too short
Nothing on the first layer or two, then normal printing, maybe with clickingNozzle too close to the bedNozzle too close
Every print starts empty for the first stretch, often after you edited start or end G-codeRetraction that was never pushed backLeftover retraction
Thin, uneven lines that don't improve, filament curling onto the nozzlePartial clogPartial clog
Nothing at all, even when you extrude from the screenFilament not loaded to the nozzle, or a full clogFilament not loaded
The print starts before the nozzle is hot, or the printer warns the file is for another modelWrong start G-code or printer profileWrong start G-code or profile

First test: extrude from the screen

Bambu Lab's first-layer guide describes a manual extrusion test: heat the nozzle, then click "the extrude button on the screen to feed it until you see filament being extruded from the nozzle tip." Most printers have a similar extrude or load option in their menu. Watch what comes out:

  • A steady, straight strand. The hotend and filament path are fine. The problem is the start sequence or the nozzle height, so look at the purge line and the first layer.
  • Thin, uneven plastic that curls up and sticks to the nozzle. Prusa calls this "an early sign of a clogged nozzle." Go to partial clog.
  • Nothing, or loud clicking. Prusa says loud clicking "most likely suggests the nozzle is clogged or deformed." Check the filament is loaded, then follow our clog diagnosis guide.

The nozzle oozed while heating

Molten plastic drains out of a hot nozzle while the printer homes, levels and waits. Slicer and printer makers build the start sequence around this:

  • OrcaSlicer. The example start G-code on the OrcaSlicer wiki's Machine G-code page heats the nozzle part way first, with the comment "M104 S150 ; set temporary nozzle temp to prevent oozing during homing." It sets the full nozzle temperature only after homing, and then extrudes a purge line before the print.
  • Bambu Lab. In Bambu Studio's start G-code for the X1 Carbon (v02.08.02.61), an early line reads "M104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle."
  • Prusa. PrusaSlicer 2.9.6's MK4S start G-code doesn't give oozing as the reason, but it follows the same pattern. It heats the nozzle to a lower temperature commented "set extruder temp for bed leveling" (170 °C by default, 175 °C for PET-type filament and 210 °C for flexible filament, with other values for PC, PA and some filament profiles). It heats to the first-layer temperature only just before the purge line.

How to fix it. Refilling the nozzle is the purge line's job. If the purge line starts empty but the model prints well, nothing needs fixing. If the model starts empty too, keep the maker's start G-code and make the purge longer (see the next section). If you write your own start G-code, follow the same order as the examples above: heat the nozzle part way during homing and leveling, heat it fully just before the purge, then purge.

The purge or prime line is missing or too short

The purge line, prime line or skirt is there to refill the nozzle and get the plastic flowing before the model starts.

  • Prusa says the skirt's "purpose is mainly to stabilize the flow of the filament through the nozzle." Because it prints first, you can also adjust Live Z if the first layer looks wrong.
  • OrcaSlicer says a skirt "helps prime the hotend, stabilize extrusion before the model starts." It says more loops "improve priming," that "slower speeds give a more reliable prime," and that a Minimum extrusion Length is "useful if the printer is set up to print without a prime line."
  • Cura describes Build Plate Adhesion Type as options "that help to improve both priming your extrusion and adhesion to the build plate," and says "multiple skirt lines help to prime your extrusion better for small models." Cura also has an Enable Prime Blob setting, which primes "with a blob before printing" and "will ensure that the extruder will have material ready at the nozzle before printing." It's off by default and hidden in Cura's base printer definition, so it only shows up on printer profiles that turn it on. Cura adds that "Printing Brim or Skirt can act like priming too."

Generic start G-code doesn't always include a purge. PrusaSlicer 2.9.6's default Start G-code for a custom printer is only "G28 ; home all axes" and "G1 Z5 F5000 ; lift nozzle." Klipper's example START_PRINT macro homes, heats, and moves the nozzle close to the bed, with no purge line. In contrast, the Prusa MK4S profile has an "; Extrude purge line" block, and Bambu Studio's X1 Carbon start G-code has a "nozzle load line" block.

How to fix it:

  • Use your printer maker's own profile, which includes their purge.
  • If you set the skirt count to 0, set it back to at least 1. It's called Loops (minimum) in PrusaSlicer, Loops under Skirt in OrcaSlicer, and Skirt Line Count in Cura. Zero turns the skirt off, and Cura notes that its minimum length is then ignored. If there's no purge line, also set a minimum skirt length: Minimal filament extrusion length in PrusaSlicer, Minimum extrusion Length in OrcaSlicer, or Skirt/Brim Minimum Length in Cura (250 mm by default).
  • If you write your own start G-code, add a purge line after the nozzle reaches temperature. The OrcaSlicer wiki's example has a "; Purge Line" section whose main line is commented "extrude 30mm of filament in the y direction."

Is the nozzle too close to the bed?

This looks like an empty nozzle but isn't one. Prusa's first-layer guide (MK2/S to MK3.5/S) says: "If the nozzle is too close to the printing bed, there won't be enough room for the plastic to come out of the extruder." The nozzle will "essentially block its opening," and you can recognize it "when the printer does not extrude plastic for the first layer or two." Prusa's Live adjust Z article adds that if the nozzle is too close, the filament "won't be able to 'flow out' leading to a potential clog of the nozzle."

Bambu Lab says the same for the A1 series: a nozzle "nearly touching or scraping the plate surface" gives "little to no filament being extruded."

How to tell: the manual extrusion test is normal, but the first layer is missing, scraped or squashed, and printing recovers a layer or two up. Clicking during the first layer can have the same cause. Our extruder clicking guide lists a nozzle set too close as one reason the extruder clicks.

How to fix it:

  • Prusa MK2/S, MK2.5/S, MK3/S/+ and MK3.5/S. Use Live Adjust Z and First Layer Calibration, from LCD Menu, Calibration, First layer calibration. Prusa warns against lowering Live Adjust Z to fix poor adhesion, because the nozzle can damage the sheet.
  • Prusa CORE One, MK4/S, MK3.9/S and XL. Prusa says the LoadCell "will calibrate the first layer automatically." To fine-tune, long-press the knob while the first layer prints, or set Z offset in PrusaSlicer under Printers, General. Prusa says a negative value "means a more squished first layer."
  • Bambu Lab A1 series. Bambu says to turn on the Bed Leveling option in the slicer before printing, especially after changing the build plate. If that doesn't help, retighten the hotend heater assembly screws.

Our first-layer lines guide covers reading the first layer and setting nozzle height in more detail.

Retraction left over from the last print

Many end G-code scripts pull filament back out of the nozzle when a print finishes:

  • Cura's base end G-code includes ";Retract the filament" and "G1 E-1 F300".
  • Klipper's example END_PRINT macro retracts while moving away: "G1 X-2 Y-2 E-3 F300".
  • Bambu Studio's X1 Carbon end G-code includes "G1 E-0.8 F1800 ; retract".

None of these makers puts it this way, but in our reading of their files the start G-code has to push that filament back before printing. Prusa's MK4S profile does this explicitly. It retracts early ("G1 E-2 F2400 ; retraction", or E-4 for flexible filament). Later, it pushes the same amount back with a comment that reads "deretraction after the initial one before nozzle cleaning," and only then prints its purge line. Cura's base start G-code primes with "G1 F200 E3" under the comment ";Prime the extruder."

Our advice: if your start G-code retracts, or your last print's end G-code did, and nothing pushes the filament back or primes the nozzle, expect the first moves to come out thin or empty until the extruder catches up.

How to fix it. Restore the maker's start and end G-code, or make sure your own start script pushes the filament forward before the first line. In Marlin, G92 with an E value sets "New extruder position", so G92 E0 resets the extruder count without moving it. M83 puts the E axis into relative mode, so a following G1 E value is a distance to push. Marlin notes that G90 and G91 clear this mode, so put M83 after G90, as Prusa's MK4S and OrcaSlicer's example start G-code do. A purge line after that refills whatever retraction left behind.

Is it a partial clog?

Prusa says a partial clog means "the printer is able to push some filament through, but it is not enough to print the object properly, leading to visible gaps and missing layers." Its early sign is filament that "is not extruded consistently, curls up, and sticks to the nozzle." Prusa's first-layer guide lists three ways a clog starts: debris in the nozzle, "hot plastic is kept inside the extruder for too long," or poor hotend cooling that softens the filament "outside of the desired melt zone."

How to tell: a clog doesn't improve after the purge line. The manual extrusion test gives thin, uneven or curling plastic, and you may hear clicking.

How to fix it. Follow your maker's unclogging procedure. Our clog diagnosis guide has the steps for Prusa, Bambu Lab and Creality printers. If the clog came from a nozzle set too close to the bed, fix the height afterwards, or it can happen again.

Is the filament loaded to the nozzle?

If the filament end is sitting in the extruder or tube, not in the hotend, no start sequence will be long enough. Creality's Ender-3 V3 page for "The nozzle does not discharge filament when printing starts" lists four causes: filament wrapped around the spool holder, filament "not assembled in place," "residual filament in the nozzle and throat," and an extruder jam. Its fix is to cut the filament at 45°, straighten it, and use the automatic feeding function. If filament still won't go through, Creality points to its nozzle-cleaning video.

How to tell: the manual extrusion test gives nothing, or plastic only appears after a long feed. Think back to whether the filament was unloaded, cut or swapped since the last good print.

How to fix it. Load the filament with your printer's load procedure, and watch until plastic comes out of the nozzle. Our filament won't load guide has the load steps for Prusa, Bambu Lab and Creality printers.

Wrong start G-code or printer profile

A start script written for another printer, or for another firmware, can skip the heat-up wait, the purge, or the push-back after a retraction. OrcaSlicer's wiki warns that machine G-code scripts "can also cause issues if not used correctly." It recommends starting from "a known base of G-code commands for your specific printer firmware."

What to check:

  • Does the printer wait for the nozzle to heat? In Marlin, M109 waits for the hotend to reach its target. Marlin says that to "set the hot end temperature and proceed without waiting," you use M104. In Cura, Wait for Nozzle Heatup is "Whether to wait until the nozzle temperature is reached at the start." PrusaSlicer's "Emit temperature commands automatically" option says that when it's disabled, PrusaSlicer "will NOT emit commands to heat up extruder, bed or chamber, leaving all to Custom Start G-Code."
  • Klipper START_PRINT macros. Klipper's Slicers page says it's useful to pass temperatures from the slicer to the macro. In PrusaSlicer and other slic3r derivatives, it gives START_PRINT EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature]. In Cura, it gives START_PRINT BED_TEMP={material_bed_temperature_layer_0} EXTRUDER_TEMP={material_print_temperature_layer_0}. Klipper notes that slicers insert their own heating codes when certain conditions aren't met. In slic3r derivatives, it suggests putting M140 S0 and M104 S0 before the macro call. Remember that Klipper's example START_PRINT has no purge line, so add one to your macro or rely on a skirt.
  • Relative or absolute E. PrusaSlicer's "Use relative E distances" tooltip says: "If your firmware requires relative E values, check this, otherwise leave it unchecked. Most firmwares use absolute values." Prusa's own MK4S start G-code sets "M83 ; extruder relative mode." If you copy E moves from one start script into another, make sure the E mode matches.
  • Prusa printers on Buddy firmware. Prusa's start G-code includes print checks. Prusa's description of M862 reads "Printer verifies if the G-code is compatible with the machine," and M862.3 checks "if the G-code is sliced for a compatible printer model." If you get that warning, re-slice with the profile for your printer and nozzle. Our problems after a nozzle change guide covers matching the nozzle.

Checklist

  • Heat the nozzle and extrude from the screen. Look for a steady strand.
  • Check whether a purge line or skirt printed, and whether it filled in by the end.
  • Look at the first layer: scraped or missing for a layer or two points to a nozzle that's too close.
  • Thin, curling plastic that doesn't improve points to a partial clog.
  • Make sure the filament is loaded to the nozzle, not just into the extruder.
  • If you changed start or end G-code, check that the start pushes back any retraction and includes a purge.
  • Check that the start G-code waits for the nozzle to heat (M109 in Marlin) before purging.
  • Slice with your printer maker's own profile for your printer and nozzle.

How this guide was checked

This is a research-based guide. We haven't reproduced these failures for it. Every setting name and G-code line comes from the Prusa Research, Bambu Lab, Creality, PrusaSlicer, Bambu Studio, OrcaSlicer, UltiMaker Cura, Klipper and Marlin pages and files listed in the sources, retrieved on 2026-10-14. G-code lines are quoted from the slicer versions named. The causes come from those makers, except leftover retraction, which is our own reading of their start and end G-code. The order of checks is our advice. Read more in our editorial standards.

Print problems: what to check before you buy ↗

Sources

  1. First layer issues, Prusa Research
  2. Live adjust Z, Prusa Research
  3. Skirt and Brim, Prusa Research
  4. Clogged nozzle (CORE One, CORE One L, XL, MK4/S, MK3.9/S), Prusa Research
  5. Buddy firmware-specific G-code commands, Prusa Research
  6. PrusaSlicer 2.9.6 print settings source (PrintConfig.cpp), Prusa Research (PrusaSlicer project)
  7. PrusaSlicer 2.9.6 Prusa Research printer profiles (PrusaResearch.ini), Prusa Research (PrusaSlicer project)
  8. Identify and Fix First Layer Issues With a Simple Test Print, Bambu Lab
  9. A1 Series First Layer Print Issues - First Layer Too Low, Hotend Moving, Bambu Lab
  10. Bambu Studio v02.08.02.61 X1 Carbon 0.4 nozzle machine start G-code template, Bambu Lab (Bambu Studio project)
  11. Bambu Studio v02.08.02.61 X1 Carbon 0.4 nozzle machine end G-code template, Bambu Lab (Bambu Studio project)
  12. Ender-3 V3 Nozzle does not discharge filament, Creality (Creality Wiki)
  13. Cura 5.13.0 printer settings definition (fdmprinter.def.json), UltiMaker (Cura project)
  14. Skirt, OrcaSlicer project wiki
  15. Machine G-code, OrcaSlicer project wiki
  16. Slicers, Klipper project
  17. Example macros (sample-macros.cfg), Klipper project
  18. M109 - Wait for Hotend Temperature, Marlin Firmware
  19. G92 - Set Position, Marlin Firmware
  20. M83 - E Relative, Marlin Firmware

This page is research-based: we have not tested the products or methods ourselves. It draws on the manufacturer documentation and sources listed. Exact settings and fit always defer to your printer and filament makers.