Does a STEP to STL converter change the model while converting?
Every converter asks you to trust a middle step you cannot watch. This page replaces the trust with arithmetic. A binary STL has a fixed record, a fixed byte cost per triangle and no place to store a repair, so the things a converter claims to have done to your model either show up in the numbers or do not exist. All of the figures below are re-measured by this project’s own test suite on every release, and none of them is a promise about what another converter does.
The short answer
This converter tessellates and writes. It does not repair, weld, stitch, delete, merge, rotate or rescale anything. The kernel replaces each surface of the solid with flat triangles, the worker copies every one of those triangles into a single flat list, and the writer turns that list into 50-byte records. The 10 mm test cube comes back as 12 triangles and 684 bytes at Draft, Normal and Fine, and the 18-part assembly reports 18 closed shells with zero boundary edges at all three settings while its triangle count runs 4,900 → 7,372 → 21,116.
So the honest description of the middle step is short: triangles in, the same triangles out. What a converter’s page calls “processing” is where a change could be hidden, and the point of this page is that an STL cannot hide one. If a tool deleted a triangle, filled a hole or moved a vertex, the numbers below would move with it, and they do not.
What the output record can hold
A binary STL is an 84-byte header — 80 bytes of free text and a 4-byte triangle count — followed by 50 bytes per triangle. Each record spends its 50 bytes on a 12-byte normal, three vertices in 36 bytes and a 2-byte attribute. There is no matrix, no origin, no unit field, no part name and no place to write “this face was repaired”. Every fact about the geometry lives inside those vertex numbers.
That makes the size predictable from the count alone. The flat cube is 12 × 50 + 84 = 684 bytes at every setting, because a flat face needs no extra triangles no matter how fine the setting is. The 18-part assembly at Normal is 7,372 triangles and 368,684 bytes, from a STEP file of 433,606 bytes; the same identity is recomputed for every sample at every setting by npm test. If the middle of the pipeline added, removed or merged geometry, the byte length would stop matching 84 + 50 × n for the triangle count it reports.
Why duplicate vertices cannot be seen in an STL
Some converter pages promise to remove duplicate vertices. In an STL that promise is unobservable, and the record layout is the reason: the format has no index buffer. Every triangle stores its own three vertices, so a point shared by six triangles is written six times by definition. There is nothing to deduplicate, because nothing is shared in the first place.
The measured version of that statement uses the worker’s own audit of the merged triangle list. The 10 mm cube is 12 triangles, which is 36 vertex slots, and those slots describe 8 distinct corners — each corner written 4.5 times on average. The 18-part assembly is 7,372 triangles, which is 22,116 vertex slots, and those describe 3,656 distinct points — about six writes per point. A tool that “deleted duplicate vertices” and then emitted an STL would still emit the same 22,116 numbers, because that is what the format requires.
This is worth stating plainly because the claim sounds like a quality improvement. On the mesh side, merging coincident vertices is a real operation with real uses — it changes how a mesh is indexed. It just cannot show up in an STL, and it cannot be audited from the file you were handed. What you can audit is whether a triangle went missing.
The audit a repair would break
The check that does work is the edge count. In a closed shell every edge is shared by exactly two triangles, so the total number of edge uses divides cleanly in half. On the 12-triangle cube the audit reports 36 edge uses ÷ 2 = 18 edges and 0 edges used once. Take one whole face away and the same cube becomes 10 triangles, 17 edges and 4 edges used once — the hole is exactly that list of unpaired edges.
That pair of numbers is the tripwire for a pipeline that edits geometry. A deleted face, a filled hole or a merge that pulled two coincident vertices together moves at least one of them. On the assembly, the audit reports 18 shells, 0 boundary edges and 0 non-manifold edges at Draft, Normal and Fine — the same verdict at every setting, from the same run that counts the triangles. If this converter were quietly tidying shells, that verdict would change between settings or stop being clean.
Three settings, same shells
The quality setting is the only control this converter offers, and it is a curvature knob rather than a repair knob. It changes how far the triangles are allowed to drift from the true surface — 0.02, 0.005 and 0.001 in bounding-box ratio for Draft, Normal and Fine, with an angular limit alongside each — so a curved face gets more triangles and a flat face gets none.
| Setting | Triangles | STL bytes | Shells | Edges used once |
|---|---|---|---|---|
| Draft | 4,900 | 245,084 B | 18 | 0 |
| Normal | 7,372 | 368,684 B | 18 | 0 |
| Fine | 21,116 | 1,055,884 B | 18 | 0 |
If the setting were touching topology, the shell count or the boundary count would move with it. They do not: 18 shells and zero unpaired edges at all three, while the triangle count runs up by more than four times and the file follows the 84 + 50 × n rule exactly. That is the difference between choosing a mesh density and asking a tool to alter the part — the first is a knob on this page, the second does not exist here.
What is not in this pipeline
Absences are easier to state than features, because each one is a thing the page cannot do rather than a thing it promises:
- No upload. The file is read in this tab by the WebAssembly kernel; the request list is on the upload-safety page, which owns that question.
- No queue. Nothing is scheduled behind other jobs, because there is no server to schedule it on; the size-limit page owns the capacity side.
- No stored copy. Nothing is written anywhere except the file you download, which is assembled in memory.
- No repair. The shipped worker contains no repair, weld, stitch or merge routine. There is no stage that inspects a shell and edits it.
- No re-orientation. Axes and origin come through as the STEP file declared them; the orientation page measures that.
- No unit rewrite beyond the declared factor. An inch file is divided by 25.4 because that is what the header says, and the axes stay put; the units page owns the 25.4× diagnosis.
Read that list as the answer to the question in the title. The converter changes the representation — surfaces become triangles, a solid becomes a triangle list — and it does not change the part. The representation change is why the triangle count and the byte count are the only numbers that move.
A converter that says it repairs
One online converter’s own description runs the job as three steps and names a middle processing stage that attempts to correct geometry problems and delete duplicate vertices. The same page does not say which problems it found, whether it changed anything, or how a customer could see the difference; its prose and its feature table also disagree about colour on the same output. None of that makes the claim false. It makes it uncheckable — and an uncheckable claim about your model is exactly what the arithmetic above is meant to replace.
There is a fair version of the same feature, and it is the one this site chose: say what the stage is, say what it does not do, and print numbers a reader can re-run. “Triangles in, the same triangles out, 18 shells and zero boundary edges” is checkable from the file you downloaded. “We fix geometry” is not, because an STL has nowhere to record the fix.
Questions this page answers
Does a STEP to STL converter change the model while converting it?
A converter that only tessellates does not. This one reads the solid, replaces each surface with triangles and writes those triangles out; nothing is welded, filled, deleted or moved. The 10 mm test cube comes back as 12 triangles and 684 bytes at Draft, Normal and Fine, and an 18-part assembly keeps 18 closed shells with zero boundary edges at all three settings.
Is there an attempt to repair geometry inside this converter?
No. The shipped worker has no repair, weld, stitch or merge routine; it tessellates and copies every triangle the kernel returns into one flat list. Some converters describe a middle step that tries to fix geometry and drop duplicate vertices, but an STL has no vertex index to deduplicate, so that claim cannot be seen in the file you download.
If a converter removed duplicate vertices, would the STL get smaller?
Not in any way the file can show. A binary STL writes three vertices into every 50-byte triangle record: the 12-triangle cube uses 36 vertex slots for 8 distinct corners, and the 18-part assembly uses 22,116 slots for 3,656 distinct points. Nothing in the format is shared between triangles, so a deduplicated vertex list is still written out once per triangle.
How can I tell whether a conversion changed my geometry?
Three numbers on the file you downloaded: the length is 84 + 50 × triangles, the closed shells still have zero edges used once, and the triangle count is one the quality setting explains. The 10 mm cube audits as 12 triangles, 36 edge uses, 18 edges and 0 boundary edges, and the same audit on the 18-part assembly reports 18 shells with zero boundary edges at every setting.
Where these numbers come from
- 84-byte header, 50 bytes per triangle, 12 triangles / 684 bytes for the 10 mm cube — the binary STL layout and this project’s own output, recomputed by
npm testfor every sample at every setting. - 4,900 / 7,372 / 21,116 triangles and 245,084 / 368,684 / 1,055,884 bytes — the 18-part AP214 assembly,
as1-oc-214.stp, 433,606 bytes, converted at Draft, Normal and Fine; every byte figure equals 84 + 50 × its triangle count. - 36 vertex slots for 8 distinct corners, 22,116 slots for 3,656 distinct points — the worker’s own audit of the merged triangle list it writes, run by the suite on the cube and on the assembly at Normal.
- 36 edge uses ÷ 2 = 18 edges with 0 used once, and 10 triangles / 30 edge uses / 17 edges / 4 used once — edge counting over the same merged list; the open shell is that cube with one whole face removed. The holes page owns how to count and fix an open shell; this page uses the pair only as evidence that nothing was repaired.
- 18 shells, 0 boundary edges, 0 non-manifold edges at all three settings — the same audit on the assembly, from the run that also counts its triangles.
- What this page does not print — no monthly search volume, no keyword bid, no capacity or timing figure from another converter’s page, and no repair claim about this site. The verification page owns the format rejection list; this page links to it rather than repeating it.
npm test
The command above re-runs every number on this page. The workflow page owns the six steps in order, the upload-safety page owns where a file goes, and the converter is where a STEP file meets the kernel, in the tab.