Skip to main content

Free 3D Model Converter

Convert 3D models between STL, OBJ, PLY, GLB, glTF and USDZ. Opens 3MF, FBX, Collada (DAE), 3DS, AMF and VRML too. Stands the model upright for the new format and fixes metres vs millimetres. Runs in your browser; the model is not uploaded.

Drop files here, or click to browse

STL, OBJ, PLY, GLB, GLTF, 3MF, FBX, DAE, 3DS, AMF, USDZ, USDC, USDA, WRL, VRML, MTL, BIN, PNG, JPG, WebP, GIF, BMP, TGA · processed on your device

or press Ctrl+V to paste from your clipboard

You can drop multiple files at once

Browse files

Opens STL, OBJ (with its .mtl and textures), PLY, GLB, glTF (with its .bin), 3MF, FBX, DAE, 3DS, AMF, USDZ and WRL.

Your files never leave your device. All processing happens locally in your browser.

How It Works

The page reads your model with the open-source three.js loaders, counts its triangles and measures it, then writes it with three.js's exporters. When the two formats disagree about which way is up (CAD and slicer formats are Z-up, glTF and OBJ are Y-up) it turns the model so it still stands upright, and it suggests ×1000 or ÷1000 when a model is clearly in metres going to a millimetre format, or the reverse.

  1. 1
    Open the model
    Drop the model file, with its .mtl, .bin or texture files if it has any, or press "Browse files".
  2. 2
    Choose the format
    STL or OBJ for printing and CAD, GLB for the web and game engines, USDZ for iPhone AR.
  3. 3
    Check upright and scale
    Keep "Stand it upright" ticked, and check the size shown under Scale.
  4. 4
    Convert and save
    Press "Convert" and save the new file.

Your model is converted in this browser and never uploaded.

Guide

Worked example

Press "Try a sample". It loads sample-torus-knot.obj, and the file chip reads "5,120 triangles · 65.6 × 68.4 × 31.8". "Convert to" offers STL, "STL (text)", OBJ, PLY, GLB, glTF and USDZ. GLB is already selected, because an OBJ most often goes to GLB, and the line under the buttons says "Keeps colours, materials and textures (and animations in GLB/glTF)." Press "Convert to GLB" and a panel says "sample-torus-knot.glb is ready." with a "Download" button showing the file size. Now pick STL. The line changes to "Shape only: colours and textures are not kept in this format.", and a ticked box appears: "Stand it upright (Y-up → Z-up)", because OBJ is Y-up and STL is Z-up. "Size after conversion" still reads 65.6 × 68.4 × 31.8 (×1), because no scale is suggested. "Convert to STL" gives sample-torus-knot.stl.

Which settings to use, and the limits

  • Pick the output format for what comes next. The outputs are STL (binary), "STL (text)", OBJ, PLY (binary), GLB, glTF and USDZ. GLB, glTF and USDZ keep colours, materials and textures, and GLB and glTF keep animations. STL, OBJ and PLY keep the shape only, and the page says so under the buttons. A point cloud cannot go to STL: "This model is a point cloud, which STL cannot hold; choose PLY or OBJ." The tool pre-selects an output from the input: STL, 3MF or AMF go to OBJ, USDZ goes to GLB, GLB or glTF go to STL, and everything else goes to GLB.
  • Drop the companion files with the model. Choose or drop the model and its extras together. The first file with a model extension is the model, and the rest are companions: .mtl, .bin and textures (png, jpg, jpeg, webp, gif, bmp, tga). An OBJ finds its .mtl through its mtllib line, or uses the first .mtl you gave. A .gltf needs every .bin it names. Missing extras do not stop the job. A .gltf lists the textures it cannot find, and an OBJ lists a missing .mtl, in a line such as "Not found, so left out: wood.jpg. Drop them together with the model to keep them." A texture you did not add is left blank. Textures are given up to 8 seconds to load.
  • Let the tool stand the model upright. STL, 3MF, AMF and 3DS use Z as up. OBJ, GLB, glTF, FBX, DAE, USDZ and WRL use Y as up. When the input and output disagree, a box such as "Stand it upright (Z-up → Y-up)" appears, ticked, and the model is turned 90° about the X axis. PLY is left alone, because scanners differ, so no box appears when PLY is the input or the output. Untick the box if the model already faces the right way.
  • Fix the units with Scale. Most formats store no unit, so the same numbers can mean metres or millimetres. "Scale" offers "×1 (keep the numbers)", "×1000 (metres → millimetres)", "÷1000 (millimetres → metres)", ×10, ÷10, ×25.4 and ÷25.4. The tool selects and marks "suggested" two cases: a GLB, glTF or USDZ going to STL, OBJ or PLY with a longest side under 5 gets ×1000, and an STL, 3MF or AMF going to GLB, glTF or USDZ with a longest side over 20 gets ÷1000. Once you change Scale yourself, picking another format no longer changes it.
  • Know what opens and what is written. It opens STL, OBJ, PLY, GLB, glTF, 3MF, FBX, DAE, 3DS, AMF, USDZ and WRL. The file picker also takes .usdc, .usda and .vrml. It writes only the seven outputs above, so there is no 3MF, FBX or Collada export. One model is converted per run. The loader for a format is fetched when you use that format, and the file is read in your browser, not uploaded.

Common problems and how to fix them

It says "No 3D model found. Choose an STL, OBJ, PLY, GLB, glTF, 3MF, FBX, DAE, 3DS, AMF, USDZ or WRL file."
None of the files you added has a model extension. A .mtl, a .bin or a picture is only a companion, and the tool needs one model file to go with it. Add the model too. Files with other extensions are refused by the drop zone itself with "File type not supported" and the file name.
It says "This .gltf keeps its data in separate files: scene.bin. Drop them together with the .gltf, or use the .glb version."
A .gltf can point to external .bin buffers, and without them there is no geometry to read, so the tool stops and names the missing files. Choose the .gltf and the named files in one go. Missing texture images are different: they only produce the "Not found, so left out" line, and the model still converts without them.
It says "This model could not be read. The file may be damaged, or use a feature the converter does not support."
The loader threw an error while parsing the file. The file may be damaged or cut short, may have the wrong extension for its contents, or may use a feature that the three.js loader for that format does not handle. Re-export the model from the program that made it, ideally as GLB, OBJ or STL, and add it again.
It says "This file has no shapes to convert."
The file was read, but it holds no triangles and no points. The tool counts triangles in meshes and points in point clouds, so a file with only lines, cameras or lights ends here. Check in the source program that the model is not hidden or empty.
It says "The model could not be written in this format. Try another output format."
The model loaded, but the exporter failed while writing it, or the result would have been an empty file. The model stays on the page, so you do not need to add it again. Choose another button under "Convert to", such as GLB or OBJ, and press convert again.

How it compares

Blender, MeshLab or a slicer open and edit models. This tool only converts: it reads a model with the three.js loaders, can stand it upright and change its scale, and writes it in another format, in your browser with nothing uploaded. It does not repair holes, reduce the triangle count, edit materials or show a preview. Output is limited to STL (binary or text), OBJ, PLY, GLB, glTF and USDZ, and colours and textures survive only into GLB, glTF and USDZ. A desktop 3D program copes better with heavy or unusual files and gives you control over materials. This page is the quicker route when you need the same shape in another format, such as an OBJ for a slicer or a GLB for the web.

Related Tools

Frequently Asked Questions