<p>A lot of slicers will have a Wipe option. Here are some examples:</p>

<ul>
<li><p>See <a href="https://jinschoi.github.io/simplify3d-docs/" rel="nofollow noreferrer">Unofficial Simplify3D Documentation</a>. Go to the section talking about <em>Wipe Nozzle</em>, under the heading <strong>Extruder Tab</strong></p>

<blockquote>
  <p>Two more ooze-fighting options are Coast at end and Wipe nozzle. Coast turns off the extruder the specified distance before it normally would, to drain what would have oozed as the end of a line. This can help with ooze-induced blobs at the end of lines, but if turned up too high will lead to gaps in your print walls. Changes to this setting will be visible as gaps in the g-code preview.</p>
  
  <p>Wipe has the nozzle retrace over the start of a perimeter line at the
  end of a perimeter for the specified distance with the extruder off,
  to leave any ooze behind before proceeding. It is similar to Coast in
  that it moves the extruder without extruding, but wipe occurs after
  the end of the line while coast occurs before.</p>
</blockquote></li>
<li><p>Slic3r has some sort of coasting. But I think in their docs the option is there: <a href="http://manual.slic3r.org/expert-mode/fighting-ooze" rel="nofollow noreferrer">Slic3r Manual - Fighting Ooze</a></p>

<blockquote>
  <p>Wipe before retract - Moves the nozzle whilst retracting so as to reduce the chances of a blob forming.</p>
</blockquote></li>
</ul>

<p>As you asked for G-Code here you go:</p>

<ul>
<li><p><a href="http://forums.reprap.org/read.php?4,620368" rel="nofollow noreferrer">Reprap Forum - Wipe nozzle via GCODE</a></p>

<p>Example</p>

<pre><code>;Sliced at: {day} {date} {time}
;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
;Print time: {print_time}
;Filament used: {filament_amount}m {filament_weight}g
;Filament cost: {filament_cost}
;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line
;M109 S{print_temperature} ;Uncomment to add your own temperature line
G21        ;metric values
G90        ;absolute positioning
M82        ;set extruder to absolute mode
M107       ;start with the fan off
G28 X0 Y0  ;move X/Y to min endstops
G28 Z0     ;move Z to min endstops
M117 Auto-level...
G29        ;auto-level
;G92 Z-.01 ; Lower = Z Pos, Lift = Z Neg
M117 Preparing...
G1 Z10.0 F{travel_speed} ;move the platform down 15mm
G92 E0                  ;zero the extruded length
G1 F100 E30              ;extrude 10mm of feed stock
G92 E0                  ;zero the extruded length again
G1 F{travel_speed}
;Put printing message on LCD screen
M300 S900 P160         ;start beep
M300 S1000 P160
M300 S2000 P160
M0    ;Wait for the user
M117 Printing...
</code></pre></li>
<li><p><a href="https://forum.lulzbot.com/viewtopic.php?t=2921" rel="nofollow noreferrer">Lulzbot forum - Start GCODE Script for Wipe</a>, in particular <a href="https://forum.lulzbot.com/viewtopic.php?t=2921#p17782" rel="nofollow noreferrer">this post</a>:</p>

<p>Example</p>

<pre><code>G91 ; switch to relative positioning
G1 Z10 ; safe raise of z axis to ensure probe doesn't hit bed clamp
G90 ; switch back to absolute positioning
G28 ; home all axes
G29 ; level print bed
G1 X298 Y137 Z2 F5000 ; move to wait position right hand side of the table
G1 Z0.4 ; position nozzle
G1 E25 F300 ; purge nozzle
M400 ; wait for purge to complete
G1 X285 F1200 ; slow wipe
G1 Z0.5 F1200 ; lift
</code></pre></li>
</ul>

<p>That should get you started.</p>

