Slic3r Software

1. Firmware Type

The gcode produced by Slic3r is tailored to particular types of firmware. The first step prompts for the firmware that the printer uses. This should have been specified when the printer was built or configured. If unsure then contact the supplier.

Configuration Wizard: Firmware Type

Configuration Wizard: Firmware Type

2. Bed Size

This setting defines the maximum distance the extruder may travel along the X and Y axis. If the dimensions are not readily available for the printer then it can be easily measured.

Be sure to measure from the lower left corner where the extruder nozzle rests when are the home position to the maximum distance the nozzle can travel in each direction. Take into account that the X carriage may touch the frame before the nozzle reaches it’s full distance, this will depend on the printer make and model.

Also remember to check any firmware end-stop settings which may limit X/Y movement.

Configuration Wizard: Bed Size

Configuration Wizard: Bed Size

3. Nozzle Diameter

The diameter of the hot-end nozzle is usually clearly displayed either in the description of the hot-end, or in the associated documentation, when the hot-end is purchased. Common values are 0.5mm and 0.35mm.

If the nozzle was home-made, or came from a source without a diameter given, then carefully measure the aperture as accurately as possible. One way of determining nozzle size is to very slowly (1mm/s) extrude some filament into free air and measure the thickness of the resulting extrusion1. This has the benefit of taking die swell into account, and consequently may be a useful thing to do even if the diameter is known.

Configuration Wizard: Nozzle Diameter

Configuration Wizard: Nozzle Diameter

4. Filament Diameter

For Slic3r to produce accurate results it must know as accurately as possible how much material is pushed through the extruder. Therefore it is vital to give it as precise a value as possible for the filament diameter.

Although the filament used in FDM printers is sold as being either 3mm or 1.75mm this is only a general guide. The diameter can vary between manufacturers and even between batches. Therefore it is highly recommended to take multiple measurements from along a length of the filament and use the average. For example, measurements of 2.89, 2.88, 2.90 and 2.91 would yield an average of 2.895, and so this would be used.

Configuration Wizard: Filament Diamter

Configuration Wizard: Filament Diamter

5. Extrusion Temperature

The extrusion temperature will depend on the material, and most can operate over a range of temperatures. The supplier should provide guidance as to which temperatures are suitable. A very general rule of thumb is that PLA lies between 160°C and 230°C, and ABS lies between 215°C and 250°C. More exotic materials will have a different range.

This is one parameter which you will want to fine tune when you start producing prints. The optimal temperature can vary even between colours of the same material. Another factor which may affect the chosen temperature is how fast the extrusion is, where generally faster extrusion runs hotter.

Note: One may choose to control the extruder temperature manually from the printer controller. In this case the temperature can be set to zero.

Configuration Wizard: Extrusion Temperature

Configuration Wizard: Extrusion Temperature

6. Bed Temperature

If the printer has a heated bed then this parameter may be set. As with the extruder temperature, the value will depend on the material used. A rule of thumb is that PLA requires  60°C and ABS requires  110°C.

Note: One may choose to control the bed temperature manually from the printer controller. In this case the temperature can be set to zero.

Configuration Wizard: Bed Temperature

Configuration Wizard: Bed Temperature

At this stage the wizard is complete and the basic configuration is defined.

Configuration Wizard: End

Configuration Wizard: End

Before delving into producing the first print it is worthwhile taking a little detour to talk about the importance of getting the first layer right. As many have found through trial and error, if the first layer is not the best it can be then it can lead to complete failure, parts detaching, and warping. There are several techniques and recommendations one can heed in order to minimise the chance of this happening.

Level bed.

Having a level bed is critical. If the distance between the nozzle tip and the bed deviates by even a small amount it can result in either the material not lying down on the bed (because the nozzle is too close and scrapes the bed instead), or the material lying too high from the bed and not adhering correctly.

Higher temperature.

The extruder hot-end and bed, if it is heated, can be made hotter for the first layer, thus decreasing the viscosity of the material being printed. As a rule of thumb, an additonal 5° is recommended.

Lower speeds.

Slowing down the extruder for the first layer reduces the forces applied to the molten material as it emerges, reducing the chances of it being stretched too much and not adhering correctly. 30% or 50% of the normal speed is recommended.

Correctly calibrated extrusion rates.

If too much material is laid down then the nozzle may drag through it on the second pass, causing it to lift off the bed (particularly if the material has cooled). Too little material may result in the first layer coming loose later in the print, leading either to detached objects or warping. For these reasons it is important to have a well-calibrated extrusion rate as recommended in §[calibration]).

First layer height.

A thicker layer height will provide more flow, and consequently more heat, making the extrusion adhere to the bed more. It also gives the benefit of giving more tolerance for the levelness of the bed. It is recommended to raise the first layer height to match the diameter of the nozzle, e.g. a first layer height of 0.35mm for a 0.35mm nozzle. Note: The first layer height is set this way automatically in simple mode.

Fatter extrusion width.

The more material touching the bed, the better the object will adhere to it, and this can be achieved by increasing the extrusion width of the first layer, either by a percentage or a fixed amount. Any spaces between the extrusions are adjusted accordingly.

A value of approximately 200% is usually recommended, but note that the value is calculated from the layer height and so the value should only be set if the layer height is the highest possible. For example, if the layer height is 0.1mm, and the extrusion width is set to 200%, then the actual extruded width will only be 0.2mm, which is smaller than the nozzle. This would cause poor flow and lead to a failed print. It is therefore highly recommended to combine the high first layer height technique recommended above with this one. Setting the first layer height to 0.35mm and the first extrusion width to 200% would result in a nice fat extrusion 0.65mm wide.

Bed material.

Many options exist for the material to use for the bed, and preparing the right surface can vastly improve first layer adhesion.

PLA is more forgiving and works well on PET, Kapton, or blue painters tape.

ABS usually needs more cajoling and, whilst it can print well on PET and Kapton, there are reports that people have success by applying hairspray to the bed before printing. Others have reported that an ABS slurry (made from dissolving some ABS in Acetone) thinly applied can also help keep the print attached.

No cooling.

Directly related with the above, it makes no sense to increase the temperature of the first layer and still have a fan or other cooling mechanism at work. Keeping the fan turned off for the first few layers is generally recommended.

Yet another step lies between now and the first print – a model has to found and then sliced.

Model Formats

Slic3r accepts the following file types.

  • STereoLithography (STL) files can come from a wide variety of sources and are now a de facto standard in 3D printing. The files simply describe the surface geometry of a 3D object without any additional information (such as colour or material), and it is this simplicity that has probably made the format ubiquitous.
  • Wavefront OBJ files are an open format originally used in an animation application from Wavefront Technologies, but has since been adopted by the wider 3D modelling community. It is similar to the STL format.
  • Additive Manufacturing File Format (AMF) was developed in response to the limited nature of the STL format. In addition to describing the geometry of the 3D model it can also describe colours and materials, as well as more complex attributes, such as gradient mixes and multiple object arrangements (constellations). Whilst the format is deemed a standard it has yet to be widely adopted in the 3D maker community.

Finding Models

The 3D model files may come from an online repository, such as Thingiverse1 or GrabCAD2, or be created from a CAD program, such as FreeCAD3, Sketchup4, or OpenSCAD5, or an online CAD tool such as Shapesmith6.

You may wish to view the files before slicing and there are many free applications available, one of which is Meshlab7 – a comprehensive tool for viewing and working with 3D files.

Shapesmith online CAD tool.

Shapesmith online CAD tool.

