Two ways to write the same triangles
Every STL is a list of triangles, each with a normal and three corners. The format allows two encodings. ASCII STL is text: the file starts with solid name, then repeats facet normal, outer loop, three vertex lines, endloop, endfacet for every triangle, and ends with endsolid. Binary STL is an 80-byte header, a 4-byte triangle count, then 50 bytes per triangle: twelve 32-bit floats (normal and three corners) and a 2-byte attribute that almost nobody uses. Same geometry, same precision, very different size: the binary form is typically five to seven times smaller.
This converter reads either form and writes the other. It also tells you which one you have, because the file extension does not: both are .stl. Detection is done from the content, not from whether the file begins with the word solid, since some exporters write solid into the binary header and break naive checks.
Like every tool on this site, the work happens in your browser. The file is read from your device, parsed in memory and drawn with WebGL; no copy is sent anywhere. Open the network panel of your browser's developer tools while you load a model and you will see no upload. Close the tab and the model is gone.
Worked example: the 40 mm cube both ways
Binary cube.stl is 684 bytes: 80 + 4 + 12 x 50. Drop it.
- The status line reads
binary STL,12 triangles,684 bytes,40.0 x 40.0 x 40.0 mm. - Click Download as ASCII. The result is about 3 KB and starts:
solid cube
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 40 40 0
vertex 40 0 0
endloop
endfacet
facet normal 0 0 -1
...
endsolid cubeDrop that ASCII file back on the page and it reads ASCII STL, 12 triangles; Download as binary gives you 684 bytes again, byte for byte the same triangles. Nothing is gained or lost by the round trip except the header text, which the binary form limits to 80 characters.
Scale that up: a 400,000-triangle scan is 20 MB as binary and somewhere around 110 to 140 MB as ASCII, which is why sharing sites and slicers prefer binary and why an ASCII STL that arrives by email is often a sign the exporter had a default set the wrong way.
When each form is the right one
| Need | Use | Why |
|---|---|---|
| Slicing, sharing, storing | Binary | Smaller, loads faster, every slicer reads it |
| Reading in a text editor or a script | ASCII | Human readable, one triangle per seven lines |
| Version control diffs | ASCII | Line-based diffs make sense; binary diffs do not |
| Old CNC or lab software | Whichever it accepts | Some 1990s tools read only one form |
| Debugging a "file will not open" error | ASCII | You can see the truncated facet or the stray character |
| Email or messaging limits | Binary | A fifth of the size |
Limitations
- The 2-byte attribute field of binary triangles is written as zero. A few tools store colour there in a non-standard way; that colour does not survive.
- ASCII output writes coordinates with enough digits to round-trip a 32-bit float; it does not preserve the original text formatting of an ASCII input.
- Multi-solid ASCII files (several
solid ... endsolidblocks) are merged into one binary body. - The whole file is held in memory; a 500 MB ASCII STL may not open on a phone.
- This page converts encoding only. For measurement use the dimensions page; for fixes use STL repair.
Last updated 2026-09-16. Runs in your browser; nothing is uploaded.