InspectMesh
Tools

Planning & calibration

3D Printer Fit Checker3D PrintersCompare 3D Printers3D Print Cost Calculator3D Printing Price CalculatorFilament Length CalculatorFlow Rate CalculatorTolerance & ClearanceShrinkage CalculatorOrientation PlannerBed Layout Planner

After slicing

G-code Viewer & Preflight
View all 3D tools
STL toolsSTL ViewerSTL Quality CheckerSTL Print Preflight CheckerSTL Repair ToolSTL Watertight CheckerSTL Manifold CheckerSTL Dimensions CheckerSTL Scale ToolSTL Wall Thickness CheckerSTL Overhang CheckerSTL SplitterSTL Volume CalculatorSTL Triangle CounterSTL File Size ReducerSTL to 3MF Converter
3MF tools3MF Viewer3MF Quality Checker3MF Print Preflight Checker3MF Repair Tool3MF Watertight Checker3MF Manifold Checker3MF Dimensions Checker3MF Wall Thickness Checker3MF Overhang Checker3MF Volume Calculator3MF Triangle Counter3MF to STL Converter
MaterialsGuidesContact
Home›Guides›ASCII vs Binary STL: What Is the Difference?

STL format guide

ASCII vs Binary STL: What Is the Difference?

Substantially updated 2026-10-31. First published 2026-09-05.

Choose binary STL when the recipient accepts it and you want compact triangle records. Choose ASCII when a particular workflow requires readable text. Neither choice repairs the surface, and binary export can round decimal coordinates to Float32 values.

Choose an encoding for the recipient

Decision ASCII Binary
Readability Readable decimal text, useful for small-file debugging Fixed-size numeric records, not human-readable text
Record storage Size depends on digits, spacing and labels 50 bytes per triangle plus header/count
Coordinate representation Decimal values may already be rounded IEEE 754 Float32 coordinates can round those decimals
Mesh changes Encoding does not itself choose a simplification Binary encoding does not intentionally remove triangle records
Receiving compatibility Use when explicitly required Use when supported and compact storage matters

If the requirement is fewer triangles rather than fewer stored bytes, use the method-selection guide. Do not confuse a different storage representation with a repaired or simplified surface.

Identify and validate the file structure

ASCII uses tokens such as solid, facet, vertex and endsolid. Standard binary starts with an 80-byte header and a four-byte count. A header beginning with solid does not prove ASCII: validate record length or parse the complete text facets. A truncated record is a parsing problem. Successful structure parsing does not establish closed, correctly wound or printable geometry.

If the record is incomplete, check incomplete STL records against controlled missing-byte and count-mismatch files. That investigation separates failed input from a complete file whose surface has a hole.

Understand bytes and coordinate representation

Standard binary bytes = 84 + 50 × triangle count. A 12-triangle cube uses 684 bytes. At 100,000 triangles it is 5,000,084 bytes, about 4.77 MiB. ASCII has no fixed bytes-per-triangle formula. Those are storage calculations, not predictions of slicing time or surface detail.

Does converting ASCII STL to binary lose coordinate precision?

It can round a decimal coordinate that is not exactly representable in IEEE 754 Float32. It does not intentionally remove triangles, close a hole or restore source CAD accuracy. ASCII can also contain rounded or inaccurate decimals; more digits do not establish physical accuracy.

Decimal input Encoded and reopened Float32 Absolute difference
20 20 0
0.1 0.10000000149011612 1.4901161138336505e-9
20.1 20.100000381469727 3.8146972514141453e-7
1000000.1 1000000.125 0.025000000023283064

Representation experiment reproduced 11 October 2026 with little-endian Python struct Float32 packing and unpacking; download the numerical evidence. The decimal-offset cube also runs through the actual STL serializer/reopen checks. Differences are coordinate-unit values, not a universal acceptable printing tolerance. Large offsets make Float32 spacing coarser; changing units or translating a source is a separate deliberate operation.

Readable displayed coordinates versus full stored numerical precision
Original analytical schematic, not a physical print measurement.

25.39999771118164 displays as 25.4 mm. A tiny negative value retains its sign; a value of 20.0000001 still exceeds a 20 boundary even when its display rounds to 20. Screen and copy values are presentation; JSON coordinates and verification decisions retain stored numerical precision. Three displayed decimals do not imply 0.001 mm measurement accuracy.

The Library of Congress binary STL description documents the record structure; Math.fround documentation explains single-precision conversion. Reviewed 11 October 2026. Review an encoding candidate against its original bytes and reopened geometry, then check a known coordinate in the receiving application.

Verify the encoded derivative

  1. Preserve the source and record the receiving requirement and unit assumption.
  2. Generate a separate binary candidate in the local reducer without intentional triangle removal.
  3. Reopen the exact output bytes. Compare intended triangle records under Float32 storage, important dimensions and supported topology findings. Count alone does not establish equality.
  4. Open that same derivative in the receiver and inspect critical features/layers. Keep the source if compatibility or a feature remains unresolved.

The detailed Float32 experiment above owns representation precision. Triangle-count interpretation owns complexity, while candidate review owns actual mesh simplification.

Get occasional updates on new tools and practical 3D-print guides.

Verification (required)

Enter your email to start verification.

Simple, browser-friendly tools for better 3D prints.

ExamplesPrivacyCookiesContact