What is the 3DM file format?
.3dm is a 3D model format developed by Robert McNeel & Associates, used natively by Rhinoceros (Rhino) 3D software. A .3dm file stores 3D model data - surfaces, curves, points, and meshes - as well as metadata, layer definitions, and render attributes, all inside the openNURBS binary container.
.3dm is very versatile: it may be used to store and share 3D model data among many graphical programs and CAD, CAE, or CAM software. For that purpose, .3dm uses NURBS and polygon mesh representations. This allows users to exchange 3D geometry data among various devices and programs. .3dm files are chiefly used in manufacturing, production, and for interactive animations and games.
McNeel distributes the openNURBS toolkit (rhino3dm) as open-source C++, .NET, Python, and JavaScript libraries, enabling any app to read and write .3dm without a Rhino licence. Common companion formats include STEP and STL.
Security & safety
RISK: LOWA .3dm is geometry data, not an executable, so opening one in Rhino or a viewer is safe. Practical notes: .3dm files from complex models can be large; Rhino keeps a .3dmbak backup alongside the file. As with any download, get models from reputable libraries and beware disguised double extensions (model.3dm.exe).
Format details
in a nutshellPrograms that open 3DM files
Technical details
deep spec| Developer | Robert McNeel & Associates |
| MIME type | model/vnd.rhino.3dm |
| File structure | Binary openNURBS chunk stream; file opens with the ASCII string "3D Geometry File Format" at byte offset 0, followed by typed binary chunks |
| Primary geometry | NURBS surfaces, trimmed surfaces, and NURBS curves - exact mathematical representation with no tessellation loss |
| Secondary geometry | Polygon meshes, point clouds, and SubD (subdivision surface) objects introduced in Rhino 7 |
| Coordinate system | Right-handed, Z-up; unit system and absolute model tolerance stored per file |
| Stored metadata | Named layers, render materials, embedded bitmaps, camera views, lights, and per-object plug-in user data |
| Block instances | Named block definitions with unlimited instances, enabling reusable instanced geometry within a single .3dm file |
| Annotation objects | Linear and radial dimensions, text objects, leaders, hatches, and dot annotations stored as first-class objects |
| Format versioning | Integer version number in the file header (e.g., 50 for Rhino 5, 60 for Rhino 6, 80 for Rhino 8); newer Rhino reads older file versions |
| Open toolkit | openNURBS / rhino3dm open-source SDK (C++, .NET, Python, JavaScript/WebAssembly) for third-party read/write of .3dm |
| Cross-platform support | rhino3dm library available for Windows, macOS, Linux, iOS, and Android; WebAssembly build enables in-browser use |
| Interoperability | Rhino imports and exports STEP, IGES, OBJ, STL, DWG, SKP, and others; .3dm is the native lossless round-trip container |
| Compression | No built-in compression; chunks store raw binary data; automatic backup copies are saved with the .3dmbak extension |
| Released | 1990s (Rhinoceros); openNURBS file toolkit released publicly to let any app read/write .3dm |
| Open standard | Yes · royalty-free |
| Specification | github.com |
3DM conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about 3DM files.