Supported Formats
PlayCanvas supports a wide variety of file formats for different asset types. This page lists the formats that can be used in your projects.
3D Models
The Editor and the engine accept different model formats. The Editor imports model files into assets, while the engine loads glTF files directly at runtime.
| Format | Extension | Editor | Engine | Notes |
|---|---|---|---|---|
| glTF Binary | .glb | Imported as a model | Loaded at runtime | Recommended format. Efficient, widely supported |
| glTF | .gltf | Uploaded as a binary asset, not imported | Loaded at runtime | JSON-based with external files. Convert to GLB to import it in the Editor |
| FBX | .fbx | Converted to GLB on import | Not supported | |
| COLLADA | .dae | Converted to GLB on import | Not supported | |
| OBJ | .obj | Converted to GLB on import | Not supported | Basic mesh format, no animations |
GLB is the recommended format for 3D models. It's compact, loads quickly, and supports all PlayCanvas features including animations, materials, and morph targets.
Textures
| Format | Extension | Notes |
|---|---|---|
| PNG | .png | Lossless, supports transparency |
| JPEG | .jpg, .jpeg | Lossy compression, no transparency |
| WebP | .webp | Modern format, good compression |
| AVIF | .avif | Next-gen format, excellent compression |
| GIF | .gif | Converted to PNG/JPG on import |
| TGA | .tga | Converted to PNG/JPG on import |
| BMP | .bmp | Converted to PNG/JPG on import |
| TIFF | .tif, .tiff | Converted to PNG/JPG on import |
| HDR | .hdr | High dynamic range, for environment maps |
| EXR | .exr | High dynamic range, converted to RGBM PNG |
Texture Compression
For optimized delivery, textures can be compressed to GPU-native formats:
| Format | Platform | Notes |
|---|---|---|
| Basis | All | Universal compressed format |
| DXT/BC | Desktop | Windows/Mac/Linux |
| PVRTC | iOS | Apple devices |
| ETC | Android | Most Android devices |
| ASTC | Modern mobile | iOS 8+, Android with ASTC support |
Audio
| Format | Extension | Notes |
|---|---|---|
| MP3 | .mp3 | Widely supported, good compression |
| OGG Vorbis | .ogg | Open format, good quality |
| WAV | .wav | Uncompressed, large files |
| M4A | .m4a | AAC audio |
For best browser compatibility, provide both MP3 and OGG versions of audio files. PlayCanvas will use the format supported by the user's browser.
Fonts
| Format | Extension | Notes |
|---|---|---|
| TrueType | .ttf, .ttc | Converted to an MSDF atlas on import |
| OpenType | .otf | Converted to an MSDF atlas on import |
| Datafork TrueType | .dfont | Converted to an MSDF atlas on import |
See Fonts for how the atlas is generated and how to load one outside the Editor.
Scripts
| Format | Extension | Notes |
|---|---|---|
| JavaScript | .js | Classic scripts |
| ES Module | .mjs | ESM scripts (recommended) |
Data Files
| Format | Extension | Notes |
|---|---|---|
| JSON | .json | Structured data |
| Text | .txt | Plain text |
| CSV | .csv | Tabular data (as text) |
| XML | .xml | Markup data (as text) |
| HTML | .html | HTML documents |
| CSS | .css | Stylesheets |
Shaders
| Format | Extension | Notes |
|---|---|---|
| GLSL | .glsl | OpenGL shading language |
| Vertex Shader | .vert | Vertex shader source |
| Fragment Shader | .frag | Fragment shader source |
Other
| Format | Extension | Notes |
|---|---|---|
| WebAssembly | .wasm | Compiled binary modules |
| Binary | .bin | Raw binary data |
| PLY | .ply | 3D Gaussian Splat data |
| glTF Binary | .glb | 3D Gaussian Splat data using the KHR_gaussian_splatting extension |
| SPZ | .spz | Compressed 3D Gaussian Splat data (Niantic SPZ format), loaded via a parser script |
Custom Formats
The lists above cover the engine's built-in loaders, but they are not fixed: at runtime, custom parsers can add support for new file formats — or override the built-in ones — for most asset types. See Custom Asset Parsers.
See Also
- Models - Preparing 3D models for PlayCanvas
- Asset Inspectors - Configure asset properties in the Editor
- Custom Asset Parsers - Load custom file formats at runtime