Working with Plater

Slic3r has a tool, called Plater, which allows one or more models to be loaded and arranged before being sliced.



Once you have acquired a model, drag it onto the Plater window (or use the Add button below the file list) to load it into Slic3r. In the figure below, the traditional RepRap Minimug8 is loaded, and is viewed from above. The ring around the model is a skirt – a single perimeter, several millimeters away from the model, which is extruded first. This is useful in making sure the plastic is flowing smoothly from the nozzle when the model is starting to be printed.

Minimug model.

Minimug model.

STL file loaded.

STL file loaded.

The model can be repositioned by dragging the representation of it on the left of the screen around the bed. Note that the dimensions of the bed should match your printer, as given during the initial configuration above.

On the right-hand side is the list of currently loaded files. The buttons along the top of the file list allow you to arrange the models.

  • More/Less – Adjust how many copies should be printed.
  • 45°/Rotate – Rotate the selected model around the Z axis, either in 45° increments clockwise or counter-clockwise, or by a given amount.
  • Scale – Increase or decrease the size of the printed model.
  • Split – Divides a model which consists of more than one part into it’s constituent parts, allowing each one to be arranged individually.

The buttons along the bottom of the file list allow you to add, remove, auto-arrange, or export the models.

  • Add – Opens a file dialog to add a model to the plater, as an alternative to dropping a file directly.
  • Delete/Delete All – Remove one or all models from the plater.
  • Autoarrange – Attempt to arrange the models to give the optimal layout.
  • Export G-code – Starts slicing the model and produces a G-Code file.
  • Export STL – Save the current set of models as a single STL file.

Cleaning STLs

If the 3D mesh described in the model contains holes, or edges are misaligned (known as being non-manifold), then Slic3r may have problems working on it. Slic3r will attempt to fix any problems it can, but some problems are out of its reach. If the application complains that a model cannot be sliced correctly then there are several options available: see the chapter about Repairing Models.

At this stage Slic3r has been configured and a model has been acquired, sliced and made ready for print. Now would be the time to fire up the printer and try it out.

A variety of host software is available to send the G-code to the printer. Amongst the open-source solutions are: Printrun1, Repetier2 and Repsnapper3.

The following sections will cover the options available in expert mode, and look at advanced printing techniques, including special cases and troubleshooting.



4. Simple Mode

Slic3r has two modes of operation, Simple and Expert. These may be chosen from thePreferences window (found under the File menu).



Simple mode offers a reduced set of options, enough for the beginner to get started with. Expert mode give more control over how Slic3r produces the G-code and will be looked at later.

The Print Settings tab provides the opportunity to change settings related to the actual print. Whereas the other tabs are changed rarely, the settings on this tab will be modified regularly, possibly for each model printed.

Simple Mode: Print Settings.

Simple Mode: Print Settings.


Layer height is the thickness of each layer, and it is the step along the vertical axis taken before extruding a new layer atop the previous one. There are several factors that influence how high each layer should be:

  • Desired resolution – Lower layer height should result in prints with less noticeable ribs or bands, as each layer is smaller. Aesthetics plays a role here, but also the type of model, for example, a mechanical part may not need such a high resolution finish, whereas a presentation piece may do so.
  • Print speed – Shorter layers will result in smoother prints but each print will take longer, simply because the extruder must trace the pattern more times. A later goal will be to strike a balance between layer height, the speed of the printer, and the quality of the resulting print.

Perimeters defines the minimum number of vertical shells (i.e. walls) a print will have. Unless the model requires single width walls it is generally recommended to have a minimum of two perimeters as this gives some insurance that if a section of the perimeter is not printed correctly then the second perimeter will help cover it.

The upper and lowermost layers that sandwich the model are filled with a Solid layers pattern. For the bottom layers the important factor to consider is how the surface will look should there be a mistake whilst laying down the first layer, and for this reason it is recommended to have at least two bottom layers.

A similar consideration is required for the top layers. Because the intermediate layers are likely to be filled with a pattern set less than 100% then the covering layers will have to bridge this pattern and this can require more than one pass to cover completely.

An example of insufficient top layers.

An example of insufficient top layers.

Another tip to consider: Setting the top solid layer to zero, and setting the infill also to zero, will result in a hollow receptacle, ideal for turning models into vases1 for example. Here manipulating the settings within Slic3r can be used to generate different kinds of prints, and not only be used to control surface accuracy.

Creating a vase from a solid model.

Creating a vase from a solid model.


Fill density is defined on a scale of between 0 and 1, where 1 is 100% and 0.4 would be 40%. For the majority of cases it makes no sense to 100% fill the model with plastic, this would be a waste of material and take a long time. Instead, most models can be filled with less material which is then sandwiched between layers filled at 100% (see Solid layers above).

A density value of 0.4 is enough to give almost all models good mechanical strength. A value of 0.2 is usually the minimum required to support flat ceilings.

Slic3r offers several fill patterns which will be discussed in more depth in section – Infill Choices. Choosing a Fill pattern will depend on the kind of model, the desired structural strength, print speed, and personal taste. The more exotic fill methods are usually too slow and unnecessarily complex for most use cases, and so most of the time the infill pattern is eitherrectilinearline, or honeycomb. Honeycomb gives the most strength but is slower than both rectilinear or line.

Support material.

Printing a model from the bottom up, as with FDM, means that any significant overhangs will be printed in the air, and most likely droop or not print correctly. Choosing support material (Generate support material) will add additional structures around the model which will build up to then support the overhanging part. The Pattern spacing option determines how dense the support material is printed.

An example of an object printed with support material.

An example of an object printed with support material.

Tip: It is sometimes worth considering altering the orientation of the model in order to possibly reduce overhangs.

Raft layers will add additional layers underneath the model and stems from the early days of 3D printing. It can help with prints without a heated bed, or where the bed is not very flat, but it is usually not required and is not recommended. The raft also requires post-processing to remove it.


In simple mode there are only three speed settings to consider:

  • Perimeters – The outline of the model may benefit from being printed slightly slower so that the outside skin of the print has fewer blemishes.
  • Infill – As the infill is hidden this can be extruded a little faster. Take care though not to go too fast as higher speeds results in thinner extrusions, and this may affect how the extrusions bond.
  • Travel – The jump between the end of one extrusion and the next should usually be performed as quickly as the printer will allow in order to minimise any mess caused by material oozing from the nozzle.


Brim width is used to add more perimeters to the first layer, as a base flange, in order to provide more surface area for the print to stick to the bed with in order to reduce warping (see §). The brim is then cut away once the print is finished and removed from the bed.

An example of brim.

An example of brim.

Sequential Printing.

This feature allows to compose a plate of objects but have the printer complete each one individually before going back to Z = 0 and starting with the next one. See the section about Sequential Printing in the Advanced Topics chapter.

Filament Settings

The Filament Settings will normally be used infrequently, for example on receipt of a new roll of filament.

Simple Mode: Filament Settings.

Simple Mode: Filament Settings.


The Diameter setting will already have been filled from the value given during the wizard (see p.), but can be updated here.

The Extrusion multiplier setting allows the fine tuning of the extrusion flow rate, and is is given as a factor, e.g. 1 means 100%, 1.5 would mean 150%. Whilst the value should ideally be set in the firmware it can be useful to test slight changes to the rate by altering this value. It varies the amount of plastic proportionally and should be changed in very small steps (e.g. +/- 0.05) as the effects are very visible.


These values are also filled from the wizard, but here the opportunity exists to set the temperature for the first layer (see p.).

