Skip to main content

STL viewer online

Interactive 3D model viewer for STL and OBJ files with lighting, materials, and PNG export.

No watermarkFree & unlimited

Drop a .stl or .obj file here or browse

Supports STL (binary/ASCII) and OBJ formats

All processing happens in your browser. No data is sent to any server.

Before a print you usually want two things from an STL: does it look like the part I meant, and how big is it. This page answers both without a slicer. It parses binary STL, ASCII STL and OBJ with its own reader, then draws the mesh on a 2D canvas using a painter-algorithm depth sort and flat shading from a directional light, so there is no WebGL requirement and no library download. You get orbit, pan and zoom, three render modes, eight model colours, five lighting presets, a grid floor, an axis gizmo, a dimensions readout, and an info panel with triangle count, vertex count, unique vertex count and the bounding box in file units.

Key facts about STL viewer online

Key facts about STL viewer online
Formats readBinary STL, ASCII STL and Wavefront OBJ. Format is detected from the extension and, for STL, from whether the 80-byte header starts with the word solid
Binary STL parsingTriangle count is read from the 4 bytes at offset 80, then each 50-byte record gives a normal and three vertices as little-endian floats
ASCII fallbackA file whose header says solid but yields no triangles as ASCII is retried as binary — the common case of a binary STL written with a text-looking header
OBJ supportVertices and faces only; faces with more than three vertices are fanned into triangles. Materials, textures, normals and groups are ignored
RendererCanvas 2D. Triangles are projected with a perspective divide, sorted back to front and filled — no WebGL, no three.js, no shader compilation
ShadingFlat per-face: the absolute dot product of the face normal and the light direction, plus the preset ambient term. No shadows, no specular highlight
StatisticsTriangle count, total vertices, unique vertices (deduplicated to six decimal places) and bounding-box width, height and depth
UnitsSTL and OBJ store no unit. Dimensions are reported in file units — millimetres for most printers, inches for some CAD exports
Render modesSolid, wireframe, or solid with wireframe overlay
AppearanceEight model colours, six backgrounds including a gradient, five light presets with ambient levels from 0.05 to 0.3
ExportPNG screenshot of the canvas exactly as displayed, named after the source model

What happens to your file

The model is read with arrayBuffer or as text and parsed by JavaScript running in this tab; every triangle is projected and drawn on a canvas in the same page. There is no upload, no render farm and no server-side copy — the geometry of a part you are about to print or quote never reaches anyone else. The PNG screenshot is produced by the canvas toDataURL call and saved locally by your browser. This is the difference that matters for engineering files: a prototype mesh is often the most sensitive thing in a project, and here it stays on your machine.

About this tool

  1. 1

    Drop the .stl or .obj file

    Drag the model onto the page or browse for it. Binary and ASCII STL are both detected automatically, so you do not need to know which one your CAD tool wrote.

  2. 2

    Orbit to check the shape

    Drag to rotate, scroll to zoom, switch to pan to reposition. The grid floor sits at the lowest point of the model, which makes it easy to see whether the part is oriented the way the printer will place it.

  3. 3

    Read the info panel

    Triangle count tells you how heavy the mesh is; width, height and depth in file units tell you whether it fits the build plate. Unique vertices next to total vertices hints at how well the mesh is welded.

  4. 4

    Switch render mode when something looks wrong

    Wireframe shows the actual topology, and solid with wireframe overlay is the fastest way to spot an area with wildly uneven triangles.

  5. 5

    Save a PNG

    The screenshot button exports the canvas as it looks — colour, lighting, background and grid included — named after the source file.

