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.
9 August 2026 · 2 min readengineeringformats

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.

Your next print is one sentence away

Try it free: describe a part and watch it render, as many times as you like. You only pay when you download the file. Runs in your browser, nothing to install, no card, no CAD skills.