Printer Settings

The Printer Settings will be updated the least, unless Slic3r is going to be used for many printers, for example, in a 3D printer farm.

Simple Mode: Printer Settings.

Simple Mode: Printer Settings.

Size and coordinates.

The Bed size setting is taken from the wizard (see p.) and is only used for previewing the model in the plater.

The Print center is the point around which the print will be centered. A Bed size of 200mmx200mm and a Print center of 100mmx100mm would sit the print in the middle. Should it be desired to print away from the center, because of a scratch in the glass perhaps, then this option should be used.

Z offset can be used to compensate for an incorrectly calibrated Z end-stop. If the nozzle stops slightly too far from the bed, then adding a negative value will offset all layers by that amount. The correct solution however is to fix the end-stop itself.

The optimal Z endstop position is where the nozzle tip barely touches the surface of the bed when homed. A sheet of paper makes a good gauge for this very small distance. It is not recommended to use this setting to try and improve layer adhesion, by “squashing” the bottom layer into the bed, instead look at the suggestions in section .


As selected in the wizard (see p.), G-code flavour defines the dialect of G-code generated.


Nozzle diameter was defined in the wizard (see p.).


Unless the material being extruded has a very high viscosity it may ooze between extrusions due to gravity. This can be remedied by actively retracting the filament between extrusions. Setting theLength parameter to a positive value will cause the filament to be reversed by that many millimeters before travel. The retraction will then be compensated for by the same amount after the travel move, before starting the new extrusion path.

A value of between 1 and 2mm is usually recommended. Bowden extruders may need up to 4 or 5mm due to the hysteresis introduced by the tube. Setting the Lift Z parameter to a positive value will raise the entire extruder on the Z axis by that many millimeters during each travel. This can be useful to ensure the nozzle will not catch on any already laid filament, however it is usually not necessary and will slow the print speed. A value of 0.1mm is usually sufficient.

Start, End and Layer Chance G-codes.

Custom G-code commands can be run before a print starts and after a print finishes.

Placeholders can be inserted in the G-code commands2. For example [next_extruder] would return the index of the next extruder.

The RepRap wiki is a good resource to learn about the variety of G-codes available:

Note: Be sure to check that a given G-code is valid for your firmware.

The codes specified in Start G-code are inserted at the beginning of the output file, directly after the temperature control commands for extruder and bed. Note that if temperature control commands are specified (M104 and M190) then these will replace the temperature G-codes introduced by the Filament settings.

Some common G-codes to use before the print starts are:

  • G28 – Homes all the axes.

Some common G-codes to use after the print ends are:

  • M104 S0 – Sets the extruder temperature to zero.
  • M140 S0 – Sets the heated bed temperature to zero.
  • G28 X0 – Home the X axis.
  • M84 – Disables the motors.
5. Expert Mode

Once the printer is reliably producing good quality prints it may be desirable to increase the speed. Doing this provides several benefits, the most obvious of which is that the results are produced quicker, but also faster print times can be utilised in producing more layers, i.e. lower layer height, thus improving perceived print quality. An additional benefit is that a faster travel movement, between extrusions, can reduce the effects of oozing.

The best approach is to increment the various speed parameters in small steps and observe the effect each change has on print quality. Travel speed is a safe starting point, and it is not unrealistic to attain speeds of up to 250mm/s (if your printer can handle it). Adjusting the speed of perimeters, infill is available in simple mode, and the general rule is to have the perimeter go a little slower than the infill in order to reduce possible blemishes on the surface (infill can be faster because slight gaps will not matter as much).

Expert mode offers more parameters to fine tune printer speeds. Differentiation between external, small and other perimeters, infill locations, and bridges and gaps are available, as well as the ability to slow down for the first layer.

Expert mode speed options.

Expert mode speed options.

Where indicated a value can be given in percentage. This is in relation to the preceding value, e.g. 50% solid infill would be half of the value defined for infill.

A few general guidelines for each option:

  • Perimeters – In expert mode this parameter can be increased slightly as theExternal perimeters option can be used to ensure blemish free external faces.
  • Small perimeters – Meant for holes, islands and fine details, a slower speed here is recommended.
  • External perimeters – A slightly slower value may ensure cleaner surfaces.
  • Infill – As fast as you can without compromising the integrity of the fill structure. Faster extrusions can break and result in weak spots.
  • Solid infill – The bottom of the model, and any additional solid layers is usually slightly slower than infill but faster than perimeters.
  • Top solid infill – Allow time for the extrusion to cleanly cover the previous top layers and result in a tidy top surface. the last few layers should have bridged the infill structure nicely, preparing the way for a neat finish.
  • Support material – Generally support structures are quick and dirty, and so long as the base is adequately supported they can be built as quickly as they can.
  • Bridges – Having the extrusion span distances depends on the material and cooling. Going too slow will result in sagging, too fast will result in broken strands. Experimentation is the key here, but generally bridging runs slower than perimeters.
  • Gap fill – Filling in small gaps results in the extruder quickly oscillating and the resulting shaking and resonance could have a detrimental affect on the printer. A smaller value here can guard against this. A setting of zero disables gap filling completely.
  • Travel – As fast as your printer will allow in order to minimise ooze.
  • First layer speed – As mentioned in section , the first layer is important to lay down correctly, and a slower pace helps enormously. Setting a value of 50%, or even less, can really help.

Acceleration control is an advanced setting allowing acceleration settings for perimeters, infill, bridge, as well as a default setting, to be made. Deciding which values to set depends on the capabilities of the machine. Any settings within the firmware may be a good starting point.

Take into account any restrictions enforced by the firmware as many have settings for the maximum safe speed of each axis.

There are several considerations when choosing an infill pattern: object strength, time and material, personal preference. It can be inferred that a more complex pattern will require more moves, and hence take more time and material.

Infill pattern settings.

Infill pattern settings.

Slic3r offers several infill patterns, four regular, and three more exotic flavours. The numbers given in brackets below each figure are a rough estimate of material used and time taken for a simple 20mm cube model1. Note that this is only indicative, as model complexity and other factors will affect time and material.

Infill pattern: Line (344.51mm / 5m:20s)

Infill pattern: Line (344.51mm / 5m:20s)

Infill pattern: Rectilinear (350.57mm / 5m:23s)

Infill pattern: Rectilinear (350.57mm / 5m:23s)

Infill pattern: Concentric (351.80mm / 5m:30s)

Infill pattern: Concentric (351.80mm / 5m:30s)

Infill pattern: Honeycomb (362.73mm / 5m:39s)

Infill pattern: Honeycomb (362.73mm / 5m:39s)

Infill pattern: Hilbert Curve (332.82mm / 5m:28s)

Infill pattern: Hilbert Curve (332.82mm / 5m:28s)

Infill pattern: Archimedean Chords (333.66mm / 5m:27s)

Infill pattern: Archimedean Chords (333.66mm / 5m:27s)

Infill pattern: Octagram Spiral (318.63mm / 5m:15s)

Infill pattern: Octagram Spiral (318.63mm / 5m:15s)

Certain model types are more suited for a particular pattern, for example organic versus mechanical types. Figure shows how a honeycomb fill may suit this mechanical part better because each hexagon bonds with the same underlying pattern each layer, forming a strong vertical structure.

Infill pattern comparison in a complex object. Left to Right: honeycomb, line

Infill pattern comparison in a complex object. Left to Right: honeycomb, line

