Skip to content
STLBench

Free online STL viewer

STL viewer that also measures the mesh

This STL viewer is free and needs no signup: drop a file on the canvas and it opens in your browser, with nothing uploaded to anywhere. Orbit it, switch between shaded, wireframe and edge views, and read the panel underneath for the numbers that decide whether the file is usable — bounding box in millimetres, triangle and vertex counts, surface area, and the enclosed volume in millilitres when the mesh is closed. The watertight row counts edges used by only one triangle, which is the precise reason a slicer complains, and the same viewport opens OBJ, PLY, 3MF, GLB, glTF and FBX.

  • 100% free
  • No signup
  • No size limit
  • Nothing uploaded
  • Volume and watertight check
Convert to

Drag a file anywhere on this page to open it. F fits the view, W switches shading, G the grid, R spins it.

All 43 tools

43 tools, one engine behind them: eleven viewers, twenty-one mesh conversions and eleven that cross into CAD. Each page leads with a format and says what that format keeps and what it quietly drops — the unit, the assembly tree, the exact surface a hole used to be.

Viewers

11 tools

Mesh conversion

21 tools

CAD conversion

11 tools

How to open an STL file

Three steps, and you know the size, the triangle count and whether it will slice.

  1. Drop the .stl on the canvas

    Drag the file anywhere onto the page, or press Choose files. Both flavours of STL are read the same way — binary, which is what a CAD package writes by default, and ASCII, which is about five times larger for the same triangles. The parser runs in this tab, so the file costs you no upload time at all, whatever its size.

  2. Turn it, and switch how it is drawn

    Drag to orbit, scroll to zoom, right-drag to pan. Shaded is the default; Wireframe shows the triangulation itself, which is how you see whether a curve was tessellated finely enough to print smoothly; Both draws the shaded surface with its sharp edges picked out over it, and those edges are drawn at a 25-degree threshold so that a cylinder shows its silhouette rather than every strip in the fan.

  3. Read the panel under the viewport

    It reports the bounding box in millimetres, the triangle count, the surface area, and — when the mesh is closed — the volume in millilitres, which is the number a filament or resin estimate starts from. The Watertight row is the one to check before slicing: it counts how many edges are used by exactly one triangle, and any number above zero means a hole your slicer will have to guess how to close.

Technical specifications

FormatsSTL (binary and ASCII), OBJ, PLY, 3MF, GLB, glTF, FBX
File sizeNo fixed limit — 100 MB is roughly 2 million triangles in binary STL, and larger files are warned about rather than refused
Where the file is readIn this browser tab; no upload, no request, no server copy
MeasuredBounding box, triangle and vertex counts, surface area, enclosed volume
Mesh checksOpen edges, non-manifold edges, degenerate triangles, watertight verdict
UnitsNone stored in STL, OBJ or PLY — numbers shown as-is and labelled mm
RenderingWebGL, shaded / wireframe / edges, PNG snapshot of the current view

Frequently asked questions

Is my STL uploaded to a server?

No. The file is read with the browser's own FileReader and parsed by JavaScript in this tab, so it never crosses the network — you can disconnect after the page loads and the viewer still works. That is not a policy claim you have to take on trust: open your browser's network panel, drop a file, and there is no request. It also means nothing is stored, so there is no link to share and nothing to delete afterwards.

What does “watertight” mean, and why does my model fail it?

A watertight mesh is one where every edge is shared by exactly two triangles, so the surface closes on itself with no gaps — that is what lets a slicer decide what is inside the part and what is outside. This page counts edge usage directly: an edge used once is a hole, an edge used three or more times is two surfaces meeting where they should not. The usual causes are a boolean operation that left a sliver, a model exported from a sketch that was never closed, or a scan with a missing patch underneath. Small holes are often repaired silently by the slicer; a large one is why a print comes out hollow or with a missing wall.

Why does the volume say “not a closed solid”?

