STL Printability Checker
NEW!

STL Printability Checker

Check an STL, OBJ or 3MF for holes, non-manifold edges and flipped normals β€” and see exactly where each one is on the model. Runs in your browser.

3D Printing

Drop your model here

STL, OBJ or 3MF β€” analysed in your browser, nothing is uploaded

Or try an example:

Keywords

stl printability checkeris my stl watertightfind holes in stl filenon manifold edges stlcheck stl before printingstl file not watertight fixwhere is the hole in my mesh

Need something else?

How to use

1

Drop an STL, OBJ or 3MF file onto the page, or pick one of the built-in examples. The file is read in your browser and never uploaded.

2

Read the verdict at the top: watertight, manifold and consistently wound are the three things a slicer needs before it will produce a clean toolpath.

3

Work down the defect list. Each row is one place on the model β€” one hole, one non-manifold area β€” not one edge, with its size and its position in model coordinates.

4

Click a row to swing the 3D view round to that defect. The boundary is drawn in red through the model, so a hole on the far side is still visible.

5

Take the coordinates back to your modelling tool and fix the geometry there, or use the slicer's repair if the defect is small enough to close safely.

Features

Every defect located, not just counted

Other checkers tell you a model has 6,106 non-manifold edges. This one tells you those edges are four places, gives each one a size and a coordinate, and points the camera at it. A count cannot be acted on; a location can.

Holes traced into rings

Boundary edges are chained into closed loops, so three missing triangles read as one hole rather than nine problems. Each loop is measured across its widest span, which is what tells you whether it is a real gap or a pinhole at the tip of a spike.

STL, OBJ and 3MF

Binary and ASCII STL, Wavefront OBJ with quads triangulated on the fly, and 3MF with each build item's transform applied so a plate of arranged copies is analysed as it will actually print.

Reads the file, not the extension

Plenty of exporters write ASCII data into a file named like a binary STL, and binary headers often begin with the word solid. The format is detected from the bytes, and a truncated download is reported as truncated rather than rejected as corrupt.

Why Choose This Tool?

Nothing is uploaded

The whole analysis runs on your own machine using ordinary web technologies. Client work under NDA, an unreleased product, a commission you have not delivered yet: none of it is transmitted anywhere, because there is nowhere for it to go. The page keeps working with the network disconnected once it has loaded.

It answers the question you actually have

You already know something is wrong β€” the slicer told you. What you do not know is where. This is built around that gap: the defect list is the main output, and the 3D view exists to serve it. Everything else on the page is secondary.

Diagnosis, not a black box repair

Automatic repair closes holes by guessing at geometry that was never there, and on a functional part that guess can quietly change a mating surface. This tool does not modify your model. It tells you precisely what is wrong and where, so the fix happens in the tool that owns the design.

It welds before it judges

An STL stores every triangle with its own three vertices, so nothing in the file says which triangles are neighbours. A checker that skips the welding step reports every edge in the file as a boundary and calls a perfectly sound cube broken. The vertex merge here is tolerance-based and scaled to the model, so corners that drifted apart in 32-bit floats still join.

What your slicer means by watertight, manifold and inside-out

Three different complaints that sound like one

Slicers reject models for several unrelated reasons and describe them all in roughly the same language, which is why the same fix keeps not working. It is worth separating them, because each has a different cause and a different remedy.

Not watertight means the surface has a boundary: somewhere there is an edge with a triangle on one side and nothing on the other. The surface does not enclose a volume, so the slicer cannot tell inside from outside and has nothing to fill. This is what people mean by a hole.

Non-manifold is a different failure. Here the surface has no gap, but some edge is shared by three or more faces β€” an internal wall left behind by a boolean, two solids fused along a face, a zero-thickness fin. At such an edge the question "which side is inside?" has no single answer, and the slicer cannot follow the surface through it.

Inverted or flipped normals means the winding order is wrong. Each triangle lists its corners in an order that defines which face points outward. When neighbouring triangles disagree, the surface has patches turned inside out; when the entire model is wound backwards, it is watertight and manifold and still unprintable, because the slicer will try to print everything except your object.

Why the number in the error message is not an error code

A slicer reporting "6106 non-manifold edges" is not giving you a code to look up. It is counting. Six thousand of them will typically be one seam where two halves of a model were joined without merging, and the useful question is not how many edges are wrong but how many separate places they form. Grouping the edges into connected clusters usually turns a five-figure number into three or four locations, each of which can be inspected and fixed in a couple of minutes.

