Free online 3DM converter. Convert Rhino/OpenNURBS .3dm files to STL, GLB, glTF, OBJ, PLY in your browser — processing happens locally, no watermark.
.3dm model. The file is read directly in the page with rhino3dm — the official openNURBS toolkit from Robert McNeel & Associates, compiled to WebAssembly — and rendered in an interactive 3D preview so you can confirm the geometry loaded before exporting..3dm stores exact NURBS surfaces and breps, so converting tessellates those curved surfaces into a triangle mesh — the preview reflects how the exported mesh will look.A .3dm file is the native format of Rhinoceros 3D (Rhino), the NURBS modeler from Robert McNeel & Associates. It is built on openNURBS, the open-source toolkit McNeel publishes and maintains so other applications can read and write .3dm files — more than 400 programs exchange geometry through it. Unlike a triangle mesh, a .3dm stores exact geometry: NURBS curves and surfaces, breps (boundary-representation polysurfaces), extrusions, SubD objects, and meshes, along with scene data such as layers. That precision is ideal inside a Rhino workflow, but it is exactly what makes the file hard to open anywhere else.
That is why people convert it. A 3D printer, a game engine, a web viewer, or a colleague working in Blender generally cannot read a raw .3dm. Converting turns Rhino's exact geometry into a triangle mesh the rest of the 3D world understands:
.glb bundles the mesh into a single portable file for <model-viewer>, WebXR, Unity, and Three.js.This is a one-way conversion. A .3dm holds exact NURBS and brep geometry, and a mesh is an approximation, so there is no meaningful "mesh back to 3DM" export — going from triangles back to true parametric surfaces requires CAD surface-reconstruction inside a modeler like Rhino, not a format swap. This hub reads .3dm and writes mesh formats only.
| Format | Type | Geometry | Materials / color | Best for |
|---|---|---|---|---|
| 3DM (.3dm) | Exact NURBS + brep (openNURBS) | Precise curves, surfaces, SubD | Layers + display color | Native Rhino geometry |
| STL (.stl) | Triangle mesh | Tessellated approximation | None | 3D printing, slicers |
| OBJ (.obj) | Text mesh (+ optional .mtl) | Tessellated approximation | External .mtl + images |
Modeling apps, broad compatibility |
| GLB / glTF | glTF 2.0 (binary / JSON) | Tessellated approximation | Embedded PBR + textures | Web, AR, game engines |
| PLY (.ply) | Polygon mesh | Tessellated approximation | Per-vertex color | Scans, point clouds, research |
| 3MF (.3mf) | Zipped XML print package | Tessellated approximation | Embedded color + units | Modern color 3D printing |
| Rhino data | Carries into the mesh? | What actually happens |
|---|---|---|
| NURBS surfaces and polysurfaces (breps) | Yes, approximated | Tessellated into triangles — the shape matches, curved faces become facets |
| SubD objects | Yes, approximated | Evaluated to a triangle mesh like any other surface |
| Meshes already inside the file | Yes | Passed straight through as geometry; no re-tessellation needed |
| Exact surface equations | No | Only triangles remain, so nothing downstream can recover the original NURBS |
| Curves, polylines, and point objects | No | Mesh formats describe surfaces; pure wireframe and point objects have nothing to become |
| Dimensions, text, and annotations | No | No triangle equivalent, so they drop out of every mesh target |
| Object display color | Depends on the target | GLB, glTF, 3MF, and PLY can carry color; STL cannot |
| Rhino materials and render appearance | Not reliably | Rhino's material model doesn't map cleanly onto glTF's PBR set — expect to reapply materials downstream |
| Layers and object names | Depends on the target | glTF/GLB have a scene graph and OBJ has named objects; STL is one flat mesh |
| Units | Depends on the target | 3MF records units explicitly, glTF is defined in meters, STL is unitless and slicers assume millimeters |
No. This converter runs entirely in your browser using rhino3dm — the openNURBS toolkit from Robert McNeel & Associates, compiled to WebAssembly — so the same code family that defines the .3dm format reads it on your own device. Your file is parsed, tessellated, and exported locally. The library downloads once the first time you open the page and then runs in the browser, which means no upload wait, no account, and nothing for us to store. That matters for proprietary or unreleased designs.
Because the exact geometry is gone once a model is tessellated. A .3dm stores precise NURBS surfaces and breps, while STL, OBJ, GLB, PLY, and 3MF store flat triangles with no surface equations. Going from a triangle mesh back to true parametric Rhino geometry is reverse-engineering — fitting surfaces to the mesh — which Rhino and similar tools do manually or with auto-surfacing, not as a one-click conversion. This hub is import-only by design: 3DM in, mesh out.
No. The conversion uses the open-source rhino3dm/openNURBS library in your browser, so you do not need Rhinoceros or any McNeel software installed to read a .3dm and export a mesh. You only need Rhino if you want to keep editing the original NURBS geometry — for simply viewing a model or handing it to a printer, game engine, or web page as a mesh, this converter is enough.
Only partially, and you should not rely on it. The conversion tessellates geometry into a triangle mesh, which is the part that always carries over. Rich Rhino scene data — full material definitions, render appearances, and detailed layer structure — does not map cleanly onto every mesh format, so treat the output as geometry-first. If you need color or materials to travel with the model, target GLB, glTF, or 3MF, which can store them, but be aware that appearance fidelity from a .3dm is limited and may need to be reapplied in your destination tool.
Some, and that is unavoidable. Tessellation replaces the .3dm's exact curved surfaces with a finite number of flat triangles, so a perfectly round hole becomes a many-sided polygon. A denser tessellation hugs the true surface more closely and produces a larger file; a coarser one is lighter but shows faceting on curves. For 3D printing and visualization this is normally invisible at practical resolutions, but anything depending on exact dimensions should stay in the original .3dm (or a CAD exchange format like STEP).
STL for the widest slicer support, or 3MF if you want color, units, and print metadata to ride along with the model. Both discard the exact Rhino surfaces and keep just the printable triangle mesh, which is all a slicer needs. If your .3dm has curved surfaces, confirm in the preview that round features look smooth rather than faceted before you export — that is the tessellation density at work.
No, and this catches people who model in Rhino with a lot of construction geometry on screen. STL, OBJ, GLB, glTF, PLY, and 3MF all describe surfaces built from triangles. A curve, a polyline, a point object, a dimension, or a text annotation has no surface at all, so there is nothing for the converter to tessellate and those objects simply do not appear in the exported mesh. If a curve needs to survive the trip, give it thickness inside Rhino first — pipe it, extrude it, or sweep a profile along it — so it becomes a real surface before you convert. The same applies to open surfaces you intend to print: thicken them into solids first, because a zero-thickness face has no volume for a slicer to fill.
Because you are trading equations for triangles. A .3dm stores a curved surface as a compact mathematical definition — a handful of control points and knot values can describe an entire fillet exactly. Mesh formats have no such shorthand: every triangle is written out as explicit vertex coordinates, and a curve that reads as smooth needs a great many of them. Denser tessellation buys a smoother result and costs file size, which is why a small Rhino file can produce an STL many times its size. Text-based targets inflate this further than binary ones, so OBJ and ASCII STL land noticeably larger than binary STL or GLB for identical geometry.