Because volume is only defined for a closed surface, and reporting a number for an open one would be a fiction. The calculation sums the signed volume of the tetrahedron between each triangle and the origin — outside contributions cancel, and what remains is what the surface encloses. That cancellation only works if the surface has no holes, so when the edge count says the mesh is open the row says so instead of printing a plausible-looking figure. Repair the mesh first, then the millilitres are trustworthy.

Are the millimetres real?

They are the numbers the file stores, labelled mm because that is the unit every slicer assumes. STL has no unit field at all — it is bare floating-point coordinates, and the same file means millimetres to a slicer and inches to a machinist who was told so. If a part reads 25.4 times too small, someone exported in inches; if it reads 1000 times too small, it came through a glTF pipeline, where the convention is metres.

Why is the vertex count lower than what my modeller shows?

Because STL stores every triangle as three independent corners with nothing shared, so a cube leaves CAD as 12 triangles and 36 separate points. This page welds points that land on the same position — within a millionth of the model's diagonal — and reports both numbers: the welded count is what a modeller would call vertices, and the stored count is what the file physically contains. The gap between them is roughly a factor of six on a typical solid, and it is the reason STL files are as large as they are.

What is the largest file this will open?

As large as this tab can hold, and nothing here decides that for you. Past 100 MB — roughly 2 million triangles in binary STL — you get a warning describing what the file will cost before anything is read, and then it opens if you say so. The reason for the warning rather than a refusal: the file, the parsed triangle list and the GPU buffers all live in this tab at once, and a tab that exhausts its memory does not degrade gracefully, it disappears. Around a million triangles the parse takes a couple of seconds and orbiting stays smooth on integrated graphics; past that, expect the first frame to be slow. Above about two gigabytes no browser will allocate the buffer at all, whatever the machine has.

Can I convert the file here, or fix the holes?

Not yet on this page — right now it opens, measures and checks. Conversion between mesh formats and STL repair are the next things being built on this site, and the honest position until then is that this is a viewer with instruments, not a workshop. What it does give you is the reason to reach for a repair tool at all: the exact count of open and non-manifold edges, rather than a slicer's vague warning.

About STL and what it does not tell you

STL is the oldest format still in daily use in 3D printing, and its longevity comes from being almost nothing: a list of triangles, each stored as three corners and a normal vector, with no units, no colour, no materials and no memory of which triangles once belonged to the same flat face or the same cylinder. That emptiness is why every program can write it and why so little survives the trip. A part that left CAD as twelve faces arrives as several thousand triangles, and the information that they were twelve faces is gone for good.

Two consequences follow, and both show up in the panel under the viewport. The first is that vertices are not shared: the same corner is written once per triangle, which is why a mesh reports six times more stored points than welded ones and why STL files are so much larger than the geometry warrants. The second is that nothing enforces the surface being closed. Triangles are independent, so a file with a missing patch is as valid as one without — the only way to know is to count how often each edge is used, which is the check this page runs on every file. If you need the format that fixed both problems, 3MF carries units, colour and a build plate, and slicers have been moving to it for years.

The volume figure deserves one caution. It is exact arithmetic over the triangles, not an estimate, and on a closed mesh it agrees with what a slicer reports to within rounding — but it is the volume of the shape as tessellated, so a cylinder approximated by 32 flat strips is very slightly smaller than the true cylinder it stands for. That gap is the price of the format itself, not of the measurement, and it is the same reason converting a mesh back into real CAD geometry is a hard problem rather than a file rename. If you arrived here from a different format and just want to know what it holds, the format-agnostic viewer lists what each one keeps.

Where your model is read

Every number on this page is worked out by JavaScript running in the tab you are reading it in. The model you open is read straight off your own disk — it is never uploaded, logged or kept, which is also why these tools carry on working after you disconnect from the network.

One clause specific to this page: the model is held in the tab's memory for as long as it is on screen, which is also the only thing that limits how large it can be. Closing or reloading the tab discards it — there is no copy anywhere else, and no history of what you opened.