Skip to content
LidarKit

PLY viewer in your browser

Open a point cloud, a scanned mesh or a Gaussian splat, and see exactly what the file holds. Nothing is uploaded, and there is no fixed size limit.

Drop your PLY file here

or choose a file

ASCII and binary PLY · meshes, scans and Gaussian splats · multi-gigabyte files welcome

What a PLY file actually holds

PLY — the Stanford polygon format — is the simplest container in common use for 3D geometry. A plain-text header names a sequence of elements, each a fixed count of records made of named properties, and the records follow verbatim: as text, or as raw little- or big-endian binary. There is no compression, no spatial index and no checksum.

That simplicity is why it is everywhere. It is what photogrammetry pipelines write, what handheld and structured-light scanners export, what CloudCompare reaches for when it needs a lossless intermediate, and what 3D Gaussian splatting settled on as its distribution format. If you have been handed a 3D capture and it is not LAS, E57 or OBJ, it is very often PLY.

The thing PLY leaves out, and what it costs

The specification defines the header grammar and then stops. It never says what a property means. There is no registry of names, no units, no declared ranges and no coordinate system. x, y and z are universal by convention alone — and nothing else is.

So colour arrives as red, green and blue from most tools, as r, g and b from some, and as diffuse_red from anything descended from the original Stanford code. CloudCompare prefixes every attribute it imports with scalar_, so a LAS file round-tripped through it arrives with its intensity under scalar_Intensity. All of those are matched here.

Ranges are unstated too, and that is the one that renders a file wrong rather than merely uncoloured. A red property may be a uchar running 0–255, a ushort running 0–65535, or a float running 0–1 — and the header says only which type it is. Guess the scale wrong and the file comes out almost black or completely white, with no error anywhere. This viewer measures the range the file actually uses instead of trusting the type, which is the only way to get all three right.

Because every one of those is a guess, the viewer shows its work. The "What is in this file" panel lists every element, every vertex property, its storage type, and what the viewer mapped it to — including the properties it ignored. When a cloud looks wrong, that table is usually the answer.

Gaussian splats

.ply has become the de-facto container for 3D Gaussian splatting, and a splat file is not an ordinary point cloud wearing the same extension. Colour is stored as the degree-0 term of a spherical-harmonic expansion, in f_dc_0, f_dc_1 and f_dc_2, with coefficients centred on zero and running negative. A general PLY viewer reads those as float colour channels, clamps the negatives away, and shows you a mostly black cloud.

This one recognises the layout and converts the DC term back to a colour the way the training convention defines it, so a splat opens looking like the scene it was trained on. The panel reports how many harmonic bands the file carries — which is the main thing separating a 200 MB export from a gigabyte one — alongside the opacity, scale and rotation properties it found.

What you get is the splat's centres drawn as points, not the splatted render. That is the right tool for checking coverage, extent, alignment and whether the colour survived a conversion; it shows where the splat sits and what it covers, not how it renders.

Meshes

PLY began as a mesh format — the Stanford bunny is a PLY file — and a great many .ply files in the wild carry a face element as well as vertices. Those open here, drawn as their vertices: the corners of the surface rather than the shaded surface itself. The panel says plainly that this is what you are seeing, and reports the face count.

For a scanned mesh that is usually the question you had anyway — did the capture cover the whole object, is the scale right, did the vertex colours survive the export, where are the holes. Drawing vertices also means a 40-million-triangle scan opens in a browser tab in seconds, which a shaded surface at that size would not.

What this viewer does not do

  • No editing, cropping, decimation or filtering.
  • No shaded surface rendering, and no normals-based lighting.
  • No measurement between points — that lives in the E57 viewer.
  • No PLY export — this reads PLY, it does not write it.

That list is deliberate. Reading and drawing is what lets this open a multi-gigabyte file in a browser tab in seconds, with no install and no upload. This is for the moment you have a file, a browser, and one question about it.

Once a point cloud is in LAS or LAZ, the rest of the toolbox applies: view it in 3D with full statistics, label ground, vegetation and buildings automatically, turn it into a DSM or DTM, or read its header and coordinate system.

Reading a large PLY without running out of memory

