What is the PLY file format?
.ply is a 3D image file format. The .ply (Polygon File Format or Stanford Triangle Format) standard was developed at Stanford University by Greg Turk in the early 1990s. It was created as a means of storing simple 3D data collected using a 3D scanning device.
A .ply file stores objects as a list of vertices and flat polygons that can have the following properties defined:
- Color and transparency,
- Description of surface normals,
- Spatial coordinates.
There are two versions of the .ply format. The text version contains information describing all the objects in a 3D image in human-readable format. The binary version stores the same data in raw binary encoding (little-endian or big-endian), producing smaller files and faster load times. In both versions the header always begins with the ASCII magic word ply and ends with end_header.
Common 3D geometry formats include .OBJ, .STL (popular in 3D printing), and .GLB for glTF scenes.
Security & safety
RISK: LOWPLY is passive 3D data - vertices, faces and properties, not executable code - so opening one is safe. The only practical cautions are non-malware: scan PLYs can be very large (tens of millions of points) and slow to open, and a malformed/huge file can stress a viewer. Download tools (MeshLab, Blender, CloudCompare) from their official sites to avoid bundled adware from 'free 3D viewer' lookalike pages.
Format details
in a nutshell- 3MF/Bambu/Prusa project sub-file (uncommon) - Some 3D pipelines store point/mesh dumps with a .ply name; still the same Polygon format, just produced by scanners or slicers.
- Harvard Graphics / Stanford GraphBase data (legacy, rare) - A handful of old programs used .ply for unrelated chart or graph data; effectively obsolete and not what modern users encounter.
Programs that open PLY files
Technical details
deep spec| Encoding variants | ASCII text (`format ascii 1.0`), little-endian binary (`format binary_little_endian 1.0`), or big-endian binary (`format binary_big_endian 1.0`) |
| File magic / signature | Every `.ply` file opens with the ASCII string `ply` on its own line, regardless of whether the body is text or binary |
| Header structure | Always plain ASCII text, present in both ASCII and binary files; element and property definitions appear between `ply` and the closing `end_header` line |
| MIME type | `model/ply` |
| Primary elements | Vertices (`vertex`) and polygon faces (`face`); edges and arbitrary custom elements are also supported |
| Property system | Each element carries arbitrarily named scalar or list properties, e.g. `x`, `y`, `z`, `nx`, `ny`, `nz`, `red`, `green`, `blue`, `alpha` |
| Supported scalar types | `char`, `uchar`, `short`, `ushort`, `int`, `uint`, `float`, `double` |
| Binary endianness | Both little-endian and big-endian are supported; the `format` header line specifies which is in use |
| Binary compactness | Binary variant packs raw scalar values with no compression layer, typically 3-4x smaller and faster to parse than the ASCII variant |
| Color support | Per-vertex or per-face RGBA stored as named `red`, `green`, `blue`, `alpha` properties (typically `uchar`, 0-255) |
| Surface normals | Per-vertex or per-face normals stored as `float` properties named `nx`, `ny`, `nz` |
| Point cloud data | A vertex-only file with no face list is valid `.ply` - widely used to store raw 3D scan point clouds |
| Extensibility | Custom named properties can be appended to any element; compliant readers skip unknown properties, ensuring forward compatibility |
| Face index encoding | Face vertex indices use a `list uchar int` type - a byte count followed by that many integer vertex indices |
| Released | early-mid 1990s (Stanford University) |
| Open standard | Yes · royalty-free |
| Specification | paulbourke.net |
PLY conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about PLY files.