InspectMesh
Tools

Planning & calibration

3D Printer Fit Checker3D PrintersCompare 3D Printers3D Print Cost Calculator3D Printing Price CalculatorFilament Length CalculatorFlow Rate CalculatorTolerance & ClearanceShrinkage CalculatorOrientation PlannerBed Layout Planner

After slicing

G-code Viewer & Preflight
View all 3D tools
STL toolsSTL ViewerSTL Quality CheckerSTL Print Preflight CheckerSTL Repair ToolSTL Watertight CheckerSTL Manifold CheckerSTL Dimensions CheckerSTL Scale ToolSTL Wall Thickness CheckerSTL Overhang CheckerSTL SplitterSTL Volume CalculatorSTL Triangle CounterSTL File Size ReducerSTL to 3MF Converter
3MF tools3MF Viewer3MF Quality Checker3MF Print Preflight Checker3MF Repair Tool3MF Watertight Checker3MF Manifold Checker3MF Dimensions Checker3MF Wall Thickness Checker3MF Overhang Checker3MF Volume Calculator3MF Triangle Counter3MF to STL Converter
MaterialsGuidesContact
Home›Guides›How InspectMesh Checks Files

Methods and processing

How InspectMesh Checks Files

Substantially updated 2026-10-27. First published 2026-10-10.

InspectMesh reports bounded geometry observations, not a print certification. Read the method, assumptions and unavailable checks alongside a finding. A closed-looking picture, zero edge findings or a completed operation each answers only part of the question.

Placed identity and export verification contract

The local viewer, converter, local preflight and collection path share a bounded core geometry resolver. It follows the package root model relationship, applies component then parent placement transforms and converts source units once to millimetres. Top-level build order supplies stable identities for repeated references. Unplaced resources contribute no build geometry. The server dimensions/quality methods remain separate methods with their own reports.

Source to scope to derivative check: mathematical schematic.
Method version inspectmesh-3mf-export-1 compares the derivative against a deliberately chosen scope.
Status Meaning
Complete supported geometry Every placed item resolved within the implemented core mesh/component contract; project properties are outside the check
Unsupported required semantics Required namespace or cross-part geometry needs another application; no complete export offered
Invalid model data Malformed XML, invalid references, cyclic or nonfinite data; no omitted-item success
Processing limit reached Bounded file/expanded package, entry, component, geometry or precision budget

Limits are 25 MiB compressed, 20 MiB expanded, 1,024 entries, 500,000 triangles, 1,500,000 resolved vertices, 10,000 component visits and depth 64. Collection retains its stricter 5 MiB / 100,000-triangle budget. External relationships and uploaded links are never fetched. Recommended unsupported extensions conservatively stop for authoring-application review. Unknown optional properties alone do not block core geometry.

Exact serialized STL bytes reopen through the repository parser. Every oriented triangle is compared after Float32 rounding, allowing cyclic vertex order and preserving multiplicity. Count and bounds supplement this check. A half-ULP scale-based allowance with a 0.0000001 mm floor describes representation; exports exceeding a 0.01 mm allowance are rejected. Matching this geometry does not certify topology or physical printing.

Technical basis: 3MF Core specification 1.4.0, sections 3.3, 3.4 and 4.2; reviewed 11 October 2026. Examples are original mathematical controls, not physical print measurements or tests of every slicer.

What the local methods can establish

Method and inputs Supported finding Important limit Representative example
STL coordinates with an explicit unit assumption Axis spans and scaled dimensions STL has no standard unit declaration; an assumed unit does not rewrite bytes 20-coordinate cube
Supported 3MF mesh build, declared unit and transforms Placed triangle geometry normalised to millimetres for analysis/conversion Stored resources differ from build instances. Unsupported extensions and project settings are not validated One resource, two placements
Exact-coordinate welding and edge incidence in local preflight and collection checks One-face boundary edges, more-than-two-face edges, duplicate and zero-area triangles No distance-tolerance welding or exhaustive vertex-manifold proof. Local STL preflight separately runs a bounded BVH triangle-pair screen; duplicate/coplanar overlap remains ambiguous and collection review does not run it Face-removed cube
Directed shared edges and vertex-connected components Neighbouring winding conflicts and component counts Stored STL normal vectors are not used; consistent winding does not determine the intended outside. A point-touching body can be one component Reversed triangle versus stored normal
Signed tetrahedron sum, screened single closed component Magnitude of geometric enclosed volume under the selected unit Withheld for detected open, degenerate, duplicate, over-shared, winding or multi-component ambiguity. Intersections can escape these screens Unavailable is not zero
Up to 2,000 input-order triangle-centroid inward normal rays; one ray per selected face Attempted = measured + unmeasured samples. Below-threshold counts use measured ray distances; unsampled triangles are separate The ray starts 0.00001 coordinate units inward, accepts a finite first hit beyond that offset and has no explicit distance cap. Degenerate sampled faces and absent hits are unmeasured. Another body can be hit; small features may be missed. Strength is not tested Thin bars and retained slicer paths
Bidirectional area-distributed samples to triangle BVHs in revision comparison 5,000 point-to-surface distances per direction, sampled maximum/mean and tolerance counts Finite samples can miss detail. Maximum sampled is not a global upper bound, certified metrology or equality proof Raised-ridge coupon
Axis-aligned bounds and six right-angle axis permutations Nominal rectangular fit for the selected box No arbitrary-rotation search, general collision check, automatic brim/support allowance or orientation recommendation for strength Custom envelope and allowances