A binary PLY whose vertex properties are all scalar has a fixed record size, which makes the body an array: record N sits at a computable offset. That is what lets this read a 3 GB file in four-megabyte slices, keeping an even sample across the whole file rather than the first two million points, without ever holding more than a few megabytes of it at once.

ASCII PLY has no such structure — there is no way to find the tenth record except by reading the nine before it — so those are streamed through from the start. They are slower for the same point count, which is the price of a format you can open in a text editor.

Frequently asked questions

How do I open a PLY file without installing software?
Drop the .ply file onto the viewer above. It is read on your own machine and drawn with WebGL, so there is nothing to install and nothing to upload. ASCII and binary PLY both open, and so do the big-endian files the older scanning tools produce.
Is my PLY file uploaded to a server?
No. Nothing leaves the machine you opened it on: the PLY parser runs in a Web Worker inside your browser and the page has no upload endpoint. That matters because PLY is usually what comes out of a scanner or a photogrammetry run on a site somebody is not free to share.
Is there a file size limit?
No limit on the file itself. The parser reads the file in slices of a few megabytes and keeps an even sample of up to 2 million vertices, so a multi-gigabyte scan or splat opens without the whole file ever being in memory. The panel reports the true vertex count and the sampling it used. The file is only ever read, never altered.
Can it open a PLY mesh, or only a point cloud?
Both open. A mesh is drawn as its vertices — the corners of the surface rather than the shaded surface — and the panel says so plainly, along with how many faces the file holds. That is enough to check that a scan covered what it should, that the geometry is the right shape and scale, and that the vertex colours survived an export.
Can it open a Gaussian splat .ply file?
Yes, and it colours them correctly. A 3D Gaussian splat stores colour as the degree-0 term of a spherical-harmonic expansion, in properties named f_dc_0, f_dc_1 and f_dc_2, with values centred on zero and running negative. Read as ordinary float colour channels — which is what a general PLY viewer does — a splat comes out mostly black. This viewer recognises the layout, converts the DC term back to a colour, and reports how many harmonic bands the file was trained to.
Why does my PLY file open with no colour?
Almost always because the colour is under a property name the file never defined the meaning of. PLY has no registry of property names: colour is red/green/blue from most tools, r/g/b from some, and diffuse_red from anything descended from the original Stanford code. All of those are matched here, and the "What is in this file" panel lists every vertex property with what the viewer did with it — so if a property was ignored, you can see which one and why the cloud looks the way it does.
What does the viewer do about a PLY with no coordinate system?
It says so rather than inventing one. PLY has no field for a coordinate reference system — not an optional one, none at all — so the extents shown are in whatever units the tool that wrote the file was working in. The viewer reports the numbers and states that their units are unknown, which is the honest answer and the one that stops a scale error from going unnoticed.
Does it read ASCII PLY as well as binary?
Yes, all three storage formats the specification defines: ASCII, binary little-endian and binary big-endian. Big-endian is rare but not extinct — it is what the original Stanford scans shipped as — and a viewer that quietly reads those backwards produces coordinates that look like noise rather than an error.
My PLY file was cut short. Will it still open?
Yes. A file that ends before the vertex count in its header is decoded as far as it actually goes, and the panel reports how many vertices were really there against how many were promised. An export killed part-way through is a common way to get a PLY file, and the points that made it are still worth looking at.
Can I colour PLY points by classification?
Where the file carries a classification property, yes — CloudCompare writes one as scalar_Classification when it imports LAS data, and that is matched. Where the file has no such property the option is not offered, because a legend naming ground, vegetation and buildings while shading every point identically would look authoritative and mean nothing. To put classification onto a point cloud that has none, the automatic classifier on this site labels ground, vegetation and buildings from the geometry itself.
Why does the viewer show fewer points than my file contains?
Because drawing every vertex of a 200-million-point splat would exhaust GPU memory and drop the frame rate to nothing. Points are sampled evenly across the file rather than taken from the front, so the shape you see is the shape of the whole file. The panel reports the true total and the sampling interval it used, so you always know what you are looking at.
Do I need a powerful computer?
Any machine with a modern browser and working WebGL, including phones. PLY has no compression and no entropy coder, so unlike LAZ there is no WebAssembly involved at all — the whole reader is plain JavaScript running in a worker.