100% local processing — your files never leave your computer

Reduce STL File Size

Shrink an STL file by reducing its triangle count with deterministic, topology-safe edge-collapse simplification — locally in your browser, with every reduction verified against its own output.

Your STL stays on this device. MeshWrench simplifies it locally in your browser.

Binary or ASCII STL, up to 150 MB. This limit protects your browser from freezing — it isn't a Pro restriction.

Waiting for a file

Interactive 3D preview of the original and optimized model. Drag to rotate, scroll to zoom.

Target reduction

Resolved target: — triangles

Quality preset

How to reduce an STL file's size

  1. Select an STL file — MeshWrench analyzes it locally and shows whether it's eligible for automatic simplification.
  2. Choose a target reduction (25/50/75%, or an explicit triangle count) and a quality preset.
  3. Review the optimization plan, then run it. MeshWrench re-parses and re-verifies its own output before showing a result.
  4. Compare original and optimized triangle counts, file sizes and measured deviation, then download the optimized STL and/or a JSON report.

Why fewer triangles means a smaller file

A binary STL file is essentially 84 + triangleCount × 50 bytes — three full vertex positions plus a normal per triangle, with no shared/indexed vertex table the format could otherwise compress. There's no other meaningful place for a binary STL to shrink; a real reduction in file size requires a real reduction in triangle count, which is exactly what this tool measures and reports (actual generated output bytes, never an estimate from in-memory geometry).

How simplification works

Quadric error metrics
Each candidate edge collapse is scored by the combined squared-distance error to every plane the two merged vertices touched — the standard, well-understood approach (Garland & Heckbert), not a cruder heuristic like removing every Nth triangle.
Safety-checked collapses
Every candidate collapse is checked against the manifold link condition, boundary-loop adjacency, shell membership, normal-flip angle, and degenerate/duplicate-triangle guards before it's ever applied.
Preserved boundaries and shells
An open mesh's boundary loops and a multi-shell model's shell count are never altered by default — only genuinely safe interior and loop-adjacent boundary collapses are used.
Sampled deviation measurement
After simplifying, a bounded sample of both meshes' vertices and triangle centroids is checked against the other surface's nearest point — reported honestly as "sampled geometric deviation," never Hausdorff distance.

What automatic simplification cannot safely do

Related tools

Already know your file has a topology problem? STL Checker and STL Repair run before simplification makes sense. STL Viewer lets you inspect the optimized result with no analysis at all.

Frequently asked questions

How does reducing triangle count reduce file size?

A binary STL file is essentially 84 bytes plus 50 bytes per triangle. There's no other significant overhead to trim — meaningfully smaller STL output requires fewer triangles, which is exactly what this tool's edge-collapse simplification does.

Will simplifying change how my model looks?

Some detail loss is unavoidable at any real reduction — that's the whole trade-off. This tool never rounds away genuinely sharp edges under the "Preserve details" preset, always preserves your file's shell count and boundary topology, and reports a measured (sampled) geometric deviation so you can see exactly how much the surface moved.

What if my requested target isn't achievable?

You'll get the best SAFELY achievable reduction instead, reported honestly — this tool never forces an unsafe collapse just to hit an exact number, and never silently reports success when the real target wasn't reached.

Is my file uploaded to simplify it?

No. Every step — analysis, the collapse loop, serialization, and verification — runs locally in a Web Worker in your browser. Check your network tab while a file loads to confirm this yourself.

How is a successful reduction verified?

The simplified geometry is serialized to a real binary STL, that exact output is re-parsed with the production STL parser, and the full diagnostics pipeline runs on it again — "target achieved" is only ever reported when that verification pass confirms every safety invariant held.

Does this repair a broken mesh first?

No — a non-manifold or duplicate/degenerate mesh is detected and you're directed to STL Repair first. This tool never silently cleans up geometry as a side effect of simplifying it.