Free STL test files with known defects.

9 small STL models, each built to contain one specific mesh problem, with its checksum and the result a correct checker should report. Use them to test a slicer, a repair tool, or your own mesh code. All files are CC0: no attribution, no restrictions.

Prefer to see a result first? Open any file in the free STL Error Checker, which runs in your browser and uploads nothing.

Clean closed mesh

A single closed, two-manifold, outward-oriented cube with no mesh errors.

Expected result: No errors; 1 shell. 12 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Open boundary

A cube with one face removed, leaving an open boundary loop of four edges.

Expected result: 4 boundary edges. 10 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Non-manifold edge

A closed cube with an extra fin triangle sharing one edge, giving that edge three incident faces.

Expected result: 2 boundary edges, 1 non-manifold edges. 13 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Duplicate face

A closed cube with one triangle duplicated at the same winding, so its three edges become non-manifold.

Expected result: 3 non-manifold edges, 1 duplicate faces (same winding). 13 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Reversed closed shell

A closed cube with every triangle reversed, giving a consistently wound but inward-facing shell.

Expected result: 1 inward-facing shells. 12 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Degenerate triangles

A closed cube plus one zero-area triangle whose three points are collinear. Degenerate faces are advisory, not print-blocking.

Expected result: 1 degenerate triangles (review items, not print-blocking). 13 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Disconnected debris

A large closed subdivided cube plus a tiny separate closed cube, a candidate for isolated debris.

Expected result: 1 isolated debris candidates (review items, not print-blocking). 19212 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Self-intersection candidate

Two closed cubes whose volumes overlap, so their surfaces cross without any shared vertices.

Expected result: 10 self-intersections, 8 contact risks (review items, not print-blocking). 24 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

Intentional opening

A closed box whose top is a frame around a deliberate square opening, whose four-edge rim is reported as a boundary and never auto-filled.

Expected result: 4 boundary edges. 18 triangles.

Manifest (JSON) · version 1.0.0 · CC0-1.0

A 3MF reference file.

Valid golden color round-trip reference. It is a small valid 3MF package (3.2 KB) with colors, used as the baseline for the 3MF Color Inspector. Not sure what is inside one? Read what a 3MF file is.

Manifest (JSON) · version 1.0.0 · CC0-1.0

How to use them.

  1. Open a file in your slicer. See which defects it warns about, repairs silently, or ignores. The same file can behave differently across slicers and versions.
  2. Run it through your repair or checker tool. Compare the counts with the expected result above. A tool that reports different numbers for the binary and ASCII copies has a parsing problem.
  3. Check the checksum first. If a result looks wrong, confirm the file is the original before you debug anything else.

For what each defect means and how to fix it, see what non-manifold geometry is, fixing a non-manifold STL, and fixing flipped normals.

Questions about the test files.

Are these files free to use?

Yes. Every file and manifest is released under CC0-1.0, so you can use, modify, and redistribute them, including in commercial software and tutorials, without asking.

Where do the models come from?

They are primitive geometry, mostly small cubes, constructed in code by a script in this project. No third-party or downloaded model is used, which is why the license is unambiguous and the expected result is known by construction.

How do I check that a file is unchanged?

Compare its SHA-256 checksum with the value on this page. On a Mac, run shasum -a 256 followed by the file name in Terminal.

Which files are binary and which are ASCII?

Each fixture is published twice: a binary STL and a byte-for-byte equivalent ASCII STL. A checker that parses both should report the same counts for both.

What does the expected result mean?

It lists the topology findings a correct checker reports for that file, such as the number of boundary edges or non-manifold edges. Findings that are advisory rather than print-blocking, like a degenerate triangle, are marked as review items.

Does a clean result mean the file will print?

No. The golden file is a closed, outward-oriented cube with no mesh errors, which is a topology result only. Wall thickness, supports, and slicer behavior are outside what a mesh check proves.