Why your model is lying on its side
You export from Blender, import into a web viewer, and the model is face-down. Nothing is broken — the two programs simply disagree about which direction is up.
There is no universal convention, and there never was. Two independent properties vary between tools:
Which axis points up. Blender, 3ds Max, most CAD packages and nearly all GIS data use Z-up, inherited from engineering drawing and surveying, where Z is height above a ground plane. glTF, USD, Maya, Unity and Three.js use Y-up, inherited from screen-space graphics where X is right and Y is up.
Handedness. Right-handed systems (glTF, Blender, Maya, OpenGL) and left-handed systems (Unity, Unreal, DirectX) differ in which way the third axis points once you have fixed the other two.
The combinations you meet in practice
- Z-up right-handed — Blender, 3ds Max, CAD, GIS
- Y-up right-handed — glTF, USD, Maya, Three.js
- Y-up left-handed — Unity, DirectX
- Z-up left-handed — Unreal Engine
Pick where the model came from and where it is going. The tool works out the rotation.
Handedness inverts your triangles
This is the part that catches people out, and it is why a naive "rotate 90 degrees" does not fix everything.
Changing handedness mirrors space. Mirroring reverses the winding order of every triangle, and winding order is what tells a renderer which side of a face is the outside. A model converted between handedness without correcting winding renders inside-out — you see the back faces of the far side and nothing of the near side, or with backface culling on, the model appears to vanish.
This converter detects a mirroring transform and reverses the index order of every triangle to compensate. The toggle exists so you can turn it off if you are chaining conversions, but leave it on unless you know exactly why you are not.
Baked into geometry, not nodes
The rotation is applied to the actual vertex positions, not set as a transform on a parent node. That matters because STL has no nodes, some exporters flatten hierarchies, and some importers ignore node matrices — all of which would quietly discard a node-level fix.
Check it with the axis helper
The preview shows the origin axes and a floor grid. The fastest sanity check is simply whether the model now stands up on the grid the way it should.
Privacy
Conversion runs entirely in your browser. Nothing is uploaded.
Tiny Online Tools







