Ender 3 (Pro/V2): Change Filament Mid Print With Cura

Whether you want to use more colors for your model or combine different materials, you can change the filament mid-print with Cura.

To change filament mid-print on an Ender 3:

  • Slice the model in Cura and switch to preview mode.
  • Choose the layer you want the new color to start on.
  • Go to Modify G-Code and select Filament Change.
  • Enter the layer number and click Close.
  • Slice the model again so that the .gcode file can reflect the change.

When To Do A Mid-Print Filament Change

Involuntarily, a mid-print filament change may be necessary if you haven’t checked the spool before hitting start and ran out of material mid-way through the process.

Voluntarily, you may want to do a mid-print filament change to switch between colors. Multi-material 3D printing also requires changing the filament mid-print.

Since multi-filament printing is only really possible on FDM printers, you might want to tackle such a project if you have an Ender 3 Pro or V2 printer.

Here’s a video outlining the process:

How To Change Filament Mid-Print on Ender 3

Changing the filament while printing can be achieved manually or through a G-Code assisted switch. The steps below will walk you through both processes.

1. Manual Switch

Switching the filament manually starts with the proper slicing of the file. Then, you have to stop the printer, unload the filament in use, and load the new spool when it’s time.

1. Prepare Your Cura File 

Even though the manual method is not G-Code assisted, you still have to change the G-Code so that it displays the layer number on the Ender 3’s screen.

Starting out with 3D printing and want to AVOID rookie MISTAKES? New: Filament Printing 101 Course
Starting out with 3D printing and want to AVOID rookie MISTAKES?
  • Our new Filament Printing 101 Course is just for you! Lean how to create perfect professional prints without all the hassle.
  • Don't let common mistakes hold you back, click the link to learn more and get ahead now!

To do that:

  • Slice the initial STL file, then select Extensions in Cura’s settings
  • Select Post Processing from the drop-down menu
  • Click on Modify G-Code and select Add a Script on the pop-up box
  • Enable the option Display Filename and Layer on LCD
  • Set the initial layer number to 0
  • Save and close the window

You now have to select the layer number at which you want to change the filament. To do that, open the settings in Cura and click on Preview.

This option will enable you to preview the sliced object. Activate Layer View in the View Type options and move the right-hand slider to find the layer at which you want to make the change. Write down the layer number (the number displayed above the slider).

2. Set The Printer 

If you want to change filament color but not type, you can set the printer (nozzle and bed temperature, extrusion speed, retraction, etc.) for the type of filament you’re using. For instance, you should set the Ender 3 for PETG or ABS, or PLA.

However, if you want to switch to a different material, you must set the nozzle temperature to the higher of the two materials while purging the first filament

See also  Drying PETG: 6 Ways To Treat Wet Filament

The bed temperature must be set to that of the material you want to use first.

3. Make The Switch 

Once you’ve set up the printer, hit start and wait until it gets closer to the layer selected in step 1.

As the print progresses, keep an eye on the screen and pause the print as soon as the correct number is displayed.


  1. Set the nozzle temperature to the highest value (based on the materials you’re using) and wait for it to heat up. You can skip this step if the nozzle is already set to a higher value.
  2. Remove the old filament from the extruder and load the new spool.
  3. Feed the new spool through the PTFE tube and hot end to purge out the first material. Continue pushing until the filament comes out through the nozzle.
  4. Remove the old filament with a pair of tweezers.
  5. If you’re changing material, adjust the nozzle temperature to 5°C higher than the recommended temperature for the filament you’re using. By overheating the filament, you can aid adhesion between the different filaments and prevent delamination later on.
  6. Resume printing and monitor extrusion for the first layers. Make sure the new layer adheres properly on top of the different materials. After five or so layers, turn down the nozzle temp by 5°C. Also, make sure the print isn’t offset at this stage. If it is, you must stop the print and start over.

2. G-Code Assisted Switch

The assisted switch method can be more accurate. When set correctly, the printer unloads the filament automatically when it’s time to switch it. You won’t have to monitor the progress or stop the process manually.

Before using this method, check the firmware your printer is using and make sure the M600 command is registered.

Most Ender 3 Pro and V2 printers use a Marlin-based firmware, and the M600 command is registered in it. However, some printers have older firmware that doesn’t recognize this command. If that’s your case, you won’t be able to use the assisted switch.

1. Prepare The File 

Similar to the manual method, this method requires you to slice the STL file beforehand. Click on Preview and check the number of the layer at which you want to switch to the new filament.

Once you’ve done that, you have to add the Filament Change command in the G-Code.

To do that:

  1. Open Cura and go to Extensions
  2. Select Post-Processing from the drop-down menu
  3. Click Modify G-Code and select Add a Script
  4. Select Filament Change and insert the number of the layer at which you want to change the filament (this is the number determined during the preview)
  5. Click close to save your selection, then slice the file again

2. Start Printing

