# STL Files Have No Units: Diagnosing and Fixing Scale Problems

> An STL stores bare numbers, so the unit lives only in the exporting program's settings. Here are the exact scale factors to look for and how to fix a model that opens 25.4 times too small.

Source: https://freestlviewer.com/blog/stl-units-mm-vs-inches/  
Published: August 5, 2026 · Updated: August 5, 2026

Open a model, expect a 60 mm bracket, and see a 2.36 mm speck. Nothing is
corrupt — the geometry is exactly what the designer drew. The file simply never
carried the information needed to interpret it.

## What the format actually stores

An STL is a list of triangles, and each vertex is three 32-bit floats. That is
all. There is no unit field, no scale hint, and no metadata section where one
could be added. The binary header is 80 free-form bytes that most exporters
fill with their own name.

So a cube drawn as 20 units wide is written as `20.0`. Whether that means 20
millimetres, 20 inches or 20 furlongs is a fact that existed only inside the
CAD program and was discarded on export.

By near-universal convention, the receiving program assumes millimetres. Every
slicer does. That convention is what makes STL usable at all, and it is also
exactly what breaks when the source document was set to something else.

## The scale factors, and what each one means

Divide the size you expect by the size you see:

| Ratio | The file was exported in | Fix |
| --- | --- | --- |
| 25.4 | Inches | Scale to 2540 % |
| 10 | Centimetres | Scale to 1000 % |
| 1000 | Metres | Scale to 100000 % |
| 0.03937 | Millimetres, converted as if inches | Scale to 3.937 % |
| 0.1 | Millimetres, converted as if centimetres | Scale to 10 % |
| 0.001 | Millimetres, converted as if metres | Scale to 0.1 % |

The first three are the common case: the source document used a non-metric
unit. The reciprocals happen when the exporter helpfully applied a conversion
that the importer then applied again in reverse.

If the ratio is not one of these, the problem is probably not units. Check
whether the model was scaled deliberately, or whether you are comparing against
the wrong dimension.

## How to diagnose it in ten seconds

Open the file in any viewer and read the bounding box. You do not need to
recognise the model or know its intended size precisely — one familiar feature
is enough. A screw hole should be a few millimetres. A phone stand should be
around 100 mm. A whole assembly should not be 0.004 mm across.

If the numbers are absurd, compute the ratio against what you expected and
match it to the table above.

This check is also the first thing to do when a
[volume or weight figure](https://freestlviewer.com/blog/stl-volume-and-print-weight/) looks wrong,
because those scale with the cube of the linear error. A model that is 25.4
times too small reports a volume 16,387 times too low.

## Fixing it

**In the slicer.** Every slicer has a scale field that accepts a percentage.
This is the fastest fix and it is fine for a one-off print. It does not fix the
file, so the next person to open it hits the same problem.

**In the source.** Set the document units correctly and re-export. This is the
right fix if the file will be shared or reused. In most CAD packages the export
dialog has its own unit setting that is independent of the document, so check
both.

**In a mesh editor.** Blender, MeshLab and FreeCAD can all scale a mesh and
re-export it. Note that Blender's default scene unit is metres, so importing a
millimetre-scale STL there introduces a second layer of the same confusion —
set the unit scale before you start.

## The permanent fix

Use [3MF](https://freestlviewer.com/blog/stl-vs-obj-vs-ply-vs-gltf-vs-3mf/) where you can. It stores the
unit explicitly in its XML, so there is nothing for the receiving program to
guess. Every current slicer reads it. STL remains the right choice only when
you cannot verify what software is on the other end — and in that case, tell
the recipient the intended dimensions in writing.

## Checking a file quickly

[Mes3D](https://freestlviewer.com/) shows bounding-box width, height and depth as soon as a file opens,
which is all you need for the ratio check, and it runs in the browser so you do
not have to launch CAD software to sanity-check someone else's download.

## Frequently asked questions

### What units does an STL file use?

None. STL stores plain floating-point coordinates with no unit anywhere in the file or its header. Slicers and viewers assume millimetres by convention, so a file exported from a program working in inches opens 25.4 times too small.

### Why is my STL 25.4 times too small?

It was exported from a document set to inches. The numbers are correct in inches but get read as millimetres. Scale the model by 2540 percent in your slicer, or fix the document units and re-export.

### What scale factor do I need to fix my model?

Divide the size you expect by the size shown. A factor of 25.4 means the file is in inches, 10 means centimetres, and 1000 means metres. The reciprocals (0.03937, 0.1, 0.001) mean the exporting program applied the conversion in the other direction.

### How do I avoid unit problems permanently?

Use 3MF instead of STL where both ends of the workflow support it. 3MF records units explicitly, so the receiving program has no ambiguity to resolve.
