3D printing · No upload

STL file viewer

Drop an STL and see it: the triangle count, the bounding box and the surface area read straight out of the file, with a rotatable preview drawn by your browser's own WebGL. Binary and ASCII STL both open, and so does 3MF. Nothing is uploaded, nothing is downloaded — not even a library — and the network meter below proves the zero live.

Statusidle Files File Format Triangles Bounding box (file units) Units Network since file read

How this viewer works

When you choose a file, the browser's File API hands this page its bytes in memory — no transfer happens, because the file is already on your machine — and everything after that is arithmetic in this tab. A binary STL may begin with the word “solid”, so the format is decided by the file's arithmetic — 84 bytes plus 50 per triangle — not by its first word; a file whose size fits that sum is read as binary, one that reads as text and carries facet records is read as ASCII, and anything else is refused rather than guessed at. The triangles come out as bare coordinates, and the readout is measured from them: how many there are, the axis-aligned bounding box, the surface area as the sum of half each cross product, how many triangles have zero area, and whether the exporter stored real normals or wrote zeros. A 3MF goes through the same measuring step after its archive is unpacked.

The picture is drawn by your browser, not by a library. The geometry is uploaded un-indexed, so every triangle carries three copies of its own computed face normal — that is what gives flat shading on plain WebGL with no extension requested — and the whole shader is about twenty lines of first-party GLSL lit by one key light, a fill and a small ambient, in the site's own colour tokens. The three lines from the origin are the file's own axes, with Z picked out because most slicers treat it as up; that is the fastest way to see that a model came out of its exporter lying on its side. The opening view is derived from the measured bounding box rather than from anything you did, so the same file always opens the same way, and Reset view puts it back. There is no animation loop when nothing is happening: the canvas is redrawn only when you drag, scroll or press a key.

The honest limits. STL files carry no units: the numbers in the file are bare coordinates, so this page reports the bounding box in the file's own units and never in millimetres. Most slicers read an STL as millimetres, which is a convention of the software, not a fact in the file. This page also does not check whether the mesh is watertight, whether it is manifold, or whether it is printable, and it prints no volume, because a volume figure means nothing on a mesh whose closure was never tested. Files above 256 MB are refused before anything is read, and meshes above 500,000 triangles are refused by name with both numbers, because the whole mesh has to fit in your device's memory as raw floats. A file that is neither encoding gets the refusal “this file is neither a binary STL nor an ASCII STL” rather than a half-parsed shape. And if your browser gives no WebGL context the note under the canvas says so in those words — the preview goes dark, every measurement below it still comes from your file, and the report still downloads.

Viewing a 3MF file

A 3MF is a ZIP archive with an XML model inside it, and this page opens one the same way a slicer does: the central directory is read, the model part is located through the archive's own relationships, the part is decompressed by your browser and checked against the checksum the archive recorded for it, and each build item's placement is applied before anything is measured. The interesting difference is the Units row. An STL reads “none declared (STL)”, because the format has nowhere to put a unit; the same row on a 3MF names what the file declares — inch, centimetre, micron, whatever the exporter wrote — because 3MF has a field for it. That contrast is the whole reason both formats open here. If you need the 3MF turned into an STL, the 3MF to STL converter writes one and prints the scale factor it used.

Frequently asked questions

Is my model uploaded anywhere?
No. Your browser opens the file with its File API and every byte after that is read by JavaScript running inside this tab. Nothing is vendored on this page either: the STL parser, the 3MF reader and the preview are written here, and the drawing is done by your browser's own WebGL. That means the readout's network meter has no exception to disclose — unlike the converter pages there is no one-time library download to footnote, so its zero is the whole story. Switch your wifi off and the page still opens your model, because nothing about reading it ever needed a connection.
What units are these numbers in?
For an STL, none — and that is a fact about the format, not a gap in this page. STL files carry no units: the numbers in the file are bare coordinates, so this page reports the bounding box in the file's own units and never in millimetres. Most slicers read an STL as millimetres, which is a convention of the software, not a fact in the file. The Units row says “none declared (STL)” for exactly that reason. Open a 3MF instead and the same row names the unit the file declares, because 3MF has a field for it and STL does not.
Why does it say my file is neither a binary nor an ASCII STL?
Because the arithmetic did not add up and guessing would be worse. A binary STL may begin with the word “solid”, so the format is decided by the file's arithmetic — 84 bytes plus 50 per triangle — not by its first word. When neither reading fits, the page says “this file is neither a binary STL nor an ASCII STL”, and when the header's triangle count was nearly right it prints the sum it tried. Other refusals name themselves too: a facet with the wrong number of vertices, coordinates that are not numbers, a file declaring no triangles at all, and anything past the caps below. Bytes left over after the last triangle are not a refusal — they are read, ignored and reported.
Can it tell me whether my model will print?
No, and it will not pretend to. This page does not check whether the mesh is watertight, whether it is manifold, or whether it is printable — those are different questions and a repair tool is a different product. It also deliberately prints no volume: a volume figure is only meaningful for a closed mesh, closure is not tested here, so a number would be an over-claim. What you get is what was actually read from the file: the triangle count, the bounding box, the surface area, how many triangles have zero area, and whether the exporter wrote real normals or zeros.
What else can it open?
STL in both encodings, and 3MF — the archive format most slicers now export, which this page unpacks and reads with your browser's own decompression. OBJ, STEP, AMF and GLTF are refused by name rather than attempted: they are not parsed here and nothing on this page implies otherwise. If you need a 3MF turned into an STL that any tool will open, the converter next door does that and prints the scale factor it used.

Related tools