Which actions process locally and which upload

The STL/3MF viewers open geometry locally. STL/3MF preflight, revision comparison, STL scale, STL reduction and the geometry converter also run locally. Loading an example fetches only a fixed public registry asset; it does not send your active model. Renderer code loads when the relevant tool needs it; this library uses lightweight static diagrams.

The viewer's optional issue-analysis action explicitly uploads the selected file to the quality-checker server workflow. Server quality, dimensions and volume checking and STL repair have their own explicit submission and processing disclosures. Do not interpret the local viewer's initial opening as server analysis, or assume the local methods are the same as every server checker. Review the privacy policy for policy and retention details before an upload.

Collection navigation can hold a selected File in this tab's memory for an explicit handoff. Reloading requires reselection. Optional collection history stores report data such as labels, settings, findings and bounded thumbnails in this browser, not original model bytes or full geometry arrays. Exported reports can contain private filenames and findings; choose where to share them yourself. Example URLs carry only a public allowlisted ID and canonicals point to the clean tool page.

The server report builder withholds volume unless validation passes and its topology screen finds one component, no open or over-shared edges and consistent winding. Supported 3MF placements resolve first, but multiple valid separated placements still leave volume unavailable. This method policy is separate from an analytical sum or another application's solid operation. The local processor capture and local collection capture name their actual execution paths. Neither is a deployed endpoint test. See method-aware 3MF volume interpretation.

Local 3MF triangle cleanup

3MF Repair accepts supported mesh packages up to the current 25 MiB file limit and processes them in this browser. A package must resolve before a removal plan is available; invalid indexes that stop resolution need a fresh source export. Selected operations remove duplicate vertex-index triples (ignoring order), relative-tolerance degenerate faces or supported invalid-index triangle elements. It does not fill holes, weld vertices or correct winding.

Coordinates and surrounding model XML text remain while selected triangle elements are removed. Decompressed payloads of other ZIP parts are retained; the compressed archive is regenerated. Reopening through the local parser checks supported resolution, not every extension or receiving-application assignment. A shared resource edit can affect several placements. Review the repair workflow and reopen the exact saved bytes in the target application.

The removal-plan screen skips duplicate, degenerate and invalid-index faces for its source-index edge counts; edge keys span the selected model part and are not isolated per resource. Treat these as plan diagnostics, not a complete topology report. Server quality checks instead use exact-coordinate incidence per placed build item, retaining duplicate-face incidence and summing counts. Server and local 3MF preflight do not run a spatial intersection check; STL local preflight has its separate bounded BVH screen. No method here certifies full package or extension validity.

Read result states literally

  • Completed: the supported operation returned a result; inspect warnings and scope.
  • Warning / needs attention: review a finding against units, design intent and the intended process.
  • Skipped / unsupported: the method did not run or cannot answer this question. It is not a passing result.
  • Sampled: a bounded set of observations, not exhaustive coverage.
  • Failed: no usable result from that operation. Do not read an empty report as zero defects.
  • Unavailable volume: no supported solid-volume interpretation, not zero material.

How the examples were produced and verified

The example library contains eight teaching scenarios with stable IDs, original generated geometry, known dimensions, downloadable bytes and original explanatory diagrams. Regression checks read those distributed files, run the actual local implementations and reopen generated STL output. They distinguish duplicate facets, reversed winding and stored normal vectors, resolve 3MF instances/units/transforms and check nominal fit arithmetic independently. These are software controls, not customer models or physical prints.

The coupon derivatives use meshoptimizer 1.2.0, relative error 0.01 and LockBorder. Actual retained PrusaSlicer 2.9.6 Classic/Arachne exports use a 0.4 mm nozzle, 0.2 mm layers, 0.45 mm extrusion width, two perimeters, zero infill and thin-wall option off. Their configuration footers remain available in preview-only G-code. No printer was controlled; a slicer estimate is not measured print time. The guide explains the recorded experiment and its limitations.

