Skip to main content

STL to OBJ Converter — Edit 3D Print Files, No Upload

If you've ever tried to edit an STL file in Blender, you know the pain. Loop cuts don't work. Subdivision produces garbage. Boolean operations fail silently. That's because STL stores "triangle soup" — every triangle is disconnected, with duplicate vertices everywhere. It's fine for slicers, terrible for editing.

Last updated Mar 2026

1
Upload
2
Convert
3
Download

Drag STL file here, or click to upload

Supports .stl files up to 150MB

Usually under 3 seconds — depends on file size.

What You Should Know

Why STL Files Are Hard to Edit (And What the Converter Fixes)

STL stores geometry as "triangle soup" — a flat list of disconnected triangles. Each triangle has its own three vertices, even when adjacent triangles share an edge. A simple cube has 12 triangles × 3 vertices = 36 stored positions, but only 8 unique corners. This duplication means there's no concept of "shared edges" or "connected faces" — which is why Blender's Edit Mode tools break down on raw STL imports. The converter performs vertex welding: it identifies vertices that occupy the same position (within floating-point tolerance) and merges them into a single indexed vertex. The result is proper mesh topology with shared edges and face connectivity. For a typical 100K-triangle STL, this reduces vertex count by 50-60% and makes every standard mesh editing operation work correctly.

File Size and Performance

The OBJ output is typically 30-50% smaller than ASCII STL (because indexed vertices eliminate duplication), and roughly the same size as Binary STL. A 10 MB ASCII STL becomes ~6 MB OBJ. A 5 MB Binary STL stays around 4-5 MB as OBJ. Conversion speed scales linearly with triangle count: 100K triangles ≈ 0.5s, 500K ≈ 2s, 1M ≈ 4s on a modern desktop. The bottleneck is vertex welding — the converter uses a spatial hash grid for O(n) performance instead of naive O(n²) pairwise comparison.

STL vs OBJ: Quick Comparison
FeatureSTLOBJ
GeometryTriangles (disconnected)Polygons (indexed, shared)
NormalsFace normals (flat)Vertex normals (smooth)
MaterialsNot supportedSupported (.mtl)
Primary Use3D printingModeling, interchange
File SizeLarger (duplicated verts)Smaller (indexed verts)
EditingPoor (disconnected mesh)Excellent (proper topology)

Use STL for 3D printing (slicer input). Use OBJ for modeling, editing, rendering, and archiving.

When to Convert STL to OBJ

The Thingiverse Remix Workflow

You downloaded a phone stand from Thingiverse but your phone is a different size. The STL won't cooperate in Blender — you can't cleanly resize just the cradle portion. Convert to OBJ here, import to Blender, and suddenly you can: select the cradle faces, scale them, add chamfers, boolean-cut a cable slot. Export back to STL when you're done. The geometry round-trip is lossless.

Multi-Part Assembly in Blender

Articulated models (figurines, mechanical assemblies) often ship as 10+ separate STL files. Converting each to OBJ and importing into a single Blender scene lets you position parts, check interference, merge components, and export a unified model. Use Blender's Boolean modifier (Union) to join parts that should be printed as one piece, or keep them separate with proper alignment.

Product Photography and Portfolio Renders

Selling 3D prints on Etsy or Gumroad? STL renders look terrible — flat gray, no materials. Convert to OBJ, assign Principled BSDF materials in Blender (Base Color for your filament color, Roughness 0.3 for glossy PLA, 0.6 for matte), light the scene with an HDRI, and render in Cycles. The result looks like a real product photo. This workflow takes 10 minutes and dramatically increases conversion rates on marketplace listings.

Frequently Asked Questions
Yes, and this is the main reason people do this conversion. When you import the OBJ into Blender (File > Import > Wavefront), the mesh has proper vertex indexing — meaning shared vertices between faces are actually shared, not duplicated like in STL. This unlocks every Edit Mode tool: loop cuts work correctly, bevel follows edge flow, subdivision surface produces smooth results instead of weird artifacts. Boolean operations work reliably because the mesh topology is clean. One gotcha: if the original STL had disconnected shells (common in multi-part print models), the OBJ will have them too. Use Blender's Select Linked (L key) to isolate individual shells before editing.
No — the converter can't create information that doesn't exist. STL is geometry-only, so the OBJ will also have no .mtl file. In Blender, the imported mesh will be the default gray. To add materials: select the mesh, go to the Material Properties panel, click "New", and assign colors/textures. If you're planning to render the model (for a product photo or portfolio shot), start with a Principled BSDF shader — it gives realistic results with minimal setup. Set Base Color to your desired color, Roughness to 0.4-0.6 for plastic, Metallic to 1.0 for metal parts.
Vertex positions are preserved exactly — no rounding, no scaling. But here's where people get confused: STL files from 3D printing workflows are almost always in millimeters, while Blender's default unit is meters. So a 50mm figurine shows up as 50 meters tall in Blender. The fix depends on your workflow: (1) In Blender: set Scene Properties > Unit Scale to 0.001 before importing, or select the imported object and scale by 0.001. (2) In Maya: the import dialog has a Scale field — set it to 0.1 if importing mm-scale STL. (3) Don't resize the OBJ file itself — keep the original coordinates and adjust your software's interpretation.
Two separate questions here. Legally: most Thingiverse models use Creative Commons licenses — check the model page for the specific license. CC BY means you can remix with attribution. CC BY-NC means non-commercial only. CC BY-SA means your remix must use the same license. Some models are "All Rights Reserved" which technically means no remixing. Practically: nobody enforces this for personal use, but if you're selling the remix, respect the license. Technically: yes, this is exactly what STL-to-OBJ conversion is for. Convert here, import to Blender, modify (extrude, boolean, sculpt), then export back to STL when you're done. The round-trip is lossless for geometry.
It comes down to how each format stores vertices. STL uses "triangle soup" — every triangle stores all three vertex coordinates independently, even when adjacent triangles share a vertex. A cube has 12 triangles × 3 vertices = 36 stored vertices, even though a cube only has 8 unique vertices. OBJ uses indexed vertices: each unique vertex position is stored once, and faces reference them by index number. That same cube uses 8 vertex entries + 12 face entries. In practice, a typical mesh shares each vertex between 4-6 faces, so OBJ is roughly 40-60% smaller than ASCII STL. Compared to Binary STL, OBJ is about the same size — Binary STL already compresses the coordinate data.
This usually means the STL had inconsistent face normals — some faces pointing inward, some outward. The converter preserves normals as-is. Fix in Blender: select the mesh, go to Edit Mode, select all (A), then Mesh > Normals > Recalculate Outside (Shift+N). If that doesn't fully fix it, look for non-manifold edges: Select > All by Trait > Non Manifold. These are usually duplicate vertices or zero-area faces from the original STL. Clean them up with Mesh > Clean Up > Merge by Distance (threshold 0.0001).

Related Converters

What's Next? Try These Tools

Learn More

More STL Conversions

Step-by-Step Guides