Why SpeakCAD exports 3MF (and how we build it in the browser)
3MF is the modern 3D printing format: units, names, indexed meshes, slicer-native. How SpeakCAD generates a valid 3MF client-side and when you should pick it over STL.STL is a triangle soup
An STL file is a list of triangles with no shared vertices, no units and no names. It works, but every slicer has to rebuild connectivity and guess the unit. Files are big, and multi-part layouts collapse into one blob.
3MF is a package
3MF is a zip archive with a small XML model inside. It declares the unit (millimetre), names objects, stores vertices once and references them from triangles, and supports several objects with transforms. PrusaSlicer, Bambu Studio and OrcaSlicer use it as their native project format.
How SpeakCAD produces it
The OpenSCAD engine in your browser outputs a binary STL. SpeakCAD parses it, deduplicates vertices (identical coordinates become one vertex), drops degenerate triangles and writes the 3MF XML: [Content_Types].xml, _rels/.rels and 3D/3dmodel.model. The three files are zipped with a tiny pure-JavaScript zip library, all client-side. Your geometry never leaves the tab for export.
The result
- 30 to 60% smaller than the equivalent STL
- Unit and model name preserved in the slicer
- A clean indexed mesh that slicers do not need to repair
When STL is still the right choice
Feeding older tools, OpenSCAD's own import(), or services that only accept STL. Both downloads of the same design cost one credit in total, so grab both if in doubt.
A note on validation
Every 3MF SpeakCAD writes opens in PrusaSlicer, Bambu Studio, OrcaSlicer, Cura, Windows 3D Viewer and Blender's importer. If you find a tool that rejects one, tell us; we treat that as a bug.