Specs & compatibility
Accepted extensions.stl and .obj
STL variantsBinary (50 bytes per triangle) and ASCII (facet normal / vertex blocks)
Colour in fileNot read. STL has no standard colour, and OBJ materials are ignored — you choose the display colour
Graphics requirementCanvas 2D only; works where WebGL is blocked or unavailable
Practical sizeEvery triangle is projected and sorted each frame in JavaScript, so meshes of a few hundred thousand triangles stay interactive and multi-million-triangle scans do not
InteractionDrag to orbit, drag in pan mode to pan, wheel to zoom, reset view button, fullscreen
ScreenshotPNG at the on-screen canvas size, including background and grid
Browser supportChrome, Edge, Firefox and Safari, desktop and mobile
Cost / accountFree, unlimited models, no signup
  • If the model appears a thousand times too large or small, the file is in different units: STL carries no unit, so a 25-unit part is 25 mm in one tool and 25 inches in another.
  • Unique vertices far below total vertices means a well-welded mesh; a number close to three times the triangle count means every triangle has its own unshared corners.
  • Use the Dramatic light preset with its 0.05 ambient to make surface facets and stair-stepping visible before you print.
  • Wireframe over solid is the quickest visual check for a mesh that was decimated badly by an export.
  • The gradient background photographs better for a README or a quote than the plain white one.
  • Turn the grid off before taking a screenshot for a customer — it reads as a modelling artefact rather than a product image.
  • The bounding box is the whole model including any stray far-away vertex, so a suspiciously large dimension usually means one loose triangle rather than a big part.
  • Binary STL, ASCII STL and OBJ
  • Orbit, pan and zoom
  • Solid, wireframe and combined modes
  • Eight model colours and six backgrounds
  • Five lighting presets
  • Grid floor and axis gizmo
  • Triangle, vertex and bounding-box statistics
  • PNG screenshot export
  • Checking a downloaded STL is the part you expected before loading it into a slicer.
  • Reading the bounding box of a model to see whether it fits your build plate.
  • Opening an STL on a machine with no CAD software and no WebGL support.
  • Producing a clean PNG of a model for a quote, a README or a listing.
  • Spotting a badly decimated or non-manifold-looking area using the wireframe overlay.
  • Reviewing a client mesh without uploading proprietary geometry to a viewer service.
No. The file is read locally, parsed in JavaScript and drawn on a canvas inside this browser tab. There is no upload endpoint, no rendering service and no stored copy. For engineering files that matters: a mesh is often the actual product, and posting it to a viewer site means handing over the geometry. The PNG screenshot is generated from the canvas in the same tab and saved by your browser, so even the render never crosses the network.
Both, and the detection is automatic. A binary STL stores a triangle count at byte 80 followed by fixed 50-byte records; an ASCII STL is readable text starting with the word solid. Because some exporters write a binary file whose header text also begins with solid, a file that looks ASCII but yields no triangles is retried as binary. You should never need to know or convert which variant your CAD tool produced.
File units, whatever those are. Neither STL nor OBJ records a unit anywhere in the file, which is the single most common source of scaling mistakes in 3D printing. Most slicers and most printers treat one unit as one millimetre, so a reported width of 62.5 is usually 62.5 mm; some CAD exports use inches. Compare the number to a dimension you know from the original design before scaling anything.
STL has no standard colour channel at all — it stores triangles and normals, nothing else — and the OBJ reader here takes only vertices and faces, ignoring the .mtl material file that carries colours and textures. So display colour is a choice you make from the eight presets, not a property of the model. If colour is essential to your review, use a format that carries it, such as 3MF or glTF, in a tool that reads materials.
There is no fixed cap, but the renderer projects and depth-sorts every triangle in JavaScript on each frame, so the cost grows directly with triangle count. Printable parts of a few hundred thousand triangles orbit smoothly on a normal laptop; multi-million-triangle 3D scans will load and display but interact sluggishly. Decimating a scan in your mesh tool before review is the practical fix, and it is what you would do before printing anyway.
No, and that is deliberate. The whole viewer runs on the 2D canvas API: triangles are projected with a perspective divide, sorted back to front and filled with a flat shade computed from the face normal and the chosen light direction. That means it works on locked-down machines, in browsers where WebGL is disabled by policy, and on older hardware, at the cost of shadows, specular highlights and very large meshes.
View all

Part of File viewers that open the file in your browser

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy