100% local processing — your files never leave your computer

STL to 3MF Converter

Convert STL files to 3MF directly in your browser. Your model is processed locally, and its coordinates are preserved without uploading the file.

Your STL stays on this device. MeshWrench converts it to 3MF locally in your browser.

Binary or ASCII STL, up to 100 MB. STL files don't store units — MeshWrench preserves the numeric coordinates and declares them as millimetres in the 3MF output. The 3MF won't include colors, materials or textures.

Waiting for a file

Preview of the converted 3MF geometry, shown with flat shading. No colors, materials or textures exist in the source STL to preview.

How to convert STL to 3MF

  1. Select an STL file using the picker above — binary or ASCII both work.
  2. MeshWrench parses it locally, in a background worker — nothing leaves your device.
  3. Review the preview, dimensions and any warnings, then download the converted 3MF file.

What geometry is preserved

The converter reuses MeshWrench's existing STL parser (the same one STL Viewer uses) to read your file's triangle geometry exactly as written — numeric coordinates are never changed, and triangle winding is preserved. The output is a valid 3MF package containing one indexed mesh object with one build item referencing it.

How repeated STL vertices are indexed

STL stores every triangle's three vertices independently, so the same position commonly repeats many times across a mesh. 3MF supports indexed vertices, so MeshWrench merges vertices whose coordinates are exactly, bit-for-bit identical into a single vertex record. This is not mesh repair: vertices that are close but not identical are always kept distinct, with no distance tolerance and no seam welding.

How units are handled

STL has no field for measurement units at all — MeshWrench genuinely doesn't know whether your file's numbers represent millimetres, inches or something else entirely. 3MF, unlike STL, requires every package to declare a unit. MeshWrench preserves your coordinates exactly and declares the output as millimetres as a fixed convention, stated plainly in the results panel — never as a claim that it detected your STL's original scale.

Why the output declares millimetres

A 3MF package cannot omit its unit declaration, so a converter that reads unitless STL data has to pick something. MeshWrench declares millimetres because it's the broadly compatible convention most slicers and CAD tools expect, while leaving your numeric coordinates completely untouched — the declaration changes how other software interprets the numbers, not the numbers themselves.

STL versus 3MF

STL stores only raw triangle geometry, with no units, no metadata and no indexed vertices — every triangle repeats its own vertices. 3MF is a modern, XML-based package format that can store units, metadata, colors, materials and indexed geometry alongside the mesh, making it a more structured choice for workflows that need more than raw triangles.

Does the output contain colors or materials?

No. STL has no field for color, material or texture data, so there is nothing for MeshWrench to carry over. The generated 3MF package contains only geometry — no base materials, color groups, textures or thumbnails.

Why an STL may fail to convert

Is the file uploaded?

No. There is no server-side conversion route in MeshWrench. Your browser reads the STL file, parses it, and builds the 3MF package, all on your device. You can verify this yourself: open your browser's developer tools, watch the network tab, and convert a file. No request containing your file will appear.

Frequently asked questions

Is my STL file uploaded?

No. The file is parsed and converted entirely in your browser, inside a background Web Worker. It's never sent to a server — check your browser's network tab while a file converts to confirm this yourself.

Does the output contain colors or materials?

No. This converter only writes geometry — indexed vertex positions and triangles. It never generates 3MF color, material, texture or thumbnail data, since none of that information exists in an STL file to begin with.

Why does the 3MF declare millimetres if STL doesn't store units?

3MF requires every package to declare a measurement unit — unlike STL, which has no unit field at all. MeshWrench preserves your file's numeric coordinates exactly and declares millimetres as a fixed output convention, not because it detected your STL's real-world scale. Your STL's original units remain unknown to MeshWrench.

How are duplicate STL vertices handled?

STL repeats every triangle's vertices independently. This converter merges vertices only when their coordinates are bit-for-bit identical, so the 3MF mesh can reference one vertex record from multiple triangles. It never welds nearby-but-different vertices with a distance tolerance — that would be mesh repair, not format conversion.

Why did my conversion fail?

Usually because the file isn't a valid STL, or every triangle in it has zero area (a degenerate mesh with nothing to export) — see "Why an STL may fail to convert" below for the full list MeshWrench checks for.