Most models require only a low density infill, as providing more than, say, 50% will produce a very tightly packed model which uses more material than required. For this reason a common range of patterns is between 10% and 30%, however the requirements of the model will determine which density is best. Figure shows how the patterns change as the density increases.

Infill patterns at varying densities. Left to Right: 20%,40%,60%,80%. Top to Bottom: Honeycomb, Concentric, Line, Rectilinear, Hilbert Curve, Archimedean Chords, Octagram Spiral

Infill patterns at varying densities. Left to Right: 20%,40%,60%,80%. Top to Bottom: Honeycomb, Concentric, Line, Rectilinear, Hilbert Curve, Archimedean Chords, Octagram Spiral

  1. Taken from↩

Slic3r contains several advanced infill settings which can help produce better extrusions.

Infill advanced settings.

Infill advanced settings.

  • Infill every n layers – Will produce sparse vertical infill by skipping a set number of layers. This can be used to speed up print times where the missing infill is acceptable.
  • Only infill where needed – Slic3r will analyse the model and choose where infill is required in order to support internal ceilings and overhangs. Useful for reducing time and materials.
  • Solid infill every n layers – Forces a solid fill pattern on the specified layers. Zero will disable this option.
  • Fill angle – By default the infill pattern runs at 45° to the model to provide the best adhesion to wall structures. Infill extrusions that run adjacent to perimeters are liable to de-laminate under stress. Some models may benefit from rotating the fill angle to ensure the optimal direction of the extrusion.
  • Solid infill threshold area – Small areas within the model are usually best off being filled completely to provide structural integrity. This will however take more time and material, and can result in parts being unnecessarily solid. Adjust this option to balance these needs.
  • Only retract when crossing perimeters – Retracting, to prevent ooze, is unnecessary if the extruder remains within the boundaries of the model. Care should be taken if the print material oozes excessively, as not retracting may result in enough material loss to affect the quality of the subsequent extrusion. However, most modern printers and materials rarely suffer from such extreme ooze problems.
  • Infill before perimeters – Reverses the order in which the layer is printed. Usually the perimeter is laid down initially, followed by the infill, and this is usually the preferable as the perimeter acts as a wall containing the infill.

Unless the material being extruded has a very high viscosity it will ooze from the nozzle in between extrusions. There are several settings in Slic3r to which can help to remedy this.

The retraction settings, found in the Printer tab, tell the printer to pull back the filament between extrusion moves. This can alleviate the pressure in the nozzle, thus reducing ooze. After the subsequent travel move the retraction is reversed to prepare the extruder for the next extrusion.

Retraction settings.

Retraction settings.

  • Length – The number of millimeters to retract. Note that the measurement is taken from the raw filament entering the extruder. A value of between 1 and 2mm is usually recommended. Bowden extruders may need up to 4 or 5mm due to the hysteresis introduced by the tube.
  • Lift Z – Raises the entire extruder on the Z axis by that many millimeters during each travel. This can be useful to ensure the nozzle will not catch on any already laid filament, however it is usually not necessary and will slow the print speed. A value of 0.1mm is usually sufficient.
  • Speed – The speed at which the extruder motor will pull back the filament. The value should be set to as quick as the extruder can handle without skipping steps, and it is worth experimenting with this value to find the quickest retraction possible.
  • Extra length on restart – Adds an extra length of filament after the retraction is compensated after the travel move. This setting is rarely used, however should the print show signs of not having enough material after travel moves then it may be useful to add a small amount of additional material.
  • Minimum travel after retraction – Triggering a retraction after very short moves is usually unnecessary as the amount of ooze is usually insignificant and it slows down the print times. Set the number of millimeters minimum distance the nozzle must move before considering a retraction. If the printer handles ooze well this can be increased to 5 or 6mm.
  • Retract on layer change – Movement along the Z axis must also be considered when dealing with oozing, otherwise blobs may occur. It is recommended to leave this setting on.
  • Wipe before retract – Moves the nozzle whilst retracting so as to reduce the chances of a blob forming.

Additionally there are several settings in the Print tab which can help control oozing.

  • Only retract when crossing perimeters (Infill) – Tells Slic3r to only retract if the nozzle will cross the threshold of the current island being extruded. Slight ooze within the walls of a part are not seen and can usually be accepted.
  • Avoid crossing perimeters (Layers and perimeters – Advanced) – Will force the nozzle to follow perimeters as much as possible to minimise the number of times it must cross them when moving around, and between, islands. This has a negative impact on both G-code generation and print times.
  • Seam position (Layers and perimeters – Vertical shells) – This setting determines the start point of perimeter loops, and thus the position of the potentially visible vertical seam on the side of the object. The available options are:
    • Random – This will choose a different point for each layer, thus making the seam less noticeable.
    • Nearest – This will try to choose a concave non-overhang vertex so that the seam is hidden in the inside of the concave angle. If no concave non-overhang vertices are available, it will choose a convex non-overhang vertex. If none are available, it will choose a non-overhang vertex. The choice among the candidates is operated so that the start point is the nearest to the previous extruder position. So this option will optimize for short travels.
    • Aligned – This will use the same logic as Nearest for finding the candidates, but it will choose the one that is nearest to the start point of the previous layer. This will ensure the seam is mostly aligned throughout the whole object.

See also section : Sequential Printing for another technique which can minimise strings forming between objects.


The Skirt setting adds an extrusion a short distance away from the perimiter of the object. This can ensure that the material is flowing smoothly from the extruder before it starts on the model proper.

Skirt settings.

Skirt settings.

  • Loops – How many circuits should be completed before starting on the model. One loop is usually sufficient.
  • Distance from object – The millimeters between the object and the skirt. The default of 6mm is usually sufficient.
  • Skirt height – The number of layers to lay down a skirt for. For ensuring the material is flowing smoothly, one layer is sufficient, however the skirt function can also be used to build walls around the object in case it should be protected from draughts.
  • Minimum extrusion length – Dictates a minimum number of millimeters that the skirt should be, should the loop around the object not be enough.


Brim width is used to add more perimeters to the first layer, as a base flange, in order to provide more surface area for the print to stick to the bed with in order to reduce warping (see §). The brim is then cut away once the print is finished and removed from the bed.

An example of brim.

An example of brim.

Temperature plays a key part in determining print quality. Too hot and the material deforms, too cool and layer adhesion may be problematic. Applying cooling will allow the freshly deposited material to solidify enough to provide a good base for the next layer, helping with overhangs, small details and bridges.

There are two main techniques for cooling: adding a fan and slowing down the print speed. Slic3r may choose to use both techniques, using a fan first, and then slowing down the print if the layer time is too fast.

Cooling strategy.

Cooling strategy.