CC BY-SA 3.0
2016-08-07T07:25:25.693Z
Hi! We expect answers to be self-contained, and not depend on external links (which may change or become unavailable, rendering your answer useless). It's fine to include links for further reference, but please make sure your answer can stand on its own.
Tom van der Zanden
CC BY-SA 3.0
2016-08-07T07:26:54.647Z
Fair enough. I will copy the contents.
MakerModder
CC BY-SA 3.0
2016-08-07T07:28:00.570Z
Please see http://3dprinting.stackexchange.com/help/referencing
Tom van der Zanden
CC BY-SA 4.0
2016-08-07T07:16:20.237Z
2018-07-30T16:00:39.553Z
2018-07-30T16:00:39.553Z
MakerModder
<p>Slic3r, and all other slicers that I saw, have an option called <code>Skirt</code> that enables your printer to print a number of lines around your object before it starts printing the object itself.</p>

<p>This should ensure that both the nozzle is filled with filament and the printer got rid of any burned / dirty filament when it starts printing your object.</p>

<p>If you use Slic3r as standalone, you have to activate expert mode in the preferences. If you use it through Repetier-host it should already be in expert mode.</p>

<p>You can see all available options in the <a href="http://manual.slic3r.org/expert-mode/skirt" rel="noreferrer">Slic3r documentation for Skirt</a>.</p>

CC BY-SA 4.0
2019-05-05T23:45:09.127Z
my problem with the skirt is that the first bit of filament ends up dragging behind the print head, potentially fouling up the print area...
kolosy
CC BY-SA 4.0
2019-05-06T14:08:11.340Z
@kolosy What I usually do before starting a print is extrude some filament until it gets consistent and pinch that off the printer head with a tweezer. Otherwise, make sure the adhesion to your print bed is satisfactory
Nicu Surdu
CC BY-SA 4.0
2020-12-21T14:14:32.097Z
If you can't print a skirt properly, how do you get it do do the rest of the print properly?
Perry Webb
CC BY-SA 3.0
2017-01-26T10:06:53.680Z
2017-01-26T15:40:16.233Z
2017-01-26T15:40:16.233Z
Nicu Surdu
<p>You can achieve this using the <code>G1</code> command. I don't know your exact printer, but you should be able to use something like this (add to the start G-code in your slicer):</p>

<pre><code>G1 X0 Y62 Z0.2 F9000 ; Move slightly past edge of bed

G92 E0 ; Zero extruder position

G0 E1 F100 ; Extrude 1mm of filament

G92 E0 ; Zero again

G1 X0 Y0 F9000 ; Move back to center of bed
</code></pre>

<p>The first line moves the extruder to slightly past the edge of the bed (since the diameter is 120, the radius is 60, and 62 is slightly past the maximum radius). I've set Z to 0.2mm to avoid hitting the plate, but you might be able to lower this.</p>

<p>The next 3 lines zero the extruder position, extrudes 1mm of filament, and resets it to zero (when starting a print the slicer expects E to start at 0).</p>

<p>The final line moves back to the bed center. This might not be neccesary (you might be able to replace this line with just <code>G1 F9000</code> to set the feedrate back to something that makes sense for travel moves) because you don't need to move back explicitly: the slicer will take care of moving the head in position to start the print.</p>

CC BY-SA 3.0
2016-08-21T20:53:36.183Z
This worked well for me : 

G1 X63 Y63 Z0.4 F9000 ; Move slightly past edge of bed

G92 E0 ; Zero extruder position

G0 E20 F100 ; Extrude 1mm of filament

G92 E0 ; Zero again

G1 X0 Y0 F9000 ; Move back to center of bed

G28 ; Home extruder
Thundercoal
CC BY-SA 3.0
2016-08-21T20:54:28.707Z
I just added it to the end of the "start Gcode" Gcode and the nozzle purges at the start of my prints, pefect !
Thundercoal
CC BY-SA 3.0
2016-08-21T21:12:04.183Z
For those who are curious here is the finql result. https://www.dropbox.com/s/81odyromk5i09cw/IMG_20160821_230255.jpg?dl=0
Thundercoal
CC BY-SA 3.0
2017-05-29T20:09:07.610Z
I have found it preferable to hold the printhead well above the surface while oozing/pumping waste, as it makes it easier to grab than "barely above the plate surface (even if off the edge of it.)" But mostly I do that while heating up and oozing (hold it forward and 50mm off the deck) and then use a skirt to deal with getting filament to flow nicely before printing.
Ecnerwal
CC BY-SA 3.0
2016-08-07T07:21:08.960Z
2016-08-07T07:21:08.960Z
Tom van der Zanden
<p>I own a delta 3D printer. The problem is that, at the beginning of a print the extruder outputs dirty filament. I want a clean filament flow at the start of my prints!</p>

