SubscribeGo ProYour plan Settings

An STL file has no units. It is a list of triangles, and each corner is three plain numbers; there is no field anywhere in the format for millimetres or inches. Slicers read the numbers as millimetres. So a part designed in inches and exported as it stands arrives 25.4 times too small, and one exported in metres arrives a thousand times too small. Fix it in the slicer by scaling by 2540% (or with PrusaSlicer's own inch conversion), or avoid it next time by exporting 3MF, which states its unit, or by exporting the STL in millimetres from the CAD program.

Why the file cannot tell the slicer

STL comes from 1987 and has two forms, text and binary, and neither has anywhere to put a unit. A binary STL is an 80-byte header, a count, and then fifty bytes per triangle: a normal and three corners, each as three 32-bit numbers. The header is free text that nobody is obliged to read. So when your CAD program exports "in inches", all it can do is write the numbers as they are in inches, and the slicer, having no way to know, reads 2.000 as 2 mm.

That is also why the error is always a round ratio. Work out what the slicer shows divided by what it should be:

The slicer showsIt was exported inScale by
25.4 times too smallInches2540%
10 times too smallCentimetres1000%
1000 times too smallMetres100000%
25.4 times too bigMillimetres, then read as inches somewhere3.937%

Fix it in the slicer

  • Any slicer: select the model, open the scale tool, keep uniform scaling on, and enter the percentage from the table. Check one dimension you know afterwards.
  • PrusaSlicer: since version 2.3 it notices a model that loads very small and offers to convert it from inches, and the object's right-click menu has Convert from imperial units, which multiplies by 25.4 for you.

Scaling is exact: 25.4 is the definition of an inch, not an approximation, so nothing is lost. What scaling cannot fix is a model that was designed at the wrong size in the first place, and the round-number test in the table tells you which you have.

Stop it happening

  • Export 3MF instead. A 3MF file declares its unit in the model itself, and current slicers read it. It is also smaller than an STL and can hold several parts and colours.
  • Or export the STL in millimetres, whatever units you design in. Most CAD programs have a unit choice in the STL export dialogue that is separate from the units you draw in.
  • Downloading a model? Check its stated size on the listing against what the slicer shows before you print. A large model that fills the build plate was probably drawn in inches and scaled the wrong way by someone along the way.

In the Engineering Suite

The Engineering Suite reads an STL into a solid you can join, cut and measure, so the question of units comes up on the way in. When a mesh is imported, it now says how big the part came in, in millimetres, and if that is under 12 mm in every direction it says the file may have been drawn in inches. The imported mesh has a setting, The file's units, with Millimetres, Inches (× 25.4), Centimetres (× 10) and Metres (× 1000). Choose the one the file was drawn in and the part is rebuilt at its true size.

We checked this with a block two inches by one by a quarter, written as an ASCII STL in inch numbers. It imported as 2 × 1 × 0.25 mm with the warning, and set to Inches it measured 50.8 × 25.4 × 6.35 mm, which is the same block. Its STL export is in millimetres, and its 3MF export states millimetres in the file, so the slicer reads it correctly either way. The suite's own test now checks that an imported mesh read as inches has exactly 25.4 cubed times the volume.

That unit setting was added while writing this page; before it, a mesh came in as millimetres and there was no way to say otherwise. The Engineering Suite is part of OBSCURA Pro. The slicer fix above is free and is all most people need.

Questions people ask about Why an STL is the wrong size in the slicer, and how to fix it

Why is my STL file so small in the slicer?

Because it was exported in inches and the slicer reads STL numbers as millimetres. An STL has no units at all, so a 2-inch part arrives as 2 mm, 25.4 times too small. Scale it by 2540% with uniform scaling on.

Does an STL file have units?

No. It stores each triangle corner as three bare numbers, and there is no field in either the text or the binary form for a unit. Slicers assume millimetres.

What percentage do I scale an STL by to convert inches to millimetres?

2540%, which multiplies every dimension by 25.4. To go the other way, from a model read as inches back to millimetres, scale by 3.937%.

How do I convert an STL from inches in PrusaSlicer?

PrusaSlicer 2.3 and later offers the conversion when a model loads very small, and the object's right-click menu has Convert from imperial units, which scales it by 25.4.

Should I use 3MF instead of STL?

For printing, usually yes. A 3MF file states its unit in the model, so the slicer does not have to guess, and it is smaller and can hold several parts. STL is still the format every slicer and CAM program accepts.

Why is my STL 1000 times too small?

It was exported in metres, so a 150 mm part is written as 0.15 and read as 0.15 mm. Scale by 100000%, or export again in millimetres.

Does scaling an STL by 25.4 lose accuracy?

No. An inch is defined as exactly 25.4 mm, so scaling by it restores the numbers the designer used; the triangles themselves are unchanged.

How can I tell what units an STL was made in?

Compare one dimension the slicer shows with the real size of the part. If the ratio is 25.4 it was inches, 10 centimetres, 1000 metres. Any other ratio means the model itself is at a different scale, not in a different unit.

Related

More on this

All 14 guides under “A file that will not open, or comes out wrong”.

A letter, now and then

An occasional letter when there is something worth reading: the new guides and what changed in the tools. Never more than once a month and nothing else, and you can leave at any time on the unsubscribe page.