Dimensions, volume, material cost, and the two things that ruin a print —
holes and
non-manifold edges —
shown in red on the model itself.
Drop a model here
or click to choose a file
STL · OBJ · PLY · 3MF — up to a few hundred MB
drag to orbit · scroll to zoom · right-drag to pan
How Meshprep works
Your file is read in the tab, not uploaded. The browser hands the bytes
straight to a Web Worker. There is no server to send it to — Meshprep is a static page.
The file is parsed into triangles. STL, OBJ, PLY and 3MF are decoded by
hand-written parsers so the whole job can run inside the worker and your interface never
freezes, even on a 300 MB mesh.
Vertices are welded. Most formats store a "triangle soup" — the same
corner repeated for every triangle touching it. Corners within a hair's breadth of each
other are merged so the mesh's true connectivity can be seen.
Every edge is counted. In a solid, watertight mesh each edge is shared by
exactly two triangles. Edges used once are holes; edges used three or more
times are non-manifold. Both
are drawn in red on the model so you can see where the problem is.
Volume comes from the geometry, not a guess. Each triangle forms a
tetrahedron with the origin; summing their signed volumes gives the enclosed volume. The
sign also reveals whether the surface normals point inward.
Export is re-encoded locally. Scale, centring and axis conversion are
applied to the vertices and written back out as STL, OBJ, PLY or 3MF in your browser.
Privacy & threat model
Protected
Your model file never leaves your device. There is no upload endpoint and no backend.
Parsing, analysis and export all run locally, in a Web Worker in this tab.
No filename, dimension, or any value derived from your geometry is transmitted anywhere.
After the first visit the tool works with the network switched off.
No cookies. No fingerprinting. No third-party fonts. No advertising.
Not protected
Loading this page is an ordinary web request: GitHub Pages serves it and therefore sees
your IP address and user agent, as it does for any website.
A file you export and then choose to send through the system share sheet goes wherever you
send it. That step is yours, not Meshprep's.
This is not DRM and not a licence checker. It does not know or care what a model's terms
are — it simply never copies your file anywhere.
Trust surface
The static bundle served from GitHub Pages, and the TLS chain between you and it.
A Cloudflare Web Analytics beacon records anonymous page views — no cookies, no
fingerprinting, no cross-site tracking; your files/data are never sent to it.
Feedback you choose to send (and an email address, only if you supply one) is sent to
feedback.benrichardson.dev. Nothing is sent unless you open the feedback form and press
Send; your files and data never are.
The source is public — you can read exactly what it does, or run it offline from your own
machine.
About Meshprep
Meshprep answers the questions you have about an STL before you spend four hours and
a spool of filament on it: how big is it really, how much material will it use, and is the
mesh actually solid?
It exists because the alternatives are installing a 400 MB desktop package to ask one
question, or uploading the file to a website — which is a poor idea when the model is a paid
download, a client's part under NDA, or a product that hasn't shipped yet.