Using and customizing PrusaSlicer presets¶
The preset management features in PrusaSlicer provide very flexible and powerful control over the slicing process. Unfortunately, they can be a bit confusing and overwhelming. These notes provide some tips on taking full advantage of these capabilities.
These notes are based on my experiences with the Prusa i3 Mk3 and Artillery/Evnovo Sidewinder X1 printers. If you are using a different printer, please verify the hardware details are similar.
PrusaSlicer settings are organized into four distinct categories:
Printer presets containing all of the printer hardware settings such as bed size and extruder configuration.
Physical Printer presets are only created when you associate a printer with an OctoPrint or other shared network-based server.
Filament presets containing all of the filament-specific settings such as print temperatures.
Print Settings presets containing all of the settings for a specific print job such as layer height and extrusion width.
Physical printer presets are new as of PrusaSlicer version 2.3.0. These settings were previously part of Printer presets.
Presets in PrusaSlicer are linked to specific printers. PrusaSlicer makes extensive use of dependencies to associate print and filament presets with a specific printer manufacturer or type.
If you are using a non-Prusa preset, including a custom preset you created based on a Prusa system preset, some filament or print settings presets may be hidden. See dependencies below for work-arounds.
Prusa provides a default set of presets for each supported printer.
You can add profiles for supported printers in the Configuration Manager menus in PrusaSlicer.
Presets for non-Prusa printers have been developed and contributed by the community. However, not all printers necessarily have the same profiles, nor are they developed to any consistent degree of quality or completeness.
The available filament and print settings presets vary widely between different printer selections.
With the release of PrusaSlicer 2.3.0, Prusa has made significant changes to how both custom printer presets and 3rd party printer presets function. See custom printer presets below for more information.
As you use PrusaSlicer, you may find that you need to create presets for an unsupported printer, or simply wish to tweak existing settings. To do this, you need to develop a basic understanding of how profiles work under the hood.
Importing, and exporting PrusaSlicer preset files¶
A PrusaSlicer preset is a file with the .ini extension that contains a collection of PrusaSlicer settings. Preset files can be opened, examined, and edited with any text editor. You can import and export three different types of presets:
Configuration (config files)
Configuration bundle (config bundles)
Project files (3MF project files)
Each of these options will store settings, but each operates in very different ways.
A Config is a single .ini file containing PrusaSlicer settings. A config can contain any number of PrusaSlicer settings. The settings in a config file are not organized by print, filament, or printer. Think of a config as a configuration snapshot containing all of your current PrusaSlicer settings.
Importing a config¶
When importing a config:
Any settings in the config over-write the current setting in memory.
Settings changed by the config will be reflected under the print, filament, or printer settings tabs just as if you had typed them in manually.
Settings in a config are not organized under print, filament, or printer categories.
If any settings are changed in print, filament, or printer presets, the preset is given a temporary name in PrusaSlicer.
These settings are not automatically saved, and will be reset if changed, if a new profile is selected, or if PrusaSlicer is restarted.
Exporting a config¶
When exporting a config:
When exported, all current PrusaSlicer settings are written to the config file. This includes all print, filament, and printer settings.
Only one value for each setting is exported. A single config cannot contain more than one variation of any setting.
Settings in a config file are not grouped into print, filament, or printer presets.
Any information related to loaded models (STLs) or modifiers is not exported.
Configuration Bundle files¶
A Config bundle is a single .ini file containing PrusaSlicer settings. A config can contain any number of PrusaSlicer settings. The settings in a config file are organized as print, filament, or printer settings and a single configuration bundle can contain multiple presets, each of which can contain variations on any setting.
Importing a config bundle¶
When importing a config bundle:
Settings in the config bundle are written and automatically saved as presets that can be selected with the drop-down menus in PrusaSlicer.
No settings in memory are changed. You must select a newly-imported preset to use the imported settings.
Exporting a config bundle¶
When exporting a config bundle:
All non-system presets currently loaded in memory are written to a single configuration bundle .ini file.
You cannot specify which presets to write to the configuration bundle.
Separate presets are created for print, filament, and printer settings.
A config bundle is essentially a backup of any preset customization that you have saved or in memory.
A project file is a .3MF file that contains everything associated with your current working PrusaSlicer environment:
A snapshot of your currently selected PrusaSlicer print, filament, printer, and physical printer settings.
Any .stl models currently placed on the plater.
Any modifiers or other additions to models.
Everything in a project file is a snapshot:
If you later make changes to presets in PrusaSlicer, these changes are not reflected in saved project files.
If you later make changes to the .stl models, the .3mf file is not updated.
Importing a project file¶
Import project file
Exporting a project file¶
Export project file
Prusa provides a number of system presets for each supported printer. When a printer is selected, a configuration bundle is imported which contains print, filament, and printer presets for that printer. Note that the print and filament settings presets provide by Prusa are specific to each equipment manufacturer. The configuration bundles containing system presets can be found under:
C:\users\<username>\AppData\Roaming\PrusaSlicer\vendoron Microsoft Windows.
/Users/<username>/Library/Application Support/PrusaSlicer/vendoron MacOS.
PrusaSlicer ships with configuration bundles for printers from:
Prusa Research (
Others are being added regularly.
System presets cannot be directly modified. You can, however, make copies of system presets, modify any settings you like, and save the resulting custom preset.
Saved preset file location¶
PrusaSlicer saves your custom presets as individual configuration files. Each preset is saved as an individual configuration file with the name of the preset. Saved profiles can be found in two locations:
Individual folders for print, filament, and printer profiles are stored under:
C:\users\<username>\AppData\Roaming\PrusaSliceron Microsoft Windows.
/Users/<username>/Library/Application Support/PrusaSliceron MacOS.
PrusaSlicer is also very good at creating regular snapshots of your custom profiles whenever the software is updated. Snapshot folders for any custom presets are saved under:
C:\users\<username>\AppData\Roaming\PrusaSlicer\snapshotson Microsoft Windows.
/Users/<username>/Library/Application Support/PrusaSlicer/snapshotson MacOS.
Note that these files are configuration files. You will need to format them as configuration bundle file if you want to save multiple settings profiles in a single file.
Modifying settings and detaching from system presets¶
You’ll need to know how to detach system presets if either of the following apply:
You want to make changes to default PrusaSlicer presets.
You are using a non-Prusa printer profile, or a customized Prusa profile, and have lost access to the system presets (notably filament presets).
If you want to modify or copy a system preset, you must first create a copy by:
Use the Configuration Assistant to enable at least one Prusa printer preset that you want to modify, or that is similar to the printer you are building a preset for.
Select a system Prusa printer preset.
Select the Prusa printer preset, then select the desired system profile in the Print, Filament, or Settings tab drop-down selection box.
Clicking the Detach from system preset button at the right.
Giving the new profile a unique name. The name must be different than any existing system profile. By default, PrusaSlicer appends - Detached to the system profile name.
This pic shows the option to detach a system filament preset:
If you just want to change a few settings, this is all you need to do. Everything can be done in the PrusaSlicer GUI. If you want to make more extensive changes, or share settings with others, you’ll want to spend some time learning about configuration profiles.
Creating custom PrusaSlicer configuration bundles¶
The process of creating PrusaSlicer presets and configuration bundle files is not well documented, nor properly exposed in the GUI yet. This should change rapidly as Prusa continues the rapid development pace with PrusaSlicer.
Presets contain customized settings – or more correctly, setting overrides – that change the default PrusaSlicer behavior. If you to save any settings changes permanently, you must save them in a custom preset. If you want to share settings with others or create a backup of your custom settings, a configuration bundle file can be used to contain all of your custom settings as individual presets in a single file. A configuration bundle can contain presets for any number or combination of:
Naming custom presets¶
When you save a preset in the PrusaSlicer GUI or create a configuration bundle, you must specify a unique name for each preset. Presets are specified in PrusaSlicer configuration bundle files as follows:
Preset names are stored within square brackets
Preset names are preceded with a type specifying a printer, physical printer, filament, or print settings preset.
Printer presets have the tag
printer:prepended to the preset name. These presets contain all of the printer hardware settings such as bed size and extruder configuration.
Physical Printer presets have the tag
physical_printer:prepended to the preset name. These presets associate a printer with an OctoPrint or other shared network-based server. Note that PrusaSlicer does not ship with physical printer presets defined. You must create them during initial configuration.
Filament presets have the tag
filament:prepended to the preset name. These contain all of the filament-specific settings such as print temperatures.
Print Settings presets have the tag
print:prepended to the preset name. These contain all of the settings for a specific print job such as layer height and extrusion width.
For example, a printer name would look like
printer:Custom printer preset name]
A few notes on configuration bundles:
You only need to create custom presets based on the settings being changed. If you are only changing filament settings, there is no need to update print or printer presets.
Each type of preset is self-contained and operate independently of other types.
A configuration bundle file can contain one or many presets.
Each preset must start with the name of the preset contained within square brackets (
) and prepended with one of the preset types.
Understanding inheritance in PrusaSlicer configuration bundles¶
Any preset in a configuration bundle can be used as a baseline for other presets in the same file. You simply define a master preset containing settings common to multiple presets, then inherit settings from the baseline preset. Any values not explicitly set under the preset name are inherited from the baseline preset. For example, I use this approach to define a master baseline printer definition with most of the desired settings, then sub-profiles for each nozzle size.
Here’s an example baseline profile as provided in the
PrusaResearch.ini that contains the system profiles for Prusa printers.
1 2 3 4 5 6
[print:*common*] avoid_crossing_perimeters = 0 bridge_acceleration = 1000 bridge_angle = 0 bridge_flow_ratio = 0.8 [... other settings]
Note that the preset name, common, is delimited by asterisks. Any profile name contained within asterisks indicates that the profile will not be shown to the user in the dropdown profile selection boxes.
Presets can inherit from other presets in the same
.ini file. Here’s another example from
PrusaResearch.ini defining a profile based on the common baseline preset defined above.
1 2 3 4 5 6
[print:*0.05mm*] inherits = *common* bottom_solid_layers = 10 bridge_acceleration = 300 bridge_flow_ratio = 0.7 [... other settings]
You can only inherit from presets defined in the same
Every preset must have a unique name.
Any settings not defined in this preset will be inherited from the common preset.
You can use multiple levels of inheritance. Here’s yet-another example from
PrusaResearch.ini that defines a profile based on the 0.05mm preset defined above.
1 2 3 4
[print:0.05mm ULTRADETAIL] inherits = *0.05mm* compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK2.*/ and nozzle_diameter==0.4 and num_extruders==1 infill_extrusion_width = 0.5
Any settings not in this profile will be inherited from the 0.05mm ULTRADETAIL preset, which in turn, inherits settings from the common preset. This allows a new profile to be defined with only a few lines of settings.
Associating physical printers with printer profiles in configuration bundles¶
Physical printers can be associated with printer profiles with
preset_name =. Just be sure to specify the printer profile name exactly in the
preset_name= line. If any printer profiles are not associated with your physical printer profile, you will get the annoying “extra” physical printer and associated popups when you import a configuration bundle.
Inheritance is only applied when a configuration bundle is imported into PrusaSlicer:
When you export a configuration bundle from PrusaSlicer, all inheritance statements are removed, and all settings are copied to each preset. Each preset contains all settings and no link is maintained between presets.
When you import a configuration bundle into PrusaSlicer, each imported profile inherits the settings from any baseline presets only at the time of import. No link is maintained between presets.
This means that your master configuration bundle must currently be maintained by hand. Be careful not to overwrite you master configuration bundle files.
Maintaining configuration bundles¶
I maintain presets two totally different printers: My Prusa i3 Mk3 and an Artillery Sidewinder X1. A few tips:
Maintain separate configuration bundle (
.ini) files for each printer. That way you can reload changes for one without resetting the others. The config bundle for each printer should contain your baseline and sub-profiles for each nozzle. I’ve noticed that the Prusa profiles do not always specify the
printer_modelsetting. Using that setting greatly simplifies setting up profile dependencies. I use MK3 for my Prusa and SWX1 for my Sidewinder.
Similarly, create separate configuration bundle (
.ini) files for print settings. I like to use different settings for each printer, so maintain a print setting configuration bundle for each. You can use inheritance here again to reduce redundancy, as well as dependencies to reduce the amount of clutter in the menus.
Not surprisingly, keeping filament profiles in their own bundle keeps these frequently-changing profiles from screwing with your more stable printer and print settings. I don’t use inheritance all that much in the filament profiles, but Prusa has taken this to an extreme with their profiles. Look in the
PrusaResearch.inifile for examples.
Make a point of transferring any changes you make on the fly in the slicer to your config bundles before you forget. It is really nice to be able to use the configuration assistant to remove all of my custom files and reload a clean configuration in seconds, but it’s always aggravating to realize I lost a good filament profile.
It is a little frustrating that so much of this is currently hidden under the hood, but I am also pleased to see these capabilities being thought about and implemented in PrusaSlicer. As the GUI and documentation catch up with the underlying features, PrusaSlicer should become even more powerful. Given what’s going on in the world and what Prusa has been up to in the last 12 months, I’m glad to see that they are still pouring so many resources into an open-source slicer that does not directly generate profit for them.
Understanding dependencies in PrusaSlicer¶
Dependencies are used to restrict the visibility of presets based on other selected presets. Print and filament setting dependencies are used in the Prusa system profiles to restrict preset visibility to specific printers, MMU presence, and nozzle sizes.
Unfortunately, dependencies are not well documented, and are a bit arcane. The image below highlights the dependencies field in filament settings:
Unfortunately, the entry field is restricted to a single line. Here’s the text shown in the example:
! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)
To understand and decipher dependencies, be aware of the following:
The dependency line written using PERL regular expression syntax. (Slic3r, the predecessor to PrusaSlicer, was written in PERL.)
Any PrusaSlicer setting can be used in the match pattern. In this example,
single_extruder_multi_materialare PrusaSlicer settings as specified in a preset config file.
A full discussion of PERL syntax is beyond what I want to cover in these notes, but in short, this expression will match if the
printer_notes do NOT contain both “PRINTER_VENDOR_PRUSA3D” and “PRINTER_MODEL_MK2.5 or 3” and the setting
single_extruder_multi_material is true.
I am not a fan of Prusa’s current approach. They are making extensive use of values in the
printer_notes field and trying to use very complex regular expression matching. In most cases, these conditions can be greatly simplified.
Here’s what Prusa uses to restrict a 0.2mm SPEED preset to the Prusa i3 Mk3 printer with a 0.4mm nozzle:
printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter==0.4
This regular expression restricts visibility of this profile to printer presets that contain both the strings “PRINTER_VENDOR_PRUSA3D” and “PRINTER_MODEL_MK3” in the
printer_notes field, and have the setting
nozzle_diameter to exactly 0.4mm.
I’ve simplified this to:
printer_model=~/MK3/ and nozzle_diameter>=0.25
This will match on a printer preset with
printer_model set to Mk3 and
nozzle_diameter set to 0.25mm or larger. I prefer this approach since it uses discrete settings rather than string matching, and works with a range of nozzle sizes.
printer_model exists in PrusaSlicer settings, but is not set in the Prusa system profiles. This setting is not exposed in the PrusaSlicer GUI, but can be set to any desired value by editing the configuration file.
Dependencies can help keep the number of options displayed to a manageable number. Unfortunately, they can also cause confusion when presets appear and disappear seemingly at random. If you’re just trying to make your presets visible, you can leave the dependencies blank. If you want to use a system profile with a non-Prusa printer preset, you can make a copy of the preset and delete or modify the dependency line. Look for more notes on using dependencies in print and filament presets below.
Customizing printer settings¶
Printer profiles contain settings related to your printer hardware:
Physical printer bed shape, dimensions, extruder count, and other hardware-specific settings.
Custom start, end, layer, tool, and object change gcode.
Printer feedrates (speeds), acceleration, and jerk settings.
Extruder nozzle size, layer heights, and retraction settings.
As of PrusaSlicer version 2.3.0, Prusa has made significant changes to how profiles are organized. In particular, Prusa has linked all filament presets to specific Prusa printers using dependencies in each preset. If you want to use the default Prusa filament presets with a non-Prusa printer, you will need to create a custom set of filament profiles. This will apply to any custom printer profile you create, no matter how trivial the setting. See below for more notes on creating custom filament profiles.
Customizing nozzle settings¶
The first step to using a new nozzle size with PrusaSlicer is to create a new printer profile using the new nozzle settings. Select a printer profile close to the new nozzle. Open the
Printer Settings tab, select the
Extruder 1 option and adjust the nozzle size and layer height settings under
Nozzle diameterto the diameter of the opening on the new nozzle.
Set layer height
Minto the minimum layer height. 25% of nozzle diameter is a good starting point. The Prusa i3 Mk3 is capable of layer heights as low as 0.05mm and possibly lower.
Set layer height
Maxto the maximum layer height. 120% of nozzle diameter is the recommended maximum layer height. Any higher than this and the hotend places cylindrical extrusions with no “squish” to provide good inter-layer adhesion.
The minimum and maximum layer height settings are not enforced in PrusaSlicer. You can more-or-less enter any value you like in your print settings. The minimum and maximum values are used to set lower and upper layer height limits when applying automatic variable layer heights.
Click the disk icon and save your profile with a new name. I recommend including the new nozzle size in the name.
Once you save your profile, it is important to update the dependencies in your print setting profiles. See my notes on dependencies below for details.
PrusaSlicer (and any other slicer for that matter) creates files containing g-code, a series of commands that are sent to the printer for execution. You can customize various g-code sequences that PrusaSlicer will embed at key points in your print job:
Start G-code is sent at the start of the print job, before any actual printing commands are sent. Start g-code will set nozzle and heated bed temps, print the prime line at the start of each print, and a host of other housekeeping functions.
End G-code is used to shut the printer down in an orderly fashion. It turns off the heating elements, motors and fans.
Additional g-code sequences can be specified for before and after every layer change. To modify g-code, open the
Printer Settings tab, select the
Custom G-code option and edit the individual g-code sequences.
For more information on customizing g-code, refer to the custom g-code page.
Customizing print job settings¶
Set extrusion widths¶
To create a print settings profile tailored to the size of your new nozzle, open the
Print Settings tab, select the
Advanced options and adjust the extrusion widths for different print features.
You can create a single print profile that will work with all nozzle sizes by taking advantage of the auto settings for extrusion widths. Selecting “0” for the width of any feature will direct PrusaSlicer to calculate a width based on the nozzle size when slicing your models. This allows creating a single general-purpose profile that will work well with any nozzle.
If you want precision, you will want to create a new profile per nozzle size. For detailed prints, I like to create a profile for each layer height and nozzle size pairing set as follows:
External perimeters set to exactly the nozzle size for precision.
Internal perimeters either set to exactly the nozzle size, or use PrusaSlicer’s default (1.25 X nozzle size) by specifying 0.
1st layer extrusion widths of 1.2 X nozzle size for adhesion. Wider values improve adhesion.
As far as maximum extrusion widths, I’ve read that up to the width of the nozzle – including the rim around the opening – will produce good results. Wider than that and you get squishy defects at the edges. You can find good dimensional details on the genuine E3D nozzles, less so on the cheap brass generics. I’m very curious to see what results you guys get going wider than the nozzle opening.
Clarify setting extrusion widths as percentage of layer height.
Autospeed is a bit of a mystery largely due to poor documentation. This feature doesn’t do anything unless used in conjunction with the Printer Settings->General->Advanced->Use volumetric E. The idea behind this feature is that the slicer will calculate speeds to provide a consistent flow of filament throughout the print, reducing variations in printed surfaces and reducing the need for retraction and other measures. Unfortunately, this feature doesn’t seem to be fully mature and quality is poor compared to normal mode printing.
Set layer heights¶
Print Settings tab, select
Layers and perimeters options.
Layer heightto the layer height you want to use throughout your print.
First layer heightto a thickness sufficient to provide good first layer adhesion. For nozzle sizes 0.25mm and larger, 0.20mm thickness works well for the first layer. Remember to stay within 80% of your nozzle size.
Set print speeds¶
Print Settings tab, select
Adjust print speeds to suit your quality settings. I recommend basing speeds on the nozzle size you’re using:
For fine detail using nozzles smaller than 0.40mm, use the Prusa 0.25mm profile as the basis for speed settings.
For larger prints using nozzles 0.40mm or larger, use the Prusa 0.60mm profile as the basis for speed settings.
Print Settings tab, select
Adjust print autospeeds to suit your quality settings.
Max print speedto a reasonable setting for the filament you’re using. 120mm/s or less works well with most filaments.
Max volumentric speedto your hotend maximum throughput rating. For the E3D V6 hotend used on the Prusa i3 Mk3, 11.5 mm3/s is a good default. See the article on nozzle sizes for more information on maximum volumetric speeds.
Set acceleration rates¶
Print Settings tab, select
speed options and scroll down to the acceleration settings.
Adjust acceleration speeds to suit your quality settings. I recommend basing speeds on the nozzle size you’re using:
For fine detail using nozzles smaller than 0.40mm, use the Prusa 0.25mm profile as the basis for acceleration settings.
For larger prints using nozzles 0.40mm or larger, use the Prusa 0.60mm profile as the basis for acceleration settings.
Print setting preset dependencies¶
Once you’ve customized your print settings, you’ll want to use them with a variety of printer and nozzle combinations. The PrusaSlicer default profiles include dependencies that can cause problems if you’re not aware of them. If you look under
Print Settings tab in the
dependencies field, you’ll see a
compatible printers line that reads:
printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter==0.4
==0.4 at the end. That will restrict these settings to printer profiles that have a nozzle of exactly 0.40mm size. To use your profile with other nozzle sizes, you can change that condition to
>=0.4 as shown below.
If your profiles are not showing up in PrusaSlicer, be sure to check the dependencies in print settings, filament and printer profiles. Compatible profiles will be shown with a green flag. A red flag indicates an incompatible profile due to dependency requirements. Items shown with a red flag may mysteriously disappear as you change incompatible settings.
Don’t forget to set your extrusion widths to match your nozzle size. See extrusion width settings above for details.
Customizing filament settings¶
filament settings presets
Filament setting preset dependencies¶
filament setting dependencies
Contact and feedback
You can find me on the Prusa support forums or Reddit where I lurk in many of the 3D printing-related subreddits. I occasionally drop into the Official Prusa 3D discord server where I can be reached as bobstro (bobstro#9830). You can email me directly at firstname.lastname@example.org.
Last modified Apr 03, 2021. Last build on Apr 03, 2021.