viewhack

3D model viewer: open STL, OBJ and GLB files and measure them

Drop a 3D model to turn it, zoom in and save a picture, and to get the numbers a 3D print depends on: triangle count, width × depth × height, surface area, whether the mesh is watertight, and its volume. It opens STL (binary and text), OBJ with its .mtl and textures, GLB, and .gltf with its .bin, using three.js inside this tab.

The model is opened on your device. It is never uploaded.

What it shows

What it cannot open

Useful to know about 3D model files

STL has no units
An STL stores bare numbers. Cura, PrusaSlicer and nearly every CAD export treat them as millimetres, so this page does too, with a switch for cm, m and inches. If a part you expect to be 40 mm long shows as 1.575, it was exported in inches (1.575 × 25.4 = 40). If it shows as 0.04, it was exported in metres.
Binary versus ASCII STL
A binary STL is an 80-byte header, a 4-byte triangle count and exactly 50 bytes per triangle, so a 1-million-triangle model is about 50 MB. That exact size is how viewhack recognises one, since the header can hold any text, even the word “solid”. An ASCII STL writes every number out as text and is usually about five times bigger for the same mesh. Neither stores colour in a standard way, or shares corners between triangles.
Why watertight matters
A slicer has to decide what is inside the part and what is outside. With a hole in the surface there is no inside, so it may fill the wrong regions, skip layers or refuse the file. Typical causes: a face deleted by accident, a model built from separate surfaces that only look joined, or parts that touch without sharing edges. The open-edge count shows how many edges are affected. Slicers' repair functions and Blender's 3D-Print Toolbox can close small holes.
How the volume is worked out
Each triangle and a fixed point form a tetrahedron whose volume is positive or negative depending on which way the triangle faces. On a closed surface the parts outside the solid cancel, and the sum is the exact enclosed volume, whatever the shape. On an open surface nothing cancels properly, which is why no number is shown. If the triangles are wound inconsistently (some face in, some out), the volume is withheld as well.
Weight of a print
The page multiplies the volume by 1.24 g/cm³, a typical PLA density. A 20 × 10 × 5 mm block is 1,000 mm³ = 1 cm³, about 1.24 g printed solid. Real prints use a few solid walls plus 15–20 % infill, so they weigh noticeably less; how much less depends on the wall count and the part's shape. For a quote, trust your slicer's estimate.
glTF, GLB and the .bin file
A .gltf is JSON describing the scene. Its geometry sits in one or more .bin files, and its textures in image files, all named inside the JSON. A GLB packs all of it into one binary file. To open a .gltf here, select the .gltf together with its .bin and images in the file picker, or drop them all at once. Positions in glTF are metres, and Y points up.