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.

4 min read

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 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 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 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.

Open the 3D viewer

More guides

All articles