Skip to content
STLBench

Free online PLY to STL converter

PLY to STL, with the holes counted first

Drop a .ply and download an .stl, produced here in the page with no file leaving your machine. Neither format declares a unit, so the coordinates cross untouched at a factor of one. What is worth your attention is the mesh underneath, because a PLY usually comes from a scanner: the per-vertex colours have nowhere to go in an STL and are dropped, the surface probably has holes where the sensor could not see, and if the file holds points with no faces at all then it is not a mesh yet. The panel says which of those applies to your file.

  • 100% free
  • No signup
  • Holes counted
  • Scale unchanged
  • Nothing uploaded
Convert to

Drag a file anywhere on this page to open it. F fits the view, W switches shading, G the grid, R spins it.

How to convert PLY to STL

Three steps, and the middle one is about your scan, not the format.

  1. Drop the .ply

    Binary or ASCII, both read. The header is parsed first, which is how you find out within a second whether the file contains faces or only points.

  2. Read the open-edge count

    Scan output is where this number earns its place. Photogrammetry and structured light produce surfaces with holes wherever the sensor could not see — under an overhang, inside a cavity, at the base where the object met the table. The count says how much of the surface is missing before a slicer has to invent an answer.

  3. Download the STL

    Written as binary STL, one body, at the same coordinates. Neither format states a unit, so nothing is rescaled — though whether your scanner's numbers were millimetres in the first place is a question only the scanner can answer.

Technical specifications

Reads.ply — binary and ASCII, with or without vertex colour
Writes.stl — binary, one body
UnitAbsent on both sides — coordinates are written exactly as read
KeptEvery triangle, at its original coordinates
LostPer-vertex colour, vertex normals, any custom PLY properties
CheckedOpen edges, non-manifold edges, degenerate triangles, enclosed volume
File sizeNo fixed limit — past 100 MB you are told what it will cost this tab, then it opens

Frequently asked questions

Where did the colours go?

Into nowhere, and deliberately. PLY stores colour per vertex, which is why scanners choose it — the texture is baked into the points rather than sitting in a separate image. STL has no field for it at all: three vertices and a normal per triangle, and no room for anything else. If the colour matters, 3MF keeps a colour and states its unit as well, which makes it the better landing for a scan you want to keep.

My file loaded but there is nothing to convert.

Then it is a point cloud. A great many PLY files hold vertices with no face list — raw output from a scanner or a photogrammetry stage before meshing. That is a legitimate PLY and an impossible STL, because STL is defined as a list of triangles and there are none. Turning points into a surface is reconstruction, not conversion: Poisson or ball-pivoting in MeshLab, CloudCompare or your scanner's own software.

Why is the STL so much bigger?

Because PLY shares vertices and STL does not. A PLY lists each point once and refers to it by index from every triangle that uses it; a binary STL writes all three corners of every triangle in full, so a shared corner appears six or seven times. Fifty bytes per triangle regardless of the mesh. Two to three times the size is normal and says nothing about quality.

Is a scan printable as it comes?

Rarely. Beyond the holes, scans arrive with millions of triangles describing surface noise, no flat base to sit on, and a wall thickness of zero in thin regions. The usual pipeline is decimate, fill holes, add a base, then print. What this page gives you is the honest state of the mesh going in, so you know which of those steps you actually need.

Does the size change?

No. Nothing in either format declares a scale, so the coordinates are copied straight across and the panel reports a factor of one. Scanners differ in what they mean by one — millimetres is common, metres is not unheard of — so check the bounding box against a dimension you measured on the real object.

Is the file uploaded?

No. Scans are frequently of things nobody wants on a stranger's server — a client's part, a person's face, a museum piece under an agreement. The read and the write both happen in this tab.

About the format scanners write and printers do not read

PLY came out of Stanford in the nineties as a container for range-scanner output, and its design reflects that origin exactly. The header declares which properties each vertex carries, so a file can hold position, colour, a confidence value, a surface normal and anything else the capture produced, all per point. Faces are optional. That flexibility is why every scanner and every photogrammetry package still writes it, and why the same extension can mean a finished watertight mesh or a bag of unconnected points.

STL assumes the opposite: a fixed record, three vertices and a normal, repeated. No optional properties, no colour, no points without triangles. Converting between them is therefore mostly a matter of discarding — which is fine when the destination is a slicer, and a real loss when the colour was the reason to scan the object in the first place.

If the colour matters, 3MF keeps one and states its unit, and the PLY viewer renders the captured colours as they were recorded, which is the fastest way to tell a good scan from a bad one before converting anything.

Where the conversion happens

Every number on this page is worked out by JavaScript running in the tab you are reading it in. The model you open is read straight off your own disk — it is never uploaded, logged or kept, which is also why these tools carry on working after you disconnect from the network.

One clause specific to this page: a scan is a measurement of a real object that existed in a real place, and quite often of a person. It is measured and rewritten where you dropped it, and there is no server here that could receive a copy.