OBJ ↔ STL Mesh Converter

Paste Wavefront OBJ or ASCII STL text, then convert it to OBJ, ASCII STL, or a saveable binary STL data URL. Scale vertices, swap Y-up/Z-up axes, and triangulate polygon faces locally in your browser.

Try:
Converted mesh

About this tool

OBJ ↔ STL Mesh Converter converts simple triangle meshes between Wavefront OBJ and STL directly in the browser. Paste OBJ text (v and f lines) or ASCII STL text (solid / facet / vertex), choose the output format, and get a copyable mesh result.

Worked example

Paste this OBJ triangle, leave Convert to as STL, STL encoding as ASCII STL, Scale factor as 1, Axis conversion as Keep axes, and set Mesh name to triangle:

v 0 0 0
v 1 0 0
v 0 1 0
f 1 2 3

The output is:

solid triangle
  facet normal 0 0 1
    outer loop
      vertex 0 0 0
      vertex 1 0 0
      vertex 0 1 0
    endloop
  endfacet
endsolid triangle

The normal is recomputed from the face winding. If you choose Binary STL data URL, the output starts with data:model/stl;base64, and can be saved as an .stl file.

FAQ

Can I upload a binary STL file?

No. This page takes pasted text, so it can read Wavefront OBJ text and ASCII STL text. Binary STL input is raw bytes and cannot be safely pasted into a textarea; re-export it as ASCII STL first, then convert it here. Binary STL is supported as an output via a saveable data URL.

What happens to OBJ materials, UVs, normals, and textures?

They are not preserved. STL stores only triangles, and this converter deliberately reduces the mesh to triangle geometry. OBJ vt, vn, usemtl, mtllib, groups, and texture references are ignored on input. STL facet normals are recomputed from triangle winding when STL is written.

How are OBJ quads or polygons handled?

Faces with more than three vertices are fan-triangulated: f 1 2 3 4 becomes triangles (1,2,3) and (1,3,4). Negative OBJ indices are supported. Curved surfaces, NURBS, smoothing groups, and material assignments are not evaluated.

When should I use the Y-up/Z-up axis options?

Many graphics tools treat Y as the vertical axis, while CAD and 3D-printing workflows commonly treat Z as vertical. Choose Y-up → Z-up when moving a model from a graphics coordinate frame into a printing/CAD coordinate frame, and Z-up → Y-up for the reverse. Leave it on Keep axes if your coordinates are already correct.

Limits & notes

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool mesh-convert "v 0 0 0
v 1 0 0
v 0 1 0
f 1 2 3"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/mesh-convert/?mesh=v%200%200%200%0Av%201%200%200%0Av%200%201%200%0Af%201%202%203&to=stl&stl_encoding=ascii&scale=1&axis=keep&name=mesh

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.