3D Model Viewer
Open a 3D model and look at it from every side, right in your browser. One viewer reads STL, OBJ with its MTL materials and textures, GLB and glTF with their textures and animations, PLY (including point clouds and vertex colours) and 3MF. Turn it, zoom in, switch to wireframe, show a floor grid and the bounding box, and read the size in millimetres and inches. Play animations and move morph targets, hide parts, choose flat or smooth shading, then save the view as a PNG. If a model needs files you did not add, such as a .bin or a texture, the viewer names each one. Nothing is uploaded.
100% private — everything runs in your browser. Everything runs in your browser; your model files are never uploaded.
File details
Parts (show or hide)
Textures and images
Files the model refers to
Checks
Extensions and cameras
File size breakdown
glTF JSON (tree)
View
Model
Screenshot
Animation
Morph targets
Runs in your browser: your files are read on your device and never uploaded, and web addresses inside a model are not fetched. The 3D engine (three.js) loads from the jsDelivr CDN. You may use what you make here, including commercially, with no credit needed. The rights in your own models stay as they were.
How to view a 3D model online
- Drop a model on the box (with its .mtl, .bin and texture files if it has them), or click Try a sample.
- Drag to orbit, scroll to zoom, or pick a view: corner, front, top and so on.
- Check the size under the view. If it looks wrong, change Units in the file.
- Turn on wireframe, grid or bounding box, play animations, then click Save view as PNG.
What you can use it for
- Check a 3D print file before sending it to a printer or a print service
- Look at a model you downloaded before you open it in a 3D program
- Show a client a 3D model and save a picture for a quote or a slide
- See whether an OBJ’s textures and materials come through
- Measure the overall size of a part in mm or inches
- Open a point cloud from a 3D scanner
Formats it opens
| Format | What you see | Units in the file |
|---|---|---|
| STL (binary or ASCII) | Shape only (STL has no colours or textures) | None stored: read as millimetres, change Units if needed |
| OBJ + MTL + textures | Objects, materials and image textures when the .mtl and images are added with the .obj | None stored: read as millimetres |
| GLB (binary glTF) | Everything inside: materials, textures, animations, morph targets, cameras | Metres (the glTF standard) |
| glTF + .bin + textures | The same as GLB when its .bin and images are added (or the folder is opened) | Metres (the glTF standard) |
| PLY (ASCII or binary) | Triangles and polygons, vertex colours; a file with no faces is shown as a point cloud | None stored: read as millimetres |
| 3MF | The printed parts, as a 3D printing slicer reads them | Stored in the file and converted to mm |
Add a model together with the files it uses (select them all at once, or use Open a folder). The viewer lists every file the model refers to and says which are missing, rather than failing silently.
What you can do with a model
| Control | What it does |
|---|---|
| Orbit, zoom, pan | Drag to turn, scroll or pinch to zoom, right-drag (or two fingers) to pan |
| Look from | Corner, front, back, left, right, top or bottom view |
| Wireframe, floor grid, bounding box | See the triangles, the size against a grid (square size shown), and the box that holds the model |
| Units and up axis | Read the file in mm, cm, m, inches or feet; stand the model on Y or Z |
| Shading normals | As in the file, flat (faceted) or smooth |
| Animation and morph targets | Pick a clip, play, pause, change speed, scrub; move each morph target |
| Parts | Show or hide each object or group |
| Save view as PNG | Downloads the current view at the view size or twice that, with a transparent background if you choose it |
What the sample model contains
| Item | In the sample |
|---|---|
| Meshes | 2 |
| Triangles | 24 |
| Vertices (as stored) | 48 |
| Materials | 2 |
| Textures | 1 |
| Animations | Spin (2 s, rotation); Stretch (1.5 s, weights) |
| Morph targets | CrateMesh: Stretch |
| Cameras | Front camera (perspective) |
| Size | 40 × 22 × 40 mm (stored in metres) |
Computed by the viewer’s own code from the file behind Try a sample: a checker-textured crate on a red base, with a spin animation and a stretch morph target. It passes every check in the Checks list.
Units: why a model can look the wrong size
| Units in the file | 1 unit = |
|---|---|
| Millimetres | 1 mm |
| Centimetres | 10 mm |
| Metres | 1000 mm |
| Inches | 25.4 mm |
| Feet | 304.8 mm |
STL, OBJ and PLY files store plain numbers with no unit, so the viewer reads them as millimetres (most 3D printing models use mm) and tells you when that gives an unlikely size. glTF and GLB are always in metres, as the glTF 2.0 specification says, and Y is up.
Files it does not open (and what to do)
| File | What to do |
|---|---|
| STEP (.step, .stp) and IGES | These are CAD solids, not meshes: open them in the STEP Viewer |
| FBX | Export as GLB or OBJ from the program that made it |
| Blender project (.blend) | In Blender, use File > Export > glTF 2.0 and open the GLB |
| USDZ, Collada (.dae), 3DS | Export as GLB or OBJ |
| glTF with KTX2 / Basis textures (KHR_texture_basisu) | Not supported here yet: the file details and checks are still listed |
Draco and meshopt compressed GLB files do open: their decoders load from the same pinned three.js package as the viewer.
Next steps
For 3D printing checks (volume, watertight, open edges, cross-section) use the STL viewer; for CAD parts, the STEP viewer. Convert a model for printing with GLB to STL, OBJ to STL or 3MF to STL, make a flat technical drawing with Orthographic Drawing, or price a print with the 3D Print Cost Calculator.
Sources
Sources: Khronos Group: glTF 2.0 Specification (coordinate system and units, GLB file format, accessor bounds); Library of Congress: STL (STereoLithography) File Format Family; Library of Congress: Wavefront OBJ File Format; Library of Congress: Polygon File Format (PLY) Family.
More free tools
Working with 3D models?
View, measure and convert 3D files with free maker tools that run privately in your browser, with no sign-up and no watermark.
Frequently asked questions
Which 3D file formats does it open?
STL (binary and ASCII), OBJ with MTL materials and textures, GLB, glTF with its .bin and textures, PLY (ASCII and binary, including point clouds) and 3MF. Draco and meshopt compressed GLB files open too.
Can it open FBX, STEP or Blender files?
Not here. STEP and IGES are CAD solids: open them in the STEP Viewer. Export FBX and Blender scenes as GLB (in Blender: File > Export > glTF 2.0) and open the GLB here.
How do I open an OBJ with its textures?
Select the .obj, its .mtl and the image files together, or click Open a folder and pick the folder they are in. The viewer matches the file names the .mtl asks for and lists any that are missing.
How big is my model?
The size of the box around the model is shown in millimetres and inches under the view. STL, OBJ and PLY files have no units, so the viewer reads them as millimetres; change Units in the file if the model was made in inches or metres.
Can I save a picture of the model?
Yes. Turn the model to the view you want and click Save view as PNG. Choose Twice the view for a sharper image, and the Transparent background for a cut-out PNG.
Why is my model grey or missing textures?
The textures are separate image files that were not added. Select the model and its images together, or use Open a folder; the list of files the model refers to shows each missing name exactly as the model asks for it.
Does it play animations?
Yes, for GLB and glTF files. Pick a clip, play or pause it, change the speed or drag to any point. Morph targets get their own sliders.
Is it free?
Yes. There is no sign-up, no watermark, no file limit and no size limit beyond what your device can hold.
Is my model uploaded?
No. The files are read by JavaScript in your browser and never leave your device. Only the 3D engine itself (three.js) is downloaded from a public CDN. If a glTF points to a texture on a web address, the viewer does not fetch it: it lists it and shows grey instead.