1. Belt tree support could not slice at all.
layer_initialize() hardcodes layer 0's bottom_z to 0, encoding "below layer 0 is
the build plate at z = 0". True for a flat bed; false for a belt, whose virtual
support layers legitimately extend below zero. The bottom-most belt layer
therefore got height = print_z - 0 = -9.8, which reached Flow::with_height() and
threw FlowErrorNegativeFlow.
A 3DBenchy, a mushroom, an L-bracket and an extruded L all failed identically
with negative flow / return -100. Only a bare cube sliced, because its support
never reached that far down.
The bottom is now taken from the previous layer's z, and only a layer 0 whose
print_z is itself negative gets a synthesised bottom below it. Every
non-negative print_z -- every non-belt configuration -- keeps exactly the
previous 0, so this is behaviour-preserving off a belt by construction. An
earlier form used min(0., layer_z(0) - layer_height), which regressed flat beds
whenever the initial layer was thinner than the layer height.
3DBenchy on a 45-degree belt with organic tree support: fails to slice ->
247 support blocks / 168,596 extrusions.
2. Support generated against the belt, and against belt-tilted walls.
A plain 20mm cube on a 45-degree belt generated 86 support blocks and 46,307
support extrusions. Three causes, all gated on the belt floor being active:
a. The build-plate tilt compensation shifted the lower layer the wrong way.
tan(build_plate_tilt_*) carries a magnitude but no direction, and the sign
chosen moved the lower layer away from the newly appearing material rather
than under it, doubling the mismatch. The shift now comes from
belt_floor_shear_factor / belt_floor_from_axis, which carry sign and axis
exactly. Non-belt tilted beds keep the previous behaviour.
b. Material resting on the belt was treated as unsupported. The belt surface
is now unioned into the effective lower layer, sampled at the bottom of the
layer -- a layer meets the belt across its thickness and print_z is the
top. The half-plane is clipped to the layer's bounding box first: unioning
a +/-1000mm half-plane raw with 20mm-scale geometry put a huge dynamic
range through Clipper and left intermittent artefacts every few layers.
c. The object's first slice can be empty on a belt (the bottom vertex is a
sub-extrudable sliver), leaving the layer above with an empty predecessor
even though it rests on the belt. (b) already covers that per island. What
did need fixing is sharp-tail detection, which tests each island against
the raw lower slices; with an empty predecessor that test is trivially true
and every belt-contact island read as a sharp tail. It now tests against
the same effective lower layer.
An earlier form instead skipped the whole layer when the point of
get_extents(curr_polys) -- the bounding box of the union of every island --
nearest the belt was in contact. That was wrong in a way worth recording:
one island resting on the belt could suppress overhang and sharp-tail
detection for a separate island floating well above it. Every decision here
is per-island.
Cube on belt: 46,307 -> 0 support extrusions. Same cube non-belt: 0 before and
after. Benchy on belt still 247 blocks / 168,596 extrusions and a mushroom
111 / 82,157, so false positives are removed without suppressing true ones.
Non-belt is unchanged by measurement, not only by the belt_ovh_active gate:
the same mushroom sliced on a Cartesian printer before and after gives 65,866
support extrusions and 68,717 total extrusions both times, the two G-code
files differing in exactly one line -- the object's plate position.
3. m_anti_overhang was filled and read in different index spaces.
It is consumed in the same index space as m_layer_outlines, where object layer i
lives at num_raft_layers + i, but was filled in object-layer space. Every entry
landed num_raft_layers too low (50 for a 20mm cube at bed Y=50) and the topmost
object layers got none. The belt injection also ran before m_raft_layers was
extended, so it could not have known the offset.
The array is now shifted as a whole and the injection moved after the raft
extension. This also repairs user support blockers under a raft, which is not
belt-specific: it changes behaviour for any ordinary raft, not just the belt's
virtual one, and should be reviewed as a general fix. Measured effect on the
cube was small on its own (46,307 -> 46,334 before the other fixes) because
m_anti_overhang only feeds calculate_placable; kept as a correctness fix on its
own merits.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011jgzj1sf53KMLPweZ8yeUQ
OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
Official links and community
Official Website:
Github Repository:
Follow us:
Join our Discord community:
|
⚠️ CAUTION: Several clickbait and malicious websites, such as orca-slicer[.]com and orcaslicer[.]net, are pretending to be the official OrcaSlicer site. These sites may redirect you to dangerous downloads or contain misleading information. Our only official website is www.orcaslicer.com. If you come across any of these in search results, please report them as unsafe or phishing to help keep the community secure with: - Google Safe Browsing - Microsoft Security Intelligence - IPThreat |
Main features
- Advanced Calibration Tools
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance. - Precise Wall and Seam Control
Adjust outer wall spacing and apply scarf seams to enhance print accuracy. - Sandwich Mode and Polyholes Support
Use varied infill patterns and accurate hole shapes for improved clarity. - Overhang and Support Optimization
Modify geometry for printable overhangs with precise support placement. - Granular Controls and Customization
Fine-tune print speed, layer height, pressure, and temperature with precision. - Network Printer Support
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control. - Mouse Ear Brims & Adaptive Bed Mesh
Automatic brims and adaptive mesh calibration ensure consistent adhesion. - User-Friendly Interface
Intuitive drag-and-drop design with pre-made profiles for popular printers. - Open-Source & Community Driven
Regular updates fueled by continuous community contributions. - Wide Printer Compatibility
Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more. - Additional features can be found in the change notes.
Wiki
The wiki aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
Download
Stable Release
📥 Download the Latest Stable Release
Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users.
Nightly Builds
🌙 Download the Latest Nightly Build
Explore the latest developments in OrcaSlicer with our nightly builds. Feedback on these versions is highly appreciated.
Belt Printer Builds
The nightly release ships two parallel builds: the standard build and a belt-printer build. Both are attached to the same release — tell them apart by the filename suffix:
- Standard — no suffix (e.g.
OrcaSlicer_Windows_Installer_x64_nightly.exe) - Belt —
_beltsuffix (e.g.OrcaSlicer_Windows_Installer_x64_nightly_belt.exe)
The _belt builds add experimental support for belt / conveyor (infinite-Z) printers, where the model is sliced against a tilted belt surface instead of a flat horizontal bed. They include ready-to-use belt printer profiles, the full belt slicing pipeline (mesh rotation and G-code transforms), belt-aware support generation, and a tilted-bed preview.
⚠️ Belt printer support is under active development and is not yet merged into
main— it currently ships only in these parallel_beltbuilds, produced from thebelt-printerbranch. See tracking PR #14394 and the original documentation in #12998.
How to install
Windows
Download the Windows Installer exe for your preferred version from the releases page. Both x64 and arm64 installers are published — pick the one matching your CPU.
-
For convenience there is also a portable build available.
Troubleshooting
- If you have troubles to run the build, you might need to install following runtimes:
- MicrosoftEdgeWebView2RuntimeInstallerX64
- vcredist2019_x64
- Alternative Download Link Hosted by Microsoft
- This file may already be available on your computer if you've installed visual studio. Check the following location:
%VCINSTALLDIR%Redist\MSVC\v142
Microsoft Store
Install from the Microsoft Store when you prefer a Store-signed package (helps on Windows 11 Smart App Control).
Windows Package Manager
winget install --id=SoftFever.OrcaSlicer -e
Mac
-
Download the universal DMG, which runs on both Apple Silicon and Intel Macs.
-
Drag OrcaSlicer.app to Application folder.
-
If you want to run a build from a PR, you also need to follow the instructions below:
Quarantine
-
Option 1 (You only need to do this once. After that the app can be opened normally.):
- Step 1: Hold cmd and right click the app, from the context menu choose Open.
- Step 2: A warning window will pop up, click Open
-
Option 2: Execute this command in terminal:
xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app -
Option 3:
-
Homebrew Cask
brew install --cask orcaslicer
The Homebrew cask installs the official macOS DMG from GitHub Releases.
Linux
Flathub (Recommended)
OrcaSlicer is available through FlatHub:
Install from the command line:
flatpak install flathub com.orcaslicer.OrcaSlicer
flatpak run com.orcaslicer.OrcaSlicer
It can also be installed through graphical software managers (KDE Discover, GNOME Software, etc.) when Flathub is enabled. Search for OrcaSlicer in your software center.
AppImage
AppImages are published for both x86_64 and aarch64 (ARM64). Pick the file matching your CPU — the ARM64 build has aarch64 in its name (e.g. OrcaSlicer_Linux_AppImage_Ubuntu2404_aarch64_*.AppImage).
-
Download App image from the releases page.
-
Double click the downloaded file to run it.
-
If you run into trouble executing it, try this command in the terminal:
chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage
How to Compile
All updated build instructions for Windows, macOS, and Linux are now available on the official OrcaSlicer Wiki - How to build page.
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
Klipper Note
If you're running Klipper, it's recommended to add the following configuration to your printer.cfg file.
# Enable object exclusion
[exclude_object]
# Enable arcs support
[gcode_arcs]
resolution: 0.1
Supports
OrcaSlicer is an open-source project, and we're deeply grateful to all our sponsors and backers.
Their generous support helps fund filaments and other essential 3D printing materials for the project.
Thank you! :)
Sponsors
|
|
Backers:
Ko-fi supporters ☕: Backers list
Support the project
Some Background
Open-source slicing has always been built on a tradition of collaboration and attribution. Slic3r, created by Alessandro Ranellucci and the RepRap community, laid the foundation. PrusaSlicer by Prusa Research built on Slic3r and acknowledged that heritage. Bambu Studio in turn forked from PrusaSlicer, and SuperSlicer by @supermerill extended PrusaSlicer with community-driven enhancements. Each project carried the work of its predecessors forward, crediting those who came before.
OrcaSlicer began in that same spirit, drawing from BambuStudio, PrusaSlicer, and ideas inspired by CuraSlicer and SuperSlicer. But it has since grown far beyond its origins. Through relentless innovation — introducing advanced calibration tools, precise wall and seam control, tree supports, adaptive slicing, and hundreds of other features — OrcaSlicer has become the most widely used and actively developed open-source slicer in the 3D printing community. Many of its innovations have been adopted by other slicers, making it a driving force for the entire industry.
The OrcaSlicer logo was designed by community member Justin Levine.
License
- OrcaSlicer is licensed under the GNU Affero General Public License, version 3.
- The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
- OrcaSlicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
- The Bambu networking plugin is based on non-free libraries from BambuLab. It is optional to the OrcaSlicer and provides extended functionalities for Bambulab printer users.