<p>How can I make the hotend exit the print surface (glass plate) by 10mm, extrude the bad filament and go back to printing again? Can this be done with G-code?</p>

<p>My Z high is 190&nbsp;mm and the glass plate diameter is 120&nbsp;mm. I'm using Marlin + Ramps 1.4. </p>

<p>I'm using Repetier-Host and CuraEngine as Slicer, but I really would like a G-code that can work on multiple environments like Cura and Repetier. I just want to add it to the start G-code and print!</p>

<print-quality><marlin><delta>
Clean or wipe move for delta 3D printers
Thundercoal
# Clean or wipe move for delta 3D printers

(Asked by: username_0 on 2016-08-06)

I own a delta 3D printer. The problem is that, at the beginning of a print the extruder outputs dirty filament. I want a clean filament flow at the start of my prints!

How can I make the hotend exit the print surface (glass plate) by 10mm, extrude the bad filament and go back to printing again? Can this be done with G-code?

My Z high is 190 mm and the glass plate diameter is 120 mm. I'm using Marlin + Ramps 1.4.

I'm using Repetier-Host and CuraEngine as Slicer, but I really would like a G-code that can work on multiple environments like Cura and Repetier. I just want to add it to the start G-code and print!

**Tags:** print-quality, marlin, delta


---

## 3 answers

### Answer by username_2 on 2016-08-07. Score: 5 | Accepted answer

You can achieve this using the `G1` command. I don't know your exact printer, but you should be able to use something like this (add to the start G-code in your slicer):

```
G1 X0 Y62 Z0.2 F9000 ; Move slightly past edge of bed

G92 E0 ; Zero extruder position

G0 E1 F100 ; Extrude 1mm of filament

G92 E0 ; Zero again

G1 X0 Y0 F9000 ; Move back to center of bed

```

The first line moves the extruder to slightly past the edge of the bed (since the diameter is 120, the radius is 60, and 62 is slightly past the maximum radius). I've set Z to 0.2mm to avoid hitting the plate, but you might be able to lower this.

The next 3 lines zero the extruder position, extrudes 1mm of filament, and resets it to zero (when starting a print the slicer expects E to start at 0).

The final line moves back to the bed center. This might not be neccesary (you might be able to replace this line with just `G1 F9000` to set the feedrate back to something that makes sense for travel moves) because you don't need to move back explicitly: the slicer will take care of moving the head in position to start the print.

> **Comments:**
> **username_0**: This worked well for me :   G1 X63 Y63 Z0.4 F9000 ; Move slightly past edge of bed  G92 E0 ; Zero extruder position  G0 E20 F100 ; Extrude 1mm of filament  G92 E0 ; Zero again  G1 X0 Y0 F9000 ; Move back to center of bed  G28 ; Home extruder  
> **username_0**: I just added it to the end of the "start Gcode" Gcode and the nozzle purges at the start of my prints, pefect !  
> **username_0**: For those who are curious here is the finql result. https://www.dropbox.com/s/81odyromk5i09cw/IMG_20160821_230255.jpg?dl=0  
> **username_6**: I have found it preferable to hold the printhead well above the surface while oozing/pumping waste, as it makes it easier to grab than "barely above the plate surface (even if off the edge of it.)" But mostly I do that while heating up and oozing (hold it forward and 50mm off the deck) and then use a skirt to deal with getting filament to flow nicely before printing.  

---

### Answer by username_3 on 2017-01-26. Score: 6

Slic3r, and all other slicers that I saw, have an option called `Skirt` that enables your printer to print a number of lines around your object before it starts printing the object itself.

This should ensure that both the nozzle is filled with filament and the printer got rid of any burned / dirty filament when it starts printing your object.

If you use Slic3r as standalone, you have to activate expert mode in the preferences. If you use it through Repetier-host it should already be in expert mode.

