Premium apps Part of Renderloom

3D Mesh Analyzer (STL, OBJ, PLY)

Check a 3D mesh: volume, area, size, watertightness, holes and print material.

Binary or ASCII STL, OBJ, or ASCII/binary PLY up to 30 MB and 500000 triangles.

More options

STL and PLY store no units. Choose the units the model was drawn in.

Try an example: A 20 mm calibration cube (ASCII STL) · A 30 mm sphere in PETG with 15% infill (binary STL) · An open box with a flipped triangle (OBJ)

More about this tool

How it works

Upload an STL, OBJ or PLY mesh to measure its volume, surface area, bounding box and centroid, find holes, non-manifold edges, flipped triangles and separate parts, and estimate print material by volume × density with an optional infill approximation.

  • The file is parsed locally (binary STL is recognised by its 84 + 50 × n byte length; ASCII STL, OBJ and PLY by their headers). Vertices are welded within the chosen tolerance by grid hashing; the first vertex in file order is kept.
  • Each undirected edge is counted: one triangle = open boundary edge, three or more = non-manifold edge, two triangles traversing it in the same direction = inconsistent winding. Boundary edges are chained into hole loops. Parts are triangles connected through shared edges.
  • Watertight means no boundary or non-manifold edges, consistent winding and no vertex joining separate surface fans. The Euler characteristic is V − E + F; for a watertight mesh with C parts the total genus is C − χ/2.
  • Signed volume uses the divergence theorem, Σ a · (b × c) / 6 over all triangles; a negative value means the normals point inward. Area is Σ |(b − a) × (c − a)| / 2. The PCA box uses the eigenvectors of the area-weighted surface covariance; it is not the minimal bounding box.
  • Triangle quality is 4√3 × area / (sum of squared edge lengths): 1 for an equilateral triangle, near 0 for slivers. Mass = volume × density. With infill, a shell of surface area × shell thickness is solid and the remaining volume is filled at the infill percentage.

Volume, centroid and material figures are only meaningful for watertight meshes. Self-intersections are not detected. The infill estimate is a rough shell-plus-infill approximation, not a slicer result.

Sources

Part of Renderloom

How to check an STL, OBJ or PLY mesh before printing

Measure a mesh's volume, area and size, find holes and bad edges, and estimate print material from volume and density.

What it is for

3D Mesh Analyzer reads a triangle mesh and tells you whether it is a closed solid and what it measures. Upload a binary or ASCII STL, an OBJ, or an ASCII or binary PLY, or paste a small ASCII file. You get volume, surface area, the axis-aligned bounding box, a box aligned with the part's main directions, the centroid, holes, edges shared by too many triangles, flipped triangles, separate parts and a material estimate.

Use it before sending a part to a slicer or print service, when an exported model "looks fine" but a slicer complains, or when you need a weight and filament figure for a quote. It does not repair anything; the companion 3D Mesh Repair tool does that. It also does not detect self-intersections or thin walls.

Worked example

The first example is a 20 mm calibration cube as ASCII STL, with PLA selected. The summary reads "Watertight mesh: 8 cm³ volume, 24 cm² surface, 12 triangles." The topology table shows 8 vertices, 18 edges, no open boundary edges, an Euler characteristic of 2 and genus 0, exactly what a closed box should have. PLA at 1.24 g/cm³ gives a solid mass of 9.92 g and 3.326 m of 1.75 mm filament.

The second example is a 30 mm sphere as binary STL in PETG with 15 % infill and a 1.2 mm shell. Its 1,280 triangles enclose 14.0155 cm³, a little under the 14.137 cm³ of a perfect sphere because flat facets cut the curve. The shell estimate is 3.37675 cm³, the printed volume 4.97257 cm³ and the printed mass about 6.315 g, compared with 17.8 g solid.

The third example pastes an OBJ box whose top is missing and whose bottom has one flipped triangle. The callout reports one open hole with 4 boundary edges and 3 edges joining triangles with opposite winding, and warns that volume and material figures are not reliable. The shown 5.33333 cm³ is indeed meaningless for an open shell.

How to read the result

Watertight is the headline. It requires every edge to be shared by exactly two triangles that run along it in opposite directions, and no vertex where separate surface fans touch. Only then is the divergence-theorem volume a true enclosed volume. Inside out means the mesh is closed but its normals point inward; the volume shows as negative.

Holes counts groups of open edges, separate parts counts pieces connected through shared edges. The PCA box follows the part's main directions, so a rotated slab shows its real length, width and thickness. It is not guaranteed to be the smallest possible box. Triangle quality is 1 for an equilateral triangle; values below 0.1 are listed as slivers.

Tips and common mistakes

  • STL and PLY store no units. A part drawn in inches and read as millimetres is 25.4 times too small in each direction; pick the right Model units.
  • Keep Vertex welding on Automatic for STL files from CAD. Use Loose only for exports with visible cracks between facets.
  • The infill figure treats surface area × shell thickness as solid and fills the rest at your percentage. Slicers add top and bottom layers differently, so expect differences.
  • A resin preset gives mass but no filament length.
  • Several separate parts are counted together; overlapping parts count their shared volume twice.

FAQ

Why is my volume negative?

The mesh is closed but inside out. Run it through 3D Mesh Repair to turn the normals outward.

Is my file uploaded?

The form sends the file to the usefulweb server for this one calculation. Renderloom Mesh Lab runs the same engine entirely in your browser, without any upload.

What are the size limits?

30 MB per file and 500,000 triangles.

Why does a closed mesh still show non-manifold vertices?

Two parts touch at a single corner. Many slicers accept this, but some print services reject it.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://renderloommeshanalyzer.usefulweb.site/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://renderloommeshanalyzer.usefulweb.site/mcp · tool name renderloom_mesh_analyzer
Example request
curl -s -X POST https://renderloommeshanalyzer.usefulweb.site/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{…see OpenAPI examples…}'
Feedback · ideas & bug reports welcome