Figure shows the strategy adopted by Slic3r. Reading from right to left, when the minimum fan threshold (#2) is reached the fan is turned on. This increases in intensity as the layer time decreases. The print speed remains constant until the estimated print time drops below a certain threshold (#1), this is when the print speed is reduced until it reaches it’s minimum value.


Most electronics and firmware allow the addition of a fan via a spare connector. These can then be instructed with G-code, from Slic3r, to turn on or off as the model requires, and to rotate at different speeds.

Care should be taken with the positioning of the fan so that it does not cool any heated bed more than necessary. It should also not cool the heater block of the hot-end so as not to force it to do more work and waste energy. The air movement should aim for the nozzle tip, flowing over the freshly extruded material.

A duct may help in guiding the flow correctly, and there are several designs available online, for a wide variety of printers.

Slowing Down

Slic3r can tell the printer to slow down if the estimated layer time is above a certain threshold.

Care must be taken as the intended effect could be mitigated by the nozzle not moving far enough away from the fresh extrusion, a problem with small, detailed layers. For this reason it is usually recommended to use a fan where possible.


Cooling settings.

Cooling settings.

  • Keep fan always on – If this is enabled, fan will never be disabled and will be kept running at least at its minimum speed. Useful for PLA, harmful for ABS.
  • Enable auto cooling – This enables/disables the cooling logic. A descriptive text below this option describes the effects of the current configuration.
  • Fan speed – Determines the minimum and maximum speeds – useful for fans that run too fast by default.
  • Bridges fan speed – As the material stretches over wide gaps, it makes sense to try and cool it as much as possible, therefore a full fan speed is recommended.
  • Disable fan for first n layers – Section detailed how important the first layer is, and so it makes sense not to apply the fan until sure the print is securely attached to the bed. Keeping the fan turned off for the first two or three layers is a good idea.
  • Enable fan if print time is below t seconds – Triggers the fan if the layer will be completed within the given number of seconds.
  • Slow down if layer print time is below t seconds – Slows down the print if the layer will be completed within the given number of seconds.
  • Min print speed – A lower limit on how slowly a layer can be printed.

Generally, most 3D models will print with overhanging parts by up to a certain degree. The angle is determined by several factors, most notably layer height and extrusion width, and is usually around 45°. For models with larger overhangs a support structure may have to be printed below it. This incurs the use of more material, longer print times, and post printing clean-up.

Support structure options.

Support structure options.

The first thing to do is activate the support material option by checking theGenerate support material box. Providing a value of zero to the Overhang thresholdparameter tells Slic3r to detect places to provide support automatically, otherwise the degrees given will be used. Support generation is a relatively complex topic, and there are several aspects which determine the optimal support, it is strongly recommended to set the threshold to zero and allow Slic3r to determine the support required.

Small models, and those with small footprints, can sometimes break or detach from the bed. Therefore the Enforce support option will cause support structures to be printed for the given number of layers, regardless of the angle threshold value.

To demonstrate the infill patterns the minimug model was tilted by 45° along the x axis, as shown in figure .

Minimug model, tilted 45°.

Minimug model, tilted 45°.

As with infill, there are several patterns available for the support structure.

Support infill pattern: Rectilinear

Support infill pattern: Rectilinear

Support infill pattern: Rectilinear Grid

Support infill pattern: Rectilinear Grid

Support infill pattern: Honeycomb

Support infill pattern: Honeycomb

Pattern Spacing determines the distance between support lines, and is akin to infill density apart from being defined only in mm. If changing this attribute take into account the width of the support extrusion and the amount of support material that will adhere to the object.

Care should be taken to choose a support pattern which matches the model, where the support material attaches perpendicularly to the wall of the object, rather than in parallel, so it will be easy to remove. If the support structure does run along the length of a wall then the Pattern Angleoption allows the direction of the support lines to be rotated.

Example of pattern angle rotated 45°.

Example of pattern angle rotated 45°.

Extrusion widths options.

Extrusion widths options.

One reason for modifying the extrusion width has already been discussed: increasing first layer extrusion width in order to improve bed adhesion (see p.). There are some further cases where it may be beneficial to modify extrusion widths.

  • Perimeter – A lower value will produce thinner extrusions which in turn will produce more accurate surfaces.
  • Infill and Solid Infill – A thicker extrusion for infill will produce faster prints and stronger parts.
  • Top infill – A thinner extrusion will improve surface finish and ensure corners are tightly filled.
  • Support material – As with the infill options, a thicker extrusion will speed up print time.

It is important to remember that if the extrusion width is expressed as a percentage then this is computed from the Layer height property, and not the Default extrusion widthsetting.

When printing several objects at once it can be useful to print each one separately as this will minimise oozing and strings running between the prints. It will also decrease the risk of a problem ruining the entire print – if one part detaches or fails in some way, it will not be dragged into other parts of the print during each layer.

Sequential printing options.

Sequential printing options.

Care has to be taken that the nozzle and extruder does not interfere with already printed parts. Slic3r should warn if it detects the nozzle or extruder will collide with a part, but double check that the layout of the parts will not cause problems. The Extruder clearance parameters help Slic3r detect potential collisions:

  • Radius – The clearance that should be given around the extruder. Take care if the extruder is not mounted centrally – take the largest safe value.
  • Height – The vertical distance between the nozzle tip and the X axis rods, or lowest part which may interfere with a finished print.
The clearance cylinder around an extruder.

The clearance cylinder around an extruder.

Slic3r gives the ability to adjust the layer height between arbitrary positions along the Z axis. That is, parts of the model could be printed with a coarse layer height, for example vertical sections, and other parts could be printed with a finer layer height, for example sloping gradients where layering appears more pronounced.

The model in fig. gives a rudimentary example of where variable layer heights could be used to improve print quality. The walls of the structure need not be rendered in high definition for acceptable quality, however the sloping roof shows layer artifacts as the layer height of 0.4mm is too coarse, particularly for the very top, which is flattened. This is shown in the G-Code rendering in fig .

Example model highlighting use case for variable layer heights.

Example model highlighting use case for variable layer heights.

Example with normal layer height.

Example with normal layer height.

The variable layer height options are available by double clicking on a part name in the Plater window. This will cause a pop-up window to be displayed which contains two tabs. The first gives some information about the model, as shown in fig. .

Variable layer height options - Info.

Variable layer height options – Info.

It is worth noting the height of the model, as this will be useful when calculating the maximum Z height.

The second tab (fig. ) presents a table where each row defines a layer height for a particular range along the Z axis, given in millimeters. In this example the walls of the model are printed at 0.4mm, the steeper parts of the roof are printed at 0.2mm, and the less steep at 0.15mm. Note that each range divides exactly by the given layer height so there are no “gaps” between sections.

Variable layer height options - Layers.

Variable layer height options – Layers.

The resulting G-Code (fig. ) shows a higher definition which should result in a higher quality print.

Example with variable layer height.

Example with variable layer height.

Fig. shows the example model printed. The print on the left has 0.4mm layer height throughout, whereas the print on the right has the variable layer height.

Example print with variable layer height.

Example print with variable layer height.

An additional feature of the variable layers height option is that by entering a zero for a range that part of the model will not be printed. Fig. shows the G-Code where layers between 0 and 4mm are skipped. This is a useful way of dividing a tall model into multiple, shorter sections which can be printed individually and assembled afterwards.

Example with skipped layers.

Example with skipped layers.


6. Input/Output Files

If the 3D mesh described in the model contains holes, or edges are misaligned (known as being non-manifold), then Slic3r may have problems working on it. Slic3r will attempt to fix any problems it can, but some problems are out of its reach. If the application complains that a model cannot be sliced correctly then there are several options available, and the ones described here are all free at the time of writing.

Netfabb Studio

Netfabb produce a range of 3D modelling applications, including a free basic version1. This version includes a mesh repair module which can help eliminate the various problems faced. Up-to-date instructions can be found on the Netfabb wiki2, the following is a quick overview of the steps involved.

Netfabb Studio: Part repair.

Netfabb Studio: Part repair.

  • Start Netfabb Studio, and load the problem STL file, either via the File menu or by dragging and dropping it onto the workspace. If Netfabb detects a problem it will show a red warning sign in the bottom right-hand corner.
  • To run the repair scripts, select the part and then either click the first aid icon in the toolbar (the red cross), or select from the context menu Extras->Repair Part. This will open the part repair tab and show the status of the model.
  • The Actions and the Repair scripts tabs offer several repair scripts which can be applied manually, however for the purposes of this overview selecting theAutomatic repair script will fix most problems.
  • The automatic repair button presents two options: Default and Simple. Choosing Default will cover most cases. Select execute to run the scripts.
  • Once the part is repaired the repairs must be applied by selecting Apply repair, choosing whether to override the existing part or not.
  • The part may then be exported by selecting Export part->As STL from the context menu.
  • If Netfabb still detects that the exported part will still contain errors then it will provide the option to apply further repairs before exporting.
    Netfabb Studio: Part export.

Netfabb Studio: Part export.

Netfabb Cloud Service

Netfabb also hosts a web service where an STL file may be uploaded for it to be checked and repaired3.

Netfabb Cloud Services.

Netfabb Cloud Services.

  • Navigate to
  • Choose the STL file to upload using the button provided.
  • An email address must be given to inform you when the service is finished.
  • Choose whether metric or imperial measurements should be used.
  • Read and accept the terms of service, and then click Upload to Cloud.
  • Once the service has analysed and repaired the file an email is sent providing the download link to the repaired file.


Freecad4 is a comprehensive, and free, CAD program which comes with a mesh module, in which repairs to degenerate models can be made. the following steps outline how a problem model file can be analysed and repaired.

FreeCAD part repair.

FreeCAD part repair.

  • Start FreeCAD and from the start splash page choose Working with Meshes.
  • Load the model by dragging and dropping it onto the workspace or via the File menu. A small message in the bottom left corner will indicate if the model appears to have problems.
  • From the menu choose Meshes->Analyze->Evaluate & Repair mesh to bring up the repair options dialog.
  • From the options dialog choose the loaded mesh, then perform each analysis be clicking theAnalyze button by each problem type, or select Repetitive Repair at the bottom to perform all checks. If a corresponding problem is detected the Repair button becomes enabled.
  • For each desired repair hit the Repair button.
  • It is important to review the effect the repair script has made to the model. It may be the case that the script damages the file, rather than repair, for example by removing important triangles.
  • Export the repaired model via the Export menu option or context menu.

Slic3r can produce output for other types of 3D printers which require each layer to be represented as image, for example DLP resin or powder-bed printers. These expect an image usually consisting of a white silhouette on a black background (See fig ). Almost all image formats can be used (bmp, png, etc.), however, because the image may have to be scaled, it is usually desirable to use a vector format, rather than a bitmap format. For this reason it is common to use Scalable Vector Graphics (SVG) format.

Example SVG slice.

Example SVG slice.

Slic3r provides the ability to produce SVG output suitable for such printers. Instead of using thePlater, the process begins by selecting the Slice to SVG... option from the File menu. This prompts for the source file (STL, OBJ or AMF), and when selected will prompt for where the output SVG file should be saved. Slic3r will then go and produce the SVG file.

Attempting to view the SVG file in a browser will result in only the first layer being shown, and only the negative islands within the model (as the browser background is usually white).

SVG in the browser.

SVG in the browser.

For this reason a small web application was written to allow each slice to be displayed, and for it to be shown on a black background1. Navigate to the application and drag and drop the SVG file onto the screen to have it load and display.

Slic3r SVG Viewer.

Slic3r SVG Viewer.

SVG Settings

The majority of options in Slic3r are not required when generating SVG, however theLayer height setting will dictate the number of layers. Note that Slic3r restricts the layer height to be smaller than the nozzle diameter, so this may also have to increased if higher layers are desired.

Printing with SVG

Whilst SVG output can be used in a range of printers, the following example shows how the file can be used with a DLP resin printer. Using a modified version of Kliment’s Printrun2 the SVG file can be loaded directly and sent to a DLP projector. The Z axis is controlled via G-Code commands sent through the printcore component, which means that standard RepRap electronics, such as RAMPS, can be used.

Printing SVG with Projectlayer.

Printing SVG with Projectlayer.



7. Topics

A printer with more than one extruder can be used in different ways. If you have a multi-part model, that defines distinct regions, you can assign each one of them to an extruder. If you have a single part model, you can assign different roles to each extruder: for example, you can infill using a larger nozzle or you can build support material with soluble filament.

Configuring Extruders

In the Printer Settings tab there is an Extruders option, under Capabilities, which allows the number of extruders to be defined. Incrementing this value will dynamically add another extruder definition to the left-hand pane.

Multiple extruder options - Printer Settings Tab (General). Note the two extruders defined in the left-hand pane.

Multiple extruder options – Printer Settings Tab (General). Note the two extruders defined in the left-hand pane.

Each extruder can be configured as usual, however there are additional settings which must be set which are particular to multi-extruder setups.

Multiple extruder options - Printer Settings Tab (Extruder).

Multiple extruder options – Printer Settings Tab (Extruder).

The Extruder offset is to be used should the firmware not handle the displacement of each additional nozzle. Your firmware documentation should tell you if this is the case. Each additional extruder is given an offset in relation to the first one (which usually has 0,0 offset). If the firmware does handle the displacements then all offsets can remain at 0,0.

Because the secondary extruder will be dormant whilst the first is working, and vice-versa, it is important that the material is sufficiently retracted to stop oozing. As with the regular retraction settings the Length options is measured from the raw filament entering the extruder.

Configuring Tool Changes

The Custom G-code section of the Printer Settings tab has an option for inserting G-code between tool changes. As with all custom G-code sections, placeholder variables can be used to reference Slic3r settings. This includes the [previous_extruder] and[next_extruder] variables.

Multiple extruder options - Tool change G-code.

Multiple extruder options – Tool change G-code.

Assigning Filaments

When a printer profile with multiple extruders has been selected the Plater tab allows the selection of a different filament for each extruder.

Plater with multiple filament options.

Plater with multiple filament options.

Assigning Extruders for Single-material Objects

For single material prints, where the secondary extruder is to be tasked with a particular extrusion, the Multiple Extruders section of the Print Settings tab gives the ability to assign an extruder to each extrusion type.

Multiple extruder options - Print Settings Tab.

Multiple extruder options – Print Settings Tab.

Printing Multi-material Objects

If a multi-material AMF file already exists, because the CAD program can export such a format, then this can be loaded into Slic3r in the usual way. The mapping between object materials and extruders is sequential, i.e. the first material is assigned to the first extruder, etc.

Generating multi-material AMF files

Slic3r has the feature to combine multiple STL files into a multi-material AMF file.

  • Split the original design into the separate parts within the CAD program, and export each part as STL.
  • Within Slic3r, choose Combine multi-material STL files... from the Filemenu.
  • When prompted with a file dialog, choose the first STL, which will be assigned the first material (and hence the first extruder). Click Open to be prompted for the next STL, and so on until each STL is assigned a material. To signal there are no more STL files, chooseCancel.
  • The following file dialog prompts for the location and name of the AMF file.

Once generated the file can be loaded and printed as described above.

Almost all Slic3r features can be accessed from the command line. You can thus call Slic3r as part of a script or install it in an embedded system or headless server.

To get the full listing and reference of available command line switches, just run:

slic3r --help

Note: you might need to replace slic3r with the name and/or path to the Slic3r executable which might be:

  • slic3r-console.exe on Windows
  • slic3r on GNU/Linux
  • on MacOS X
  • perl on all platforms if you’re running from git/source code

Generating G-code

In order to slice a model into G-code you just need to supply the STL file along with any config option you’d like to use:

slic3r my_model.stl --layer-height 0.2

This will generate a file named my_model.gcode in the same directory as the input STL file. You may want to specify a custom output path:

slic3r my_model.stl --layer-height 0.2 --output /path/to/output.gcode

The argument for --output can also be a directory; in that case the file will follow the automatic naming scheme (which you can override using the --output-filename-format option; see manual chapter about placeholders).


Note: the print/filament/printer presets defined in the graphical interface are completely ignored when running in command line mode. Slic3r will always default to its factory default settings.

You’ll need to export your desired configuration with the Export Config… command, which is located in the File menu. It will prompt you to save a .ini file that you can load from command line this way:

slic3r my_model.stl --load my_config.ini

You can override single options by appending them as command line switches:

slic3r my_model.stl --load my_config.ini --fill-pattern concentric

You can also create a config file from command line:

slic3r --nozzle-diameter 0.35 --filament-diameter 2.85 
    --temperature 185 --first-layer-temperature 195 --layer-height 0.2 
    --save my_config.ini

If you’re an advanced user you can split your configuration into multiple .ini files and load them by appending multiple --load switches.

One more way to use the print/filament/printer presets on command line is launching Slic3r with the --autosave option:

slic3r --autosave my_config.ini

The above command will launch the graphical interface of Slic3r but will automatically export the current configuration to the specified file. Thus, the last used presets will be remembered whenever you --load that file.

Processing multiple input files

If you supply multiple input files Slic3r will process them separately, by generating a distinct G-code file for each one:

slic3r model1.stl model2.stl model3.stl

The command above will generate model1.gcodemodel2.gcodemodel3.gcode.

If you want to process multiple files as a single print job, you can use the --merge (or -m) option:

slic3r -m model1.stl model2.stl model3.stl

This will only generate a file named model1.gcode (but you can use the --output option described above to set a custom name) containing all three objects. Note that auto-arranging currently works best when all objects have similar sizes.

Positioning files in the G-code coordinates

Input file(s) will be centered around the G-code point defined by the --print-center option:

slic3r my_model.stl --print-center 40,40

By default, the center point is set to 100,100.

Repairing models

Slic3r can be used to repair files from command line:

slic3r --repair my_model.stl

This will generate a file named my_model_fixed.obj in the same directory as the original one. This output filename is not customizable at the moment, as well as the OBJ output format which is preferred over STL because it will keep the model manifold by avoiding numerical issues frequently happening with STL. Note that Slic3r and most 3D applications are able to read OBJ files.

The --info switch can be used to get information about a file:

slic3r --info cube.stl
Info about cube.stl:
  size:              x=20.000 y=20.000 z=20.000
  number of facets:  12
  number of shells:  1
  volume:            8000
  needed repair:     no

Cutting models

Slic3r can be used to repair models from command line:

slic3r --cut 10.2 my_model.stl

This will generate two files named my_model_lower.stl and my_model_upper.stl in the same directory as the original model.

Note: the object will be automatically placed on the z = 0 plane, so the argument for the --cutoption is relative to the object’s bottom, and not to the original coordinate system.

Embedding Slic3r

The following options can be useful for embedding Slic3r into host applications:

  • --no-plater will launch Slic3r in a configuration-only mode, thus avoiding confusion if the host application provides its own model loading dialog;
  • --autosave will automatically export the last selected config to a specified file (see the above paragraph about Configuration for its usage);
  • --gui-mode can take the simple or expert arguments, and will force Slic3r to launch in the specified mode.

There may be times when the G-Code generated by Slic3r has to be tweaked or modified after it has been created. For this reason there exists the ability to run arbitrary scripts as part of the final steps in the slicing process.

Example scripts can be found in the GitHub repository or in the RepRap forum.

Note: post-processing scripts can be written in any language (Perl, Python, Ruby, Bash etc.). They just need to be executable and to accept the path to the G-code file as the only argument.

In the Output options section of the Print Settings tab lies thePost-processing scripts option. The absolute path to each script can be added, separated by semicolons. Each scripts should be recognised by the host system, and be executable.

Post-processing script option.

Post-processing script option.

Each script will be passed the absolute path of the G-code file that Slic3r generates. The script will need to modify it in-place; alternatively it can output the new G-code to a temporary file and then overwrite the original one with it.

All Slic3r configuration options are made available to the scripts by way of environment variables. These all begin with SLIC3R_, for example SLIC3R_LAYER_HEIGHT. The following script would leave the G-code unmodified and just write out all Slic3r options to standard output:

echo "Post-processing G-code file: $*"
env | grep ^SLIC3R

For security reasons you can’t supply arguments to the scripts. However, you can just write a wrapper script.

Perl example

Perl’s in-place mode (perl -i) makes it easy to modify the contents of the G-Code file, without having to copy, edit, then replace the original. The following example will simply output the contents to standard output:

#!/usr/bin/perl -i
use strict;
use warnings;

while (<>) {
     # modify $_ here before printing

If you are getting a can’t do inplace edit without backup error when specifying the post-process script, try adding $^I = '.bak'; before the while loop. This will create a backup file of the generated G-Code file. Windows does not like to have two scripts creating and/or accessing a single file at once, so a backup is needed.

There are two ways in which to organise the configuration settings: exporting and importing the configuration settings, and profiles. The former is available in both simple and expert mode, whereas profiles is only available in expert mode.

Exporting and Importing Configuration

The current set of configuration options can be simply exported via the Export Config File menu option. This saves all the values into a text file with a .ini extension. Previously saved files can be loaded with the Load Config menu option.

This gives a rudimentary means to store different configuration settings for different needs. For example a set with slightly faster print speeds, or a different infill pattern. However this way of organising things will quickly become frustrating, as each minor change to a parameter may have to be duplicated across many configurations. For this reason, profiles are a more suitable way of managing multiple configurations.

This method also allows configuration to be transferred between machines, or stored remotely.


After a few prints it will become apparent that it is worth having a set of configuration options to choose from, and that some parameters change at different rates as others. In expert mode, profiles can be created for Print, Filament and Printer settings, with the expectation that the printer settings change least often, filament rarely, and the print settings could be changed for each model. These different profiles can be mixed and matched as desired, and can be selected either in their respective tabs, or directly from the plater.

Creating Profiles

Open the desired tab and change the settings as necessary. Once satisfied, click the save icon to the left above the setting titles, and give a suitable name when prompted.

Saving a profile.

Saving a profile.

Profiles can be deleted by choosing the profile to delete and clicking the red delete button next to the save button.

Deleting a profile.

Deleting a profile.

This page explains the math used in Slic3r to determine the amount of flow. Documenting it serves as reference and as request for comments since better models might be worth to try.

Understanding extrusion width

Two main questions affect Slic3r’s work:

  1. How distant should extrusion paths be positioned in order to get a good continuous finish?
  2. How much material must be extruded along such paths?

If two adjacent paths are too close (or too much material is extruded), they’ll overlap. If two adjacent paths are too distant (or not enough material is extruded), gaps will be visible and/or the extrusions will delaminate because of not enough bonding.

By extruding more or less while moving (i.e. by changing the flow speed/head speed ratio) we can make paths thicker or thinner:



Thicker paths will have better bonding with the lower layer, thus are good for mechanical parts. However, they’ll be less able to approximate the object shape and fill tiny gaps or narrow curves (think of a drill bit: a larger one will not be able to enter narrow places). On the contrary, thinner paths will provide less bonding but better shape accuracy.

However note that extrusion width can be controlled only when extruding over an existing surface (such as a previous layer or print bed). If we extrude in free air (i.e. when bridging), the resulting shape will be always round and equal to the nozzle diameter:



Actually, if you reduce the material flow you’ll get smaller circles to some extent, until the plastic viscosity decides it’s time to break your bridge because of too much tension. If, on the contrary, you extrude too much material, the shape of the extruded filament won’t change (still equal to nozzle diameter) but you’ll get a loose bridge.

So, let’s start from a definition:

Extrusion Width is the thickness of a single filament extruded either in free air or above a surface. It’s not the distance of two adjacent paths since some overlap will be generally applied in order to get better bonding.

Bridges: the easy case

As said above, there’s only one correct flow rate for bridging: the one that doesn’t make your bridge sag or break. Extrusions are round and their diameter is equal to the nozzle diameter. Parallel paths will be positioned so that they are tangent, thus the spacing between one path and its neighbor is equal to nozzle diameter as well. (In case of bridges, we want no overlap because it has proven to drag the existing paths.)

The required material volume for a path of unitary length is calculated accordingly to the cylindric shape, thus with a circular cross-sectional area:

E = (nozzle_diameter/2)^2 * PI

Extruding on top of a surface

In this case the problem is: what shape will our extrusion get? We know it will get squashed horizontally, but will it have a rectangular or oval shape? What’s the maximum extrusion width we can get with a given nozzle diameter before plastic starts curling at the sides?

Slic3r assumes that the cross-sectional shape of an extrusion is a rectangle with semicircular ends. So the relationship between desired extrusion width and volume to extrude is the following:



When target extrusion width is thinner than layer height the shape is unpredictable so we just use the same rectangular formula but discourage usage of such thin extrusion values.

The above formula provides a function that correlates the target extrusion width with the amount of material to extrude per distance unit:

E = f(extrusion_width, layer_height)

Spacing paths

Okay, now we we know how much to extrude to make a single path of the desired width. But how much should we overlap paths in order to get perfect bonding?

Supposing no overlap, thus tangent paths, there would be empty space (yellow):



The cross-section area of such voids is generally:

void_area = layer_height^2 - (layer_height/2)^2 * PI

Ideally, we would want to fill all of that yellow area by placing the extrusions closed to each other. However, it’s very unlikely that the second extrusion will fill the space below the previous one, so there would still be a little void. The ideal overlap would be something like:

0 < overlap_factor*void_area < void_area

with overlap_factor ranging from 0 to 1. overlap_factor represents how much void remains between the extrusions. It’s difficult to estimate this amount, since it probably depends also on viscosity of plastic, extrusion speed and temperature. In the past, several values were tried for overlap_factor, but some users were still reporting too sparse paths. A value of 1 is currently being used to guarantee that the error (which is always present) is fully on the side of abundant extrusion rather than lacking material.

Path spacing is thus:

spacing = extrusion_width - layer_height * (1 - PI/4)

Sane defaults

Slic3r allows users to define extrusion width manually for each kind of extrusion (perimeters, infill, support material etc.) but will calculate sane defaults if no custom values are entered.

For the outermost loop of perimeters (aka external perimeters) Slic3r will default to a thin extrusion width, equal to nozzle diameter * 1.05. This is considered the thinnest safe extrusion width. A thin extrusion width provides better accuracy to the object shape and minimizes the flow errors caused by irregular filament.

Extrusion width for other things is calculated by getting the cross-sectional area of the configured nozzle diameter and then calculating the extrusion width produced by extruding that amount of material. In other words, by matching flow speed and head speed. The purpose of this logic is to find the “native” flow that minimizes side forces during extrusion. Such calculated extrusion with is capped to max value equal to nozzle_diameter * 1.7, except for internal sparse infill where the full native flow is used.


8. Troubleshooting

If you’re not satisfied by the dimensional accuracy of your prints, first off make sure your firmwareis correctly configured: the steps/mm values for X, Y, and Z axes must be calculated according to your belts, pulleys and leadscrews. Please don’t calibrate by trial-and-error: those values should be exact. Use Josef Prusa’s Calculator.

Vertical dimensions

If your vertical dimensions are wrong (i.e. along the Z axis) -and your object is usually shorter than expected- it means your nozzle is too low, thus the first layer is pressed too much on the print bed. To fix this, you might want to raise your Z endstop or increase the Z offset option in Slic3r.

Horizontal dimensions

The usual issue is about holes being too small. This usually only affects holes on the horizontal plane (XY). There are several reasons for this. Let’s see them one by one:

Plastic shrinkage

Plastic shrinks when cooling. Different kinds of plastic exhibit different shrinkage, which might also depend on temperature. Because of such shrinkage, circular (or polygonal) holes laid by the extruder at the nominal diameter will end up smaller after cooling.

More material is deposited in the inside

When you extrude along a curve, more material per distance unit is deposited in the concave side. Such excessive material makes the internal radius shorter. A compensation algorithm was proposed by Adrian Bowyer, and it was implemented in Slic3r some time ago but many users complained about holes being too large – it was removed thereafter since smaller holes are better than larger holes since they can be drilled.

Curves are approximated by polygons

STL files only contain meshes composed by flat triangles, so its planar sections can only contain polygonal shapes. For example, a circular hole is approximated by a polygon:



Increasing the number of segments in your CAD before exporting the STL file will help reducing the error. OpenSCAD users might want to use the polyhole() function developed by nopheadthat calculates the optimal number of segments.

Filament tends to cut corners

Since curves are approximated by polygons, there are sharp vertices at their vertices. However,plastic tends to make rounded corners, thus reducing the internal area of the hole even more.

Z wobble

Even if the dimensional accuracy of a single layer was correct, several stacked layers might make the hole smaller if they’re not exactly aligned. Z wobble caused by mechanical issues will reduce hole size to the internal envelope of the stacked layers:



Non-regular filament section

Low-quality and medium-quality filaments are not very regular in diameter. If you measure their diameter along a single meter of them, you’ll often find many different values (and many low-quality filaments are even not perfectly round in section). This continuous variation in diameter will produce irregular flow and the resulting hole will still be the internal envelope of all the layers:



Flow math

Okay, all of the above causes do not depend on Slic3r and, when possible, they need to be fixedbefore attempting any software solution.

That said, the flow math used in Slic3r plays a good role in making correct dimensions, since it tries to guess what the shape of the extruded material will be and how thick the extrusion will result on the horizontal plane given an amount of material. Being an approximation, it carries an error. The usual way to deal with these issues involves tuning the Extrusion Multiplier setting in order to increase/reduce the amount of plastic, thus making extrusions more or less thick. But this will also affect solid surfaces, so it’s not the ideal solution.

For more exact dimensions you need to check the External Perimeters First option. Printing external perimeters first will prevent the shift caused by extrudate overlap. On the other hand, printing internal perimeters first hides seams better, so it’s your take.

A new XY Size Compensation option was also introduced that allows to grow/shrink object shape in order to compensate for the measured error. Supposing your holes are smaller by 0.1mm, you can just enter -0.05 in this option to get them compensated (negative sign means shrink inwards).

Undulations in the walls of a print may be due to wobble in the Z axis. A thorough analysis of the potential causes is given by whosawhatsis1 in his article “Taxonomy of Z axis artifacts in extrusion-based 3d printing”2, however one point of particular interest for users of Slic3r is the wobble caused by motor steps not matching the pitch of the Z rods thread. This can be addressed by ensuring the Layer Height setting is a multiple of the full step length.