You can see all available options in the [Slic3r documentation for Skirt](http://manual.slic3r.org/expert-mode/skirt).

> **Comments:**
> **username_4**: my problem with the skirt is that the first bit of filament ends up dragging behind the print head, potentially fouling up the print area...  
> **username_3**: @username_4 What I usually do before starting a print is extrude some filament until it gets consistent and pinch that off the printer head with a tweezer. Otherwise, make sure the adhesion to your print bed is satisfactory  
> **username_5**: If you can't print a skirt properly, how do you get it do do the rest of the print properly?  

---

### Answer by username_1 on 2016-08-07. Score: 5

A lot of slicers will have a Wipe option. Here are some examples:

* See [Unofficial Simplify3D Documentation](https://jinschoi.github.io/simplify3d-docs/). Go to the section talking about *Wipe Nozzle*, under the heading **Extruder Tab**

  > Two more ooze-fighting options are Coast at end and Wipe nozzle. Coast turns off the extruder the specified distance before it normally would, to drain what would have oozed as the end of a line. This can help with ooze-induced blobs at the end of lines, but if turned up too high will lead to gaps in your print walls. Changes to this setting will be visible as gaps in the g-code preview.
  >
  > Wipe has the nozzle retrace over the start of a perimeter line at the
  > end of a perimeter for the specified distance with the extruder off,
  > to leave any ooze behind before proceeding. It is similar to Coast in
  > that it moves the extruder without extruding, but wipe occurs after
  > the end of the line while coast occurs before.
* Slic3r has some sort of coasting. But I think in their docs the option is there: [Slic3r Manual - Fighting Ooze](http://manual.slic3r.org/expert-mode/fighting-ooze)

  > Wipe before retract - Moves the nozzle whilst retracting so as to reduce the chances of a blob forming.

As you asked for G-Code here you go:

* [Reprap Forum - Wipe nozzle via GCODE](http://forums.reprap.org/read.php?4,620368)

  Example

  ```
  ;Sliced at: {day} {date} {time}
  ;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
  ;Print time: {print_time}
  ;Filament used: {filament_amount}m {filament_weight}g
  ;Filament cost: {filament_cost}
  ;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line
  ;M109 S{print_temperature} ;Uncomment to add your own temperature line
  G21        ;metric values
  G90        ;absolute positioning
  M82        ;set extruder to absolute mode
  M107       ;start with the fan off
  G28 X0 Y0  ;move X/Y to min endstops
  G28 Z0     ;move Z to min endstops
  M117 Auto-level...
  G29        ;auto-level
  ;G92 Z-.01 ; Lower = Z Pos, Lift = Z Neg
  M117 Preparing...
  G1 Z10.0 F{travel_speed} ;move the platform down 15mm
  G92 E0                  ;zero the extruded length
  G1 F100 E30              ;extrude 10mm of feed stock
  G92 E0                  ;zero the extruded length again
  G1 F{travel_speed}
  ;Put printing message on LCD screen
  M300 S900 P160         ;start beep
  M300 S1000 P160
  M300 S2000 P160
  M0    ;Wait for the user
  M117 Printing...

  ```
* [Lulzbot forum - Start GCODE Script for Wipe](https://forum.lulzbot.com/viewtopic.php?t=2921), in particular [this post](https://forum.lulzbot.com/viewtopic.php?t=2921#p17782):

  Example

  ```
  G91 ; switch to relative positioning
  G1 Z10 ; safe raise of z axis to ensure probe doesn't hit bed clamp
  G90 ; switch back to absolute positioning
  G28 ; home all axes
  G29 ; level print bed
  G1 X298 Y137 Z2 F5000 ; move to wait position right hand side of the table
  G1 Z0.4 ; position nozzle
  G1 E25 F300 ; purge nozzle
  M400 ; wait for purge to complete
  G1 X285 F1200 ; slow wipe
  G1 Z0.5 F1200 ; lift

  ```

That should get you started.

> **Comments:**
> **username_2**: Hi! We expect answers to be self-contained, and not depend on external links (which may change or become unavailable, rendering your answer useless). It's fine to include links for further reference, but please make sure your answer can stand on its own.  
> **username_1**: Fair enough. I will copy the contents.  
> **username_2**: Please see http://3dprinting.stackexchange.com/help/referencing  

---