How the check is done here

The file is parsed into a flat list of triangles, then the vertices are welded: coordinates that land on the same point within a tolerance derived from the model's own size are collapsed onto a single shared vertex. This step is mandatory rather than an optimisation. STL has no concept of a shared vertex β€” two triangles that meet along an edge simply repeat the same coordinates β€” so before welding there is no such thing as a neighbour, and every edge in the file looks like a boundary.

Once the mesh is welded, each edge is counted. An edge used by exactly two faces is normal. An edge used once is a boundary edge, and chaining boundary edges end to end produces the rings that are the actual holes. An edge used three or more times is non-manifold; those are clustered by shared vertices into the regions they occupy. Winding is checked at the same time: on a consistently wound surface, the two faces meeting at an edge traverse it in opposite directions, so any edge traversed the same way twice marks a flipped neighbour.

Volume comes from summing signed tetrahedra between each triangle and the origin. The magnitude is the enclosed volume, useful for estimating material; the sign is the interesting part, because a closed surface with negative volume is wound inside-out.

What this deliberately does not do

Self-intersection is not reported. Detecting every pair of crossing triangles is quadratic in the triangle count without a spatial index, and on a model large enough to matter it would lock the tab for minutes to produce a list nobody can act on. Wall thickness is not measured either: the answer depends on your nozzle, your material and your orientation on the plate, and a number produced without knowing those is worse than no number.

Nothing is repaired. Filling a hole means inventing surface that was never modelled, and on a decorative print that is fine while on a functional part it can silently move a hole or a mating face. The position and size of each defect are reported so the fix can be made where the design actually lives.

Frequently Asked Questions

Is my model uploaded anywhere?

No. The file is read and analysed entirely in your browser using ordinary web technologies, and no part of it is transmitted. There is no server-side component to this tool, so a model under NDA or an unreleased design stays on your machine. Once the page has loaded it continues to work with the network disconnected.

What does 'non-manifold' actually mean?

An edge is manifold when exactly two faces meet along it, which is what a real surface looks like. An edge shared by three or more faces is non-manifold: there is no consistent inside at that edge, so the slicer cannot decide what to fill. It usually comes from a boolean that left an internal wall, two objects fused along a face, or a surface with no thickness.

My slicer says 6106 non-manifold edges. Is that an error code?

No, it is a count of how many edges are wrong. That is why searching for the number finds nothing useful β€” a different model gives a different number. What matters is how many separate places those edges form, which is usually a handful. This tool groups them into clusters and points you at each one.

Why does my model look fine but still fail?

Most defects are invisible at normal viewing size. A hole can be a single missing triangle at the tip of a spike, an internal wall from a boolean sits inside the model where nothing shows, and a model wound entirely inside-out renders identically to a correct one in most viewers. That is the reason for reporting coordinates and a size rather than expecting you to find it by eye.

Which file formats can I check?

Binary and ASCII STL, Wavefront OBJ, and 3MF. The format is detected from the file's contents rather than its extension, because exporters frequently write ASCII STL data into a file that looks binary by name. Faces with more than three corners in an OBJ are triangulated automatically.

Does it repair the file?

No, by design. Automatic repair has to invent geometry to close a hole, and on a functional part that guess can move a surface you depend on. This tool tells you precisely what is wrong and where it is, so the fix is made in the software that owns the model β€” or knowingly delegated to your slicer's repair if the defect is trivial.

How big a file can it handle?

Up to about eight million triangles, which covers essentially every printable model including detailed 3D scans. Beyond that a browser tab cannot hold the mesh, and the tool says so rather than freezing. Very large models take a few seconds to analyse; the wireframe overlay is disabled above forty thousand triangles because it stops being readable.

What units are the measurements in?

STL and OBJ carry no unit information at all, so the numbers are shown in millimetres, which is what every consumer slicer assumes. If your model was exported in inches or centimetres the shape and the defect list are still correct, but the dimensions will need scaling. 3MF does declare its unit, and that is read from the file.

Is more than one separate piece a problem?

Not necessarily. A multi-part model is perfectly legal and slicers handle it. But a stray shell is also the classic symptom of a stray fragment left behind by an edit, or a duplicate sitting exactly on top of the original. Any shell that is not the largest one is listed with its position so you can decide whether it belongs there.

Related Articles

Learn more