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.