Guide · units and scale

Your STL printed 1000× too small. Here is the unit chain behind it.

A tiny print is the single most common failure when converting glTF to STL. It is not a bug in any one tool: three formats meet in this pipeline and each carries a different assumption about units. Set the source unit once in the converter and the problem never reaches your printer.

converter local
ready 1 file
Input glTF .gltf
Output STL .stl
drop the .bin too

Coordinates are multiplied to millimetres. Leave as they are to keep the source numbers.

Drop a .gltf file here

or browse files · .gltf with .bin, or a single .glb

New here?

Very large models are held in memory while they convert. Close other tabs first.

The chain: three formats, three assumptions

  1. glTF stores metres — by specification. The format was designed for the web and real-time engines, and its unit of measure is fixed at metres. A doorway is 2 units tall because a doorway is 2 metres tall.
  2. STL stores bare numbers. No unit field exists in the format. The number 2.5 in an STL means whatever the next program decides it means.
  3. Slicers assume millimetres. The 3D-printing convention: STL numbers are millimetres. So glTF's 2.5 (metres) reaches the build plate as 2.5 mm — exactly 1000× smaller than intended.

The converter's unit picker closes the gap: choosing metres → mm multiplies every coordinate by 1000 on the way out, and the STL then means what a slicer thinks it means.

Scale factors at a glance

Source unit → multiply by, to reach millimetres
Scene authored inMultiply byExample
Metres× 1000The glTF default. A 2.5 m character becomes 2500 mm — full size.
Centimetres× 10Rare in the wild, but some DCC exports use it.
Inches× 25.4Workflows authored for US hardware sizes.
Millimetres× 1Already printer-native. Keep the numbers as they are.

Scale-factor calculator

Already holding a wrong-scaled STL? Measure one axis of the printed (or previewed) result, enter what it should have been, and the calculator names the source unit to select above.

Measured → wanted

Fixing it in the converter

  1. Scroll to the converter at the top of this page.
  2. Drop the same glTF or GLB again — the original, not a previously converted STL.
  3. In Source unit, pick what the calculator named (usually Metres (m) → mm).
  4. Convert and read the Bounds line. It should now show the wanted size.

Fixing it in the slicer instead

Also legitimate, and the only option once an STL already exists: import, select the model, apply a uniform scale of your factor, and confirm the dimensions field. The trade-off is memory: the fix lives in that one slicer project, while a re-convert writes the correct size into the file for good.

Checking the result

Questions people ask

Are glTF files always in metres?

The glTF 2.0 specification says yes: unit of measure is metres, axis is +Y up. Exporters that follow the spec write metre coordinates, which is why the converter multiplies by 1000 when you pick metres. Files edited by hand or produced by careless tools can deviate, so always confirm against the bounding box readout after converting.

Why does STL not store units?

The STL format is a list of triangles and nothing else — no unit field, no scale metadata, no axis convention. Every program reading an STL assumes its own unit, and 3D printing tools assume millimetres. OBJ has the same gap. 3MF is the exception: it stores units explicitly.

Should I fix the scale in the converter or in the slicer?

In the converter when you can. Scaling during conversion writes correct numbers into the STL, so every later step — slicer, mesh report, printer — sees the right size once. Scaling in the slicer fixes one import but the file on disk is still wrong, and the next person or tool to open it hits the same trap.

My scale factor is not 10, 25.4 or 1000. What now?

Then the source was neither metric nor inch-based, or the model was authored at a custom scale (common with game assets). Multiply in the slicer by your measured factor instead, and remember that choice lives in that one slicer project.

The bounding box is right but the print is still wrong. What else moves scale?

Check that the slicer did not import the STL at a different unit, and that no uniform scale was left over from a previous model in the same project. Some slicers remember per-session overrides. Reset transforms, re-import the corrected STL, and measure again.

Related: converting Sketchfab downloads, where the metre default catches almost everyone, and what each 3D format stores, including the one (3MF) that carries units explicitly.