The equal-bounds changed-hole control retains 32 triangles while an 8 mm square opening becomes 6 mm. Both serialized files were independently checked for edge incidence, winding, bounds and volume, then compared with the existing local bidirectional method. The 24/72-segment curve controls separate analytical sagitta from reopened polygon geometry. The dated evidence and implementation hashes identify local-function observations, not CAD, deployed-server or physical-print tests.

Technical basis and review boundary

The 3MF Core Specification defines units, resources, build items and transforms. meshoptimizer documents simplification constraints; Prusa's Arachne documentation explains variable-width perimeters. Reviewed 10 October 2026 alongside the application code. These references support specific method claims; no standard certifies the whole application and no expert reviewer credentials are claimed.

G-code evidence and per-metric coverage

The browser worker reviews a conservative linear model: G0/G1, G20/G21, G90/G91, G92, M82/M83 and temperature targets M104/M109/M140/M190. It starts logical XYZ/E at zero with millimetres and absolute modes until declared otherwise. These are disclosed model assumptions, not measured machine state. G92 E resets logical extrusion; G92 XYZ makes machine-frame extents incomplete. G90/G91 after explicit E modes, and M82 under relative XYZ, are marked firmware-dependent, as Marlin M82 and Klipper commands describe different interactions.

Recognised auxiliary fan/display/query/wait actions are outside geometry rather than automatically classified as bad paths. Unknown commands, arcs, macros and tool behaviours are not executed; unsupported state effects make subsequent linear/extrusion extents incomplete. The original line, escaped text excerpt, interpretation and next action remain inspectable. Evidence retains at most 100 groups with up to three 240-character samples each; temperature targets retain a bounded sample. Counts and first/last lines distinguish repeated findings from one event.

At most 200,000 source lines are reviewed; a source line over 4,096 characters produces an explicit unavailable import to bound parameter processing. The preview retains the first 50,000 moves; extents use all reviewed linear moves and disclose source truncation separately. New file loads terminate previous workers and invalidate stale findings/offers through request identity. No raw file is saved automatically. Report version 2 records metadata declarations, byte size/hash when available, coordinate assumptions, manual inputs and limitations; JSON/copy/print/PDF share one record without full source or path arrays.

PrusaSlicer 2.9.6 normal-mode elapsed duration and unambiguous single-filament grams declarations use the official processor time-comment implementation and per-filament statistics implementation, reviewed 10 October 2026. Comma-separated tool consumption is not collapsed. Length-only declarations are not automatically converted without verified diameter/density and scope. A slicer label is an unverified file declaration; a supported value is neither physical measurement nor authenticated provenance. Path uncertainty and declaration availability are separate metrics.

Operation-specific reducer verification

Reducer candidates start independently from the retained original. Each is serialized once, then those exact bytes reopen through the STL parser; the download reuses that blob. The verifier compares every intended output triangle under Float32 storage, retaining winding and multiplicity. For encoding, intended output is the source triangle geometry. For simplification, intended output is the algorithm's derivative: it is not expected to equal the original.

Count and 84 + 50N binary byte arithmetic supplement the triangle check. Original and candidate use the shared exact-coordinate topology screening up to 100,000 triangles. Boundary, over-shared, duplicate, degenerate and winding-conflict counts are compared; unavailable screening is labelled. Self intersections and defect locations are not checked. Increased finding counts require diagnostic-download acknowledgement, not a repaired or safe badge.

Comparison is explicit, uses the existing bounded worker and retains candidate identity and unit/tolerance basis. Candidate replacement or removal clears associated results; source replacement cancels work and suppresses late responses. Up to three derivative blobs remain in tab memory without automatic raw-file persistence.

Human dimensions and offsets show up to three decimals; small nonzero values and diagnostic errors use significant digits or scientific notation. Unavailable is distinct from zero. Geometry serialization, JSON numbers, tolerance tests and boundary decisions retain stored precision. Display resolution does not establish physical accuracy.

FAQ

Does a completed check mean print ready?

No. Completed describes a software operation. Unsupported intersections, unsampled detail, design intent and the physical process still need review.

Do examples upload my model?

Loading a public example downloads that fixed control and uses the tool's local workflow. Optional viewer issue analysis is a separate deliberate server upload.

Get occasional updates on new tools and practical 3D-print guides.

Verification (required)

Enter your email to start verification.

Simple, browser-friendly tools for better 3D prints.

ExamplesPrivacyCookiesContact