DEV Community

Ankur Bhardwaj
Ankur Bhardwaj

Posted on

Before You Print: A Checklist for Turning an OBJ Into a Good STL

You found the perfect model. It's an OBJ, your slicer wants an STL, and you're one conversion away from printing. In my experience that last step is where most of the trouble starts. The conversion itself is quick. What goes wrong is everything the OBJ was quietly carrying, or quietly missing.

This is the checklist I run before any OBJ goes near a print bed. Most of it happens in Blender, or whichever app made the file, before you convert anything.

1. Make sure it's actually a mesh

An STL can only hold triangles. If the OBJ came out of an app with curves, text objects or unapplied modifiers, parts of the model may not be real faces yet. They look fine in the viewport and then vanish from the export.

  • In Blender, select the object and use Object → Convert → Mesh for curves and text.
  • Apply any modifiers you want baked in (Mirror, Solidify, Boolean, Subdivision) before export.
  • If the OBJ has no faces at all, only points or lines, there's nothing to print. A good converter will stop and tell you rather than hand you an empty file.

2. Apply your transforms

This is the most common invisible problem. An object can be scaled 0.01 in Blender's object properties while its actual vertex data is 100 times larger. Depending on the exporter settings, the file you get may not match what you see on screen.

  • Select the object and press Ctrl+A → Scale (and Rotation, if you rotated it).
  • Check that the scale fields read 1, 1, 1 before you export.

Do this first. Guessing a percentage in the slicer afterwards is how people end up stacking two scale fixes on top of each other.

3. Decide what one unit means

STL files don't store units. A coordinate of 10 is just the number 10. Slicers such as Bambu Studio, UltiMaker Cura and PrusaSlicer almost always read it as 10 millimeters. Modeling apps often don't think in millimeters at all. Blender scenes commonly default to meters.

The fix is to know your unit, not guess it. Pick a dimension you know: a miniature base that should be 25 mm, a phone stand that should be 80 mm wide, a hole that should fit a 5 mm bolt. Then compare it with the model's measured size.

  • About right: the file is in millimeters. Leave it alone.
  • About 1000× too small: the file was in meters. Multiply by 1000.
  • About 10× too small: centimeters. Multiply by 10.
  • About 25× too small: inches. Multiply by 25.4.

I wrote a longer explanation of this, with a worked example, in the millimeters vs meters guide. The short version: apply the scale when you convert, so the STL's numbers are already in millimeters. Don't rely on remembering to fix it in the slicer.

4. Point it the right way up

Many modeling tools and OBJ exporters treat Y as up. 3D printers and slicers treat Z as up. If you skip this, your figurine arrives lying on its back.

While you're at it, put the model on the bed. If its lowest point sits at Z = 5 or Z = −30, some slicers will drop it automatically and others will warn you. Moving the mesh so its lowest Z is 0 removes the question.

5. Check that the mesh is watertight

Converting a file copies triangles. It does not fix them. A slicer needs a closed, consistent surface, called manifold, to know what's inside and what's outside. Common faults:

  • Holes: missing faces, often at the bottom of scanned or game-ripped models.
  • Flipped normals: faces pointing inward. Blender's Mesh → Normals → Recalculate Outside (Shift+N) fixes most of them.
  • Non-manifold edges: an edge shared by three or more faces, or two shells touching at a single edge.
  • Zero-thickness parts: a single plane for a cape, a leaf or a sign. It renders fine but has no volume to print.

Blender ships with a 3D Print Toolbox add-on (enable it in Preferences → Add-ons). Its Check All button flags non-manifold geometry, intersecting faces and thin walls in one pass. Use Select → Select All by Trait → Non Manifold for a quick look without the add-on.

Fix these in the modeling app, then export again. A slicer's automatic repair can work, but it's guessing, and you won't always like what it guesses.

6. Think about wall thickness and detail size

Your nozzle sets a floor. With a typical 0.4 mm nozzle, walls thinner than about 0.8 mm (two line widths) tend to print weakly, come out patchy or disappear. Detail smaller than the nozzle, like fine engraved text, thin hair strands or tiny spikes, will simply be lost.

Models made for games or rendering are often not designed with this in mind. Thicken thin parts with a Solidify modifier, or scale the whole model up if fine detail matters more than size.

7. Keep the triangle count sensible

Sculpts and 3D scans can have millions of triangles. That's far more than a printer can reproduce, and enough to make converters and slicers slow or unstable.

  • Blender's Decimate modifier (Collapse mode, ratio 0.3 to 0.5) usually cuts the count dramatically with no visible loss at print scale.
  • Export only the object you plan to print, not the whole scene.

8. Know what the STL won't keep

An STL is a plain triangle shell. Materials, the MTL file, texture images, UVs, vertex colors and object names don't come along. If the OBJ contains several objects, such as a figurine and a separate base, they usually end up merged into one triangle list.

That's fine for a single-color print. If you want to print the parts separately, export them as separate OBJs. And always keep the original OBJ (plus its MTL) in your project folder, because the STL can't give that information back. The OBJ vs STL comparison covers exactly what survives the conversion.

9. Convert, then read the numbers before you print

When the checklist is done, convert. I built objtostl.com for this step. It runs in the browser, so the file stays on your machine. You choose the source unit (mm, cm, m or inches) and the up axis, and you can drop the mesh onto the bed. Before you download, it shows the bounding box in millimeters and the triangle count. Whichever converter you use, look for those two numbers.

Then do one last check in the slicer:

  • Does the size on the bed match the dimension you know from step 3?
  • Is it the right way up and sitting flat?
  • Did the slicer report any mesh errors when importing?

Quick reference: symptom → likely cause

  • Model is invisible or a tiny speck → saved in meters, read as millimeters (step 3).
  • Model is huge and fills the whole bed → coordinates already scaled up, or a scale applied twice (steps 2 and 3).
  • Model lies on its side or back → Y-up vs Z-up (step 4).
  • "Non-manifold" or "open edges" warning → holes or flipped faces (step 5).
  • Parts missing in the sliced preview → walls thinner than the nozzle, or zero-thickness geometry (steps 5 and 6).
  • Converter or slicer freezes → triangle count too high (step 7).
  • Color or texture gone → expected, since STL has no materials (step 8).

Five minutes of checking beats a three-hour print the size of a grain of rice. If you hit a case this list doesn't cover, I'd like to hear about it.

Ankur Bhardwaj

Top comments (0)