Guide

How to Convert OBJ to STL

Updated · Mesh OBJ to STL only

Export an OBJ, convert it locally, check mm scale, then open the STL in Bambu Studio, Cura, or PrusaSlicer. Then convert privately in your browser.

Convert OBJ to STL for Bambu, Cura, or Prusa

Export a Wavefront OBJ from Blender, scale it to millimeters in the browser, download a binary STL, and check the size in a slicer.

  1. Step 1

    Apply scale in Blender

    Select the mesh and apply scale so the object scale reads 1, 1, 1 before export. Unapplied scale is a common reason the STL size does not match the viewport.

  2. Step 2

    Export Wavefront OBJ

    Use File, Export, Wavefront (.obj). Export the mesh you want to print. You do not need the MTL file for this converter.

  3. Step 3

    Open the private converter

    Open the OBJ to STL tool. Drop the .obj file. It is read in the browser and is not uploaded.

  4. Step 4

    Set millimeters

    Leave units on millimeters when the OBJ was modeled in millimeters. Choose centimeters, meters, or inches only when that is how the file was saved. Read the bounding box.

  5. Step 5

    Download binary STL

    Download the binary STL. ASCII is optional and off by default. No account is required.

  6. Step 6

    Check the slicer

    Import the STL into Bambu Studio, UltiMaker Cura, or PrusaSlicer and confirm the millimeter size on the bed before you slice.

A print file is a triangle list a slicer can place on a bed. A Wavefront OBJ is often the file you already have out of Blender. It may include several objects, a material library, and coordinates that are not in millimeters. This guide is the short path from that OBJ to a binary STL, then into Bambu Studio, UltiMaker Cura, or PrusaSlicer. The conversion stays in your browser. Nothing in these steps uploads the mesh.

Apply scale, then export OBJ from Blender

Open the blend file and look at the object properties. If the scale is anything other than 1, 1, 1, the viewport size and the exported vertex positions can disagree, depending on how the exporter is set. Select the object, then apply scale so the scale fields become 1. Do this before you export, not after you have already guessed at a percentage in the slicer.

Decide what “one unit” means in this scene. Blender’s default unit is often meters, while a figurine was modeled as if the grid were millimeters. Those are different files that look identical on screen until a slicer assumes millimeters. If you are unsure, note a dimension you know — “this base is 40 mm” — and you will compare it to the bounding box in a moment. The unit menu cannot invent that fact. You have to know it, or measure it.

Export with File → Export → Wavefront (.obj). Export the object you intend to print, not an entire lighting rig or a hidden duplicate. You can ignore the MTL file this export may write beside the OBJ. The converter does not read materials, UVs, or textures. If you still need the textured asset, keep the OBJ and the MTL together in your project folder. The STL is a second file for the slicer, not a replacement for the source.

Curves, text objects, and modifiers that have not been turned into a mesh will not become solid faces. Convert the object to a mesh so the OBJ contains v lines and f lines. A file that is only points has nothing for an STL to store.

Convert in the browser and read the box

Open the OBJ to STL converter and drop the .obj file, or use the file picker. The page states the limit up front: 40 MB. A sculpt that is larger than that should be decimated, or you should export only the part you will print. The worker parses the file on your device. If the tab runs out of memory, close other tabs or reduce the triangle count and export again. That failure is local. It is not a server rejecting an upload.

Leave millimeters selected when the OBJ was built in millimeters. Switch to centimeters, meters, or inches when that is the real unit. Extra scale stays at 1 unless you truly want a resize on top of the unit conversion. The bounding box updates in millimeters. If you expected a 40 mm base and the box says 40 × 40 × 40, you are in the right neighborhood. If it says 0.04 or 40000, stop and change the unit. Do not download a file you already know is the wrong size.

Blender OBJ files are usually Y-up. Slicers treat Z as up. The default axis option rotates Y onto Z and can sit the lowest point on Z = 0 so the part rests on the bed. If your exporter was already Z-up, choose “Z up already” so the model is not laid on its side. The optional preview uses that same orientation. You can skip the preview. The STL does not depend on WebGL.

Binary STL is the download you want for Bambu, Cura, and Prusa. Leave the ASCII checkbox off unless you need text you can read in an editor. The button saves the file immediately. There is no account and no second step that unlocks it.

Open the STL in a slicer

Bambu Studio. Import the STL onto the plate you use for that printer. Read the size in the object panel before you slice. If the part is the right millimeters, orient it, add supports if the mesh needs them, and slice. If the size is off by about 10×, 25.4×, or 1000×, delete the object and rebuild the STL with the correct unit. Scaling “by eye” in the slicer and also scaling in the converter will stack, and the second print will be wrong in a new way.

UltiMaker Cura. Open the STL and watch the size in the tool panel. Cura’s default interpretation of STL is millimeters. A meter-scale OBJ that was not converted with the meters option will look like a speck or, if the numbers were large, like a model that does not fit the bed. Check the bounding box you already saw on the converter against Cura’s dimensions. They should agree within a small rounding error.

PrusaSlicer. Import, then confirm the size the same way. PrusaSlicer will also warn on some broken meshes. A warning here means the triangles were already problematic. This converter did not stitch holes or flip faces. Take the STL back to Blender, repair the mesh, export OBJ again, and convert again. Do not expect the STL step to fix a non-manifold shell.

In all three slicers, the useful habit is the same: trust a known dimension, not the fact that a file downloaded. A successful conversion only means the triangles were rewritten.

What this path does not do

The STL will not carry the paint job from your MTL file. If the print is a single filament color, that is fine. If you needed color, you still need the OBJ, or a format this tool does not write. The path also does not accept a STEP solid. Export a mesh from the CAD app first, then start at the OBJ step. It does not accept a PNG or a JPG. An image is not a list of faces.

One file at a time. If you have a kit of parts, export and convert each mesh you care about, and name the STL after the part. The triangle count on the converter is the count in the download. A huge count will slice slowly even when the file is under 40 MB. Decimate in Blender when the slicer chokes, then convert the lighter OBJ. You are not losing a “high quality STL mode.” You are choosing a mesh density your printer and your computer can handle.

When the size looks right and the slicer opens the file, you are done with this site. Keep the OBJ if you will edit the model again. The OBJ vs STL guide is the longer version of that choice. The millimeters vs meters guide is the one to read when the bed preview still looks absurd. Binary vs ASCII explains the default you just downloaded.

Questions

Do I have to use Blender?

No. Any app that writes a Wavefront OBJ mesh can feed this converter. Blender is the path this guide spells out because it is the common free modeler. The file still needs vertices and faces.

Why does the slicer show a tiny or huge part?

STL does not store a unit. Match the unit menu to the OBJ, then read the bounding box in millimeters. The millimeters versus meters guide walks through the 1000× case.

Can I convert a PNG in this same flow?

No. This flow starts from a mesh OBJ. Photos and flat images are not accepted.

Convert OBJ to STL in millimeters