What is an .x3d file? X3D, VRML, and opening it on a Mac
X3D (Extensible 3D) is the Web3D Consortium's open ISO standard for 3D scenes and the successor to VRML from the 1990s. An .x3d file is XML describing shapes, materials, lights, viewpoints and animation. The same scene can be written in several ways, though, and not every program reads them all. macOS doesn't open X3D by itself.
At a glance
- Extension
- .x3d, .x3dv, .x3db, .x3dz
- Type
- 3D scene
- Created by
- Web3D Consortium
- Since
- 2004
- Standard
- ISO/IEC 19775-1:2023
- Specification
- Web3D X3D 4.0
- macOS without an app
- Doesn't know it: no preview, no thumbnail
Facts checked November 4, 2026
XML you can read
An .x3d file is readable text. This is a small scene I wrote for testing: a red square made of two triangles, with a blue cube next to it.
<?xml version="1.0" encoding="UTF-8"?>
<X3D profile="Interchange" version="3.3">
<Scene>
<Shape>
<Appearance><Material diffuseColor="1 0 0"/></Appearance>
<IndexedFaceSet coordIndex="0 1 2 -1 0 2 3 -1">
<Coordinate point="0 0 0 1 0 0 1 1 0 0 1 0"/>
</IndexedFaceSet>
</Shape>
<Transform translation="3 0 0">
<Shape><Appearance><Material diffuseColor="0 0 1"/></Appearance><Box size="1 1 1"/></Shape>
</Transform>
</Scene>
</X3D>profile says which set of features the scene needs. Interchange is enough for exchanging geometry; other profiles include Interactive, Immersive, Full and CADInterchange. version is the X3D version. Each Shape pairs an appearance (Appearance, here a colour in Material) with geometry. The first shape is a mesh written as points (Coordinate) and vertex numbers, where -1 ends a face. The second is a Box primitive: the cube isn't written as triangles – the program reading the file builds it. Transform moves it 3 units to the right.
One scene, several encodings
X3D has several encodings. The scene stays the same; only the way it's written changes:
| Extension | Encoding | How to recognise it |
|---|---|---|
| .x3d | XML | starts with <?xml and <X3D |
| .x3dv | Classic VRML, text that looks like VRML | first line #X3D V3.3 utf8 |
| .x3db | compressed binary | not readable text |
| .x3dj | JSON | starts with { |
| .x3dz, .x3dvz | the same, packed with gzip | file says gzip compressed data |
| .wrl | VRML97, X3D's predecessor | first line #VRML V2.0 utf8 |
Terminal tells you which one you have:
file model.x3dFor my test files, macOS answered XML 1.0 document text for XML, X3D (Extensible 3D) model, VRML format for Classic VRML and gzip compressed data for the packed one.
The encoding matters because programs often read only some of them. My app, for one, reads only XML. Unpack a packed file first:
gzip -dc model.x3dz > model.x3dUnits: metres, with Y up
According to the X3D specification, the base unit of length is the metre. The coordinate system is right-handed, and the default view looks along the Z axis towards the origin, with X to the right and Y up. Since version 3.3, a file can change the unit with a UNIT statement, in XML like this:
<head><unit category="length" name="millimetre" conversionFactor="0.001"/></head>Not every program reads it. Assimp, the library my app reads X3D with, ignored it in my test: a cube with 10-unit sides in millimetres stayed 10. So check the size after opening and after converting.
X3D and VRML
VRML (Virtual Reality Modeling Language) became the ISO/IEC 14772-1 standard in 1997, and its files use the .wrl extension. Web3D now describes X3D as "4th-generation VRML" and a direct superset of it: anything you can write in VRML you can write in X3D, and the Classic VRML encoding looks almost the same. It doesn't work the other way round. According to a discussion on the Web3D mailing list, converting X3D to VRML can lose part of the scene, because the older VRML can't express many X3D features. Scenes that fit within the Immersive profile convert without trouble, according to Web3D.
What X3D is used for
- 3D right in a web page, with no plug-in, through the X3DOM and X_ITE libraries.
- Scientific and engineering visualisation, including medicine and volume data (the MedicalInterchange profile).
- Archiving and handing over CAD. The Library of Congress lists X3D as an acceptable format for CAD in its Recommended Formats Statement, and the US National Archives (NARA) names it a preferred format for transferring CAD models.
Where X3D came from
The Web3D Consortium develops X3D as VRML's successor. It was first published as ISO/IEC 19775:2004, followed by versions in 2006 (3.1), 2008 (3.2) and 2013 (3.3, which brought the UNIT statement). Version 4.0 was published as ISO/IEC 19775-1:2023, and Web3D announced it in early 2024. It added scenes embedded right in HTML, working with glTF models, physically based (PBR) materials, Web Audio sound and HAnim 2.0 character animation. Version 4.1 is still a draft.
How to open X3D on a Mac
macOS doesn't know X3D. On macOS 27.0.1 the system has no file type for it, Apple's Preview guide doesn't list it among its 3D formats, and neither Quick Look nor the Finder shows it.
- [Castle Model Viewer](https://castle-engine.io/castle-model-viewer) is free and reads X3D, VRML, glTF and other formats. It can also convert them to X3D or STL. The stable version 5.2.0 is Intel-only on the Mac; for Apple silicon there's only the 5.3.0 development snapshot so far. The app isn't signed, so macOS blocks it the first time you run it. Its authors explain on the page how to let it run.
- [Sunrize](https://create3000.github.io/sunrize/) is an X3D editor from the makers of X_ITE, available for the Mac as a ZIP on GitHub. It isn't signed either.
- [Blender](https://extensions.blender.org/add-ons/web3d-x3d-vrml2-format/) imports X3D and VRML from version 4.2 on through the "Web3D X3D/VRML2 format" extension. Up to version 4.1 it was part of Blender.
- [X_ITE](https://create3000.github.io/x_ite/) and [X3DOM](https://www.x3dom.org/) show X3D in a web page. They're libraries for web authors, not a viewer you drop a file into. X_ITE reads XML, JSON, Classic VRML and VRML97, gzipped too.
- Preview3D, my app, opens .x3d files on a Mac in its window, in Quick Look and as a Finder thumbnail. On iPad, iPhone and Apple Vision Pro too.
Preview3D reads X3D through the Assimp library. I tried it in the same build the app uses. It opens XML in versions 3.3 and 4.0, including primitives (box, sphere, cylinder, cone), meshes made of faces or triangles, and reused shapes (DEF and USE). It shows the geometry only, in one plain colour: it doesn't use the file's materials or textures, and it doesn't run animation, sensors or scripts. Model info has the dimensions in the file's units and the triangle count, plus a mesh check. On iPad and iPhone it stands the model on your desk in AR, fitted to the desk, because it doesn't read the file's unit.
What Preview3D doesn't open:
- the .x3dv, .x3db and .x3dj encodings, or the older .wrl,
- packed .x3dz files – unpack them first (see above),
- scenes with the X3D 4 physically based material
PhysicalMaterial: in my test the whole scene failed to import, - scenes that pull in other files through
Inlinewritten the way the specification does (url='"part.x3d"'): these failed in my test too.
Converting X3D to STL
On a Mac, Preview3D converts from File → Export model as… (⌥⌘E) to STL, OBJ or PLY, without uploading anything. Colours, textures, lights, animation and interactivity are dropped. Primitives are turned into triangles when the file is read, so a sphere becomes a polyhedron in the STL. And mind the units: X3D works in metres, but a slicer usually takes the numbers in an STL as millimetres. If the model looks tiny in the slicer, scale it up 1000×.
Common questions
What is an .x3d file?
A 3D scene in the X3D standard, written as XML: shapes, materials, lights, viewpoints and animation. X3D is VRML's successor and the ISO/IEC 19775 standard.
What's the difference between X3D and VRML?
X3D is the newer standard. It contains all of VRML and adds more features and encodings. VRML files use the .wrl extension.
What are .x3dv and .x3dz files?
.x3dv is the same scene in the Classic VRML encoding. A z at the end of the extension means the file is packed with gzip; unpack it with gzip -dc.
Does a Mac open X3D without another app?
No. macOS 27 has no file type for X3D, and neither Preview nor Quick Look shows it.
How do I convert X3D to STL?
On a Mac, in Preview3D with File → Export model as…, or in Castle Model Viewer. Then check the size in the slicer.
Why is my X3D model tiny in the slicer?
X3D works in metres, and the slicer takes the numbers as millimetres. Scale the model up 1000×.
Related pages
- The .dae file – another 3D scene written in XML
- The .gltf and .glb files – today's format for 3D on the web, which X3D 4 can work with
- The .stl file – the printing format X3D is converted to
Sources
- Web3D: What is X3D – relationship to VRML, encodings
- Web3D: X3D standard versions – standard numbers and dates
- Web3D: X3D 4.0 as an ISO/IEC standard
- X3D 4.0 specification: units and coordinates
- Library of Congress: X3D – encodings, LoC and NARA recommendations
- Web3D mailing list: converting X3D to VRML (2012)
- X_ITE: supported formats
- Castle Model Viewer
- Blender: the Web3D X3D/VRML2 extension
- Apple: 3D formats in Preview
Have an X3D or VRML model – from a course or a science program, say – that wouldn't open on your Mac? Write to me at apps@xfanta.com with its encoding and where it came from.
Open it in Preview3D
STEP, 3MF, STL, G-code, BGCODE and more on Mac, iPad, iPhone and Vision Pro. One purchase, no account, no network.
Preview3D on the App Store