Preview3D
Get

What is a .ply file? Mesh, point cloud or splat, and opening it on a Mac

PLY is a simple format for 3D data that Greg Turk wrote at Stanford in 1994 for data from 3D scanners. Scanners, photogrammetry and iPhone LiDAR apps still save it today. But three different things hide behind the same extension: a coloured mesh, a point cloud and a Gaussian splat. The header tells you which one you have.

At a glance

Extension
.ply
Type
Triangle mesh
Created by
Greg Turk, Stanford
Since
1994
Standard
Not a formal standard
Specification
PLY (Paul Bourke)
macOS without an app
Opens it and shows previews

Facts checked November 4, 2026

The header tells you what's inside

Every PLY starts with the letters ply and a text header describing what follows. This is a cylinder exported from Blender:

ply
format binary_little_endian 1.0
comment Created in Blender version 5.1.0
element vertex 576
property float x
property float y
property float z
element face 1152
property list uchar uint vertex_indices
end_header

The format line says whether the data is text (ascii) or binary. element vertex 576 is 576 vertices, each with x, y and z coordinates. element face 1152 is 1152 faces, each a list of vertex numbers. After end_header comes the data.

You can read the header in Terminal, even in a binary file:

head -c 600 model.ply

Three things under one extension

A mesh has element face in its header. It's a surface like STL, just often with vertex colours: red green blue follow x y z. Scanning apps and photogrammetry save meshes like this because the colour sits right in the vertices and needs no texture.

A point cloud has no element face – only vertices, usually with colour. It's what a LiDAR or laser scanner produces: millions of points without a surface. A point cloud can't be measured as a solid, checked for holes or printed. It has to become a mesh first, for example in MeshLab or CloudCompare.

A Gaussian splat is a newer use of the old extension. Each "point" is a small coloured, translucent ellipsoid, and instead of red green blue the header has properties like f_dc_0, opacity, scale_0 and rot_0. The colour is stored as spherical-harmonic coefficients. Only a viewer that understands splats shows it properly; an ordinary 3D viewer sees, at best, points without colour.

I tried all three with Apple's Model I/O framework. A coloured mesh loads with its vertex colours, and a point cloud as points with colours. Of a Gaussian splat, only the point positions remain – no colour, opacity or shape.

A simple format with free hands

Greg Turk designed PLY to be simple to implement and still general. A writer can attach any properties to vertices and faces, and the header describes them. A reader, though, understands only the ones it knows, so texture coordinates, materials or custom data often get lost between programs.

Also: PLY has no units, one file is one object with no hierarchy, and binary data can be little- or big-endian. Nobody has developed the format since 1994; the Library of Congress found no edition other than the first.

Stanford's PLY work also gave the world the Stanford Bunny, a ceramic rabbit scanned in 1994 that is still one of the most used test models in computer graphics.

How to open PLY on a Mac, iPad and iPhone

macOS knows PLY by itself. According to the Library of Congress, Preview opens it, and on macOS 27 (checked on 27.0.1) Quick Look and Finder thumbnails show it too. Whether they show colours, point clouds and splats correctly, I haven't checked.

Other options:

  • [MeshLab](https://www.meshlab.net/) and [CloudCompare](https://www.cloudcompare.org/) are free and handle meshes and point clouds, including turning a point cloud into a mesh.
  • [Blender](https://www.blender.org/) imports PLY. Vertex colours only show once you switch on vertex-colour display.
  • Preview3D, my app, opens PLY on Mac, iPad, iPhone and Apple Vision Pro.

Preview3D reads PLY through Model I/O, so the same applies as above: a mesh with its vertex colours, a point cloud as points, and a splat only as points. When a mesh has no normals, the app computes them so it doesn't come out flat or black. For a mesh, Model info shows the dimensions in the file's own units and the triangle count, with a mesh check. On iPad and iPhone it stands the mesh on your desk in AR, fitted to the desk, because PLY has no unit.

Converting PLY to STL

On a Mac, Preview3D converts from File → Export model as… (⌥⌘E) to STL or OBJ, without uploading anything. Converting only makes sense for a mesh. STL carries no colour, so the vertex colours are lost, and check the units in the slicer afterwards. Neither a point cloud nor a splat turns into a printable model.

Common questions

How do I tell whether my PLY is a mesh or a point cloud?

Look at the header. If it has element face, it's a mesh. If it only has vertices, it's a point cloud. The properties f_dc_0, opacity and scale_0 mean a Gaussian splat.

Why can't I see my PLY's colours?

The program either doesn't read them or doesn't have them switched on. In Blender, turn on vertex-colour display. For a Gaussian splat, only a splat viewer shows the colours.

Can I 3D print a PLY?

A mesh, yes, after converting it to STL or 3MF. A point cloud or a splat, no – it has to become a mesh first.

Is the colour kept when converting PLY to STL?

No. STL carries no colour. To keep it for colour printing, you need a format that carries it, such as 3MF.

Does a Mac open PLY without another app?

Yes, Preview and Quick Look handle it on macOS 27.

What's the difference between ASCII and binary PLY?

Only how the data after the header is written. Binary is smaller and loads faster; ASCII can be read in a text editor.

Related pages

Sources

Do you have a PLY from an iPhone scan that showed something different on your Mac than you expected? Write to me at apps@xfanta.com with the app 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