Skip to content
STLBench

Free online STL to OBJ converter

STL to OBJ, without pretending to restore anything

Drop an .stl and download an .obj, converted in this tab with nothing uploaded. The geometry crosses unchanged — both formats state no unit, so nothing is rescaled — and the one real gain is vertex welding: a corner shared by six triangles is written once instead of six times. What does not happen is a restoration. Quads, UV coordinates and materials were destroyed when the model became an STL, and no converter can read them back out of a file that does not contain them.

  • 100% free
  • No signup
  • Vertices welded
  • Scale unchanged
  • Nothing uploaded
Convert to

Drag a file anywhere on this page to open it. F fits the view, W switches shading, G the grid, R spins it.

How to convert STL to OBJ

Three steps, and one expectation to set beforehand.

  1. Drop the .stl

    Binary or ASCII. The triangles are read and their coincident corners welded, which STL itself never does — the same vertex appears once per triangle in the source and once in total in the output.

  2. Expect no materials

    Nothing appears that was not in the STL. There is no colour to carry over, no UV layout, and no .mtl written, because inventing one would only produce a file describing default grey. Texturing happens in whatever you import into, and starts with a UV unwrap the original never had.

  3. Download the OBJ

    Plain text, one group, coordinates written exactly as they were read. Since no unit exists on either side there is nothing to convert between, and whatever your source meant by 1 is what the OBJ means by 1.

Technical specifications

Reads.stl — binary or ASCII
Writes.obj — text, one group
UnitAbsent on both sides — coordinates are written exactly as read
KeptEvery triangle, at its original coordinates
GainedWelded vertices — one entry per position instead of one per triangle
Not gainedQuads, UV coordinates, materials, colour — none were in the source
File sizeNo fixed limit — past 100 MB you are told what it will cost this tab, then it opens

Frequently asked questions

Why convert STL to OBJ?

Because the destination is a modelling, sculpting or rendering package rather than a printer. Blender, Maya, Cinema 4D, ZBrush, MeshLab and most renderers read OBJ as a first-class import; several read STL grudgingly or not at all, since it carries nothing they care about. OBJ is also text, which makes it the format people reach for when something needs inspecting or scripting.

Do I get quads back?

No, and no converter can give them to you. Quads are a modelling structure and STL destroyed them when it triangulated the mesh — the information about which pairs of triangles were once one face is simply not in the file. What you can do afterwards is retopologise in your own package, which rebuilds a quad mesh by looking at the shape rather than by recovering anything.

Does anything change size?

No. Both formats state no unit, so the coordinates are written out exactly as they came in and the panel reports a factor of one. If your renderer imports the result as something implausibly large or small, that is its own default assumption about what one unit means, not a change made here.

Why is the OBJ bigger than the STL?

Because text is bigger than binary, and by more than the vertex welding claws back. A binary STL spends 50 bytes per triangle; an OBJ writes each coordinate as human-readable digits. Two to four times the size is normal. If size matters, the file compresses very well — it is, after all, mostly numbers in a repeating pattern.

What about vertex normals?

The STL's per-face normals are not carried over, and that is the right choice. They are stored per triangle rather than per vertex, half of real-world files have them pointing the wrong way, and every package that imports an OBJ recomputes shading from the geometry anyway. A mesh whose faces disagree about which way is out is a repair job, not a conversion setting.

Is the file uploaded?

No. Reading, welding and writing all happen in this tab, so an unreleased part or a client model never leaves your machine. The .obj you download was assembled in your own browser.

About what a conversion can and cannot give back

Every format conversion is a projection, and projections do not have inverses. When a model was exported to STL, its quads were split, its groups were merged, its materials were dropped and its units were forgotten — and the file that resulted holds no record that any of it ever existed. Converting to OBJ moves those triangles into a container that is capable of quads, groups and materials, which is a genuinely different thing from filling them in.

This matters because plenty of tools imply otherwise. A converter that writes a .mtl beside your OBJ has invented a material; one that reports groups has invented names. Both are harmless until you believe them. The useful mental model is that an STL is a photograph of a model — enough to see the shape, not enough to rebuild how it was made.

If what you need is the shape back as real surfaces rather than a better container, that is a much harder problem and a different tool: STEP files describe cylinders and planes as mathematics, and recovering them from triangles means recognising what the triangles were approximating. Going in the ordinary direction — model first, print second — starts from the OBJ and loses nothing you will miss.

Where the conversion happens

Every number on this page is worked out by JavaScript running in the tab you are reading it in. The model you open is read straight off your own disk — it is never uploaded, logged or kept, which is also why these tools carry on working after you disconnect from the network.

One clause specific to this page: STL is the format people send each other before a part is finished or public. Nothing here is transmitted — the read, the weld and the write all run in this tab, and the download comes out of your own browser's memory.