Send the .gcode file resulting after the second slicing to the printer and initiate the process. You can now wait until the machine prints all layers up to the number inserted in the G-Code.

3. Switch The Filament 

Once the Ender 3 has printed all layers up to the inserted number, the machine will pause the printing process automatically.

See also  Best PETG Print Speed: Expert Insights For Better Results

Typically, it will take the nozzle to a predefined position (usually X=0, Y=0) and retract as much of the old filament as possible. Then, the printer will unload the filament automatically and ask for the new filament.

Follow the instructions on your printer’s LCD screen to load the new filament

The printer will now ask whether you want to purge more or continue. Select purge more and keep purging until the old filament has come out completely and the nozzle starts extruding the new filament.

Before resuming printing, check the nozzle temperature and make sure it suits the filament you’re printing with.

For the first few layers of new material, it is also recommended to set a temperature around 5°C higher than the filament’s print temperature to aid with layer adhesion.

3. Pause At the Height Switch

This method is very similar to the G-Code assisted one. The main difference is that the printer will pause and allow you to switch the filament without moving the arm to a default position.

Thanks to this difference, the risk of offset printing diminishes.

You can set the printer to pause from Extensions -> Post Processing –> Modify G-Code -> Add a script -> Pause at height.

All you have to do is to introduce the height in millimeters. The Ender 3 will pause automatically when the desired height is reached.

In addition to minimizing the risk of offset printing, this option is also ideal if you know the exact height at which you want to change the material or color.

Manual vs. G-Code Switching: What’s Better?

Printing with multiple colors or filament types is easy once you learn how to switch the spool mid-print. But which method should you choose?

Manual Switch Works For All Printers

A good point in favor of manual switching is the method’s versatility.

When switching filament through the G-Code assist method, you have to rely on the M600 command, which may not work with all Ender 3 printers.

This command is usually integrated with Marlin firmware, but it might require the Advanced Pause Feature. The feature might not be available on older firmware versions, even if they are from Marlin and include the M600 code.

If your firmware doesn’t include the M600 command or Advanced Pause Feature at all, you could update the firmware to include them.

However, nothing stops you from changing the filament manually. This method doesn’t require any G-Code aid, and it works on literally all 3D printers (Ender 3 or otherwise).

G-Code Assisted Switch Is Easier

While G-Code assisted switch might not work on all printers, this could be your best bet if the firmware on your printer includes the M600 code and the Advanced Pause Feature.

That’s because switching through this method is a lot easier.

Once you determine the layer at which you want to switch (through Preview) and insert the number in the Filament Change section, you don’t have to worry about much else.

The printer will pause and unload the filament automatically after printing the last layer before the switch, prompting you to load the new spool.

During this stage, the printer will also bring the arm to a default position automatically. Retraction also happens automatically, and generally, there is little need for purging.

See also  PLA Not Sticking To PEI: Here's A Quick Fix

Since the less you interact with the arm during the filament switch, the better, the G-Code assisted method can lower the chances of offset printing of the subsequent layers.

By comparison, the manual switch requires you to pause the printer manually and bring the arm to a default position.

Manual Switch Gives You More Control

Even though switching the filament through the G-Code assisted method is easier, another point in favor of manual switching is the enhanced control you have.

Thanks to this, you can choose to experiment with the print if you want.

For instance, the G-Code assisted switch pauses the printing process when a certain number of layers have been printed. Through the manual method, you can see when that number of layers have been printed, but you can choose to ignore the prompt and continue building the object with the original filament.

Through the manual switch, you also have more control over other settings, such as the bed temperature and filament retraction.

G-Code Assisted Switch Leaves Little Room for Error

As explained, the manual switch gives you more control. However, it also leaves more room for error.

Since the manual method requires you to pause the print, you have to keep a close eye on the process. If you get distracted and forget to check the printing process, you might realize that the Ender 3 has printed more layers than necessary.

This might not be the end of the world if you’re only experimenting, but it could set you back time and money if you’re printing a custom order or a school project.

Messing up the bed temperature while switching the filament is also more likely during a manual switch.

With the G-Code assisted method, the temperature of the bed is maintained. Thus, the first layers won’t detach from the surface, minimizing the risk of offset printing or delamination.

Lastly, as explained, you’ll interact less with the hot end.

Sure, you’ll still have to feed the new filament and do some purging, but you don’t have to move the arm to a default position manually. This further diminishes the risk of offset printing.

Wrapping Up

On most Ender 3 Pro and V2 printers, you can change the filament mid-print with Cura.

The manual method allows you to achieve this purpose regardless of the firmware version your printer runs, but it increases the probability of errors.

G-Code assisted switching lowers error probability, but this method only works on firmware versions that have an Advanced Pause Feature and the M600 code. At the same time, the G-Code assisted switch limits the amount of control you can have over the operation.

With that in mind, we hope this guide can help you choose the best filament-switching method for you.

Recent Posts