Skip to content
STLBench

Free online STL to PLY converter

STL to PLY — where a pile of triangles becomes a mesh

Drop an .stl and download a .ply, rewritten right here in the browser with no upload. Nothing is rescaled, since neither format states a unit, and no triangle is added or removed. The change is structural: an STL writes every corner of every triangle in full, so a vertex shared by six faces appears six times and no file records that they are the same point. The PLY stores each position once with a face list pointing at it — which is the form MeshLab, CloudCompare and every mesh algorithm actually need.

  • 100% free
  • No signup
  • Indexed mesh
  • 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 STL to PLY

Three steps, and one number that shows the conversion did something.

  1. Drop the .stl

    Either flavour opens. Shared corners are identified as the file is read, which is the substance of this conversion: STL repeats a vertex once per triangle that touches it, and PLY stores it once.

  2. Watch the vertex count collapse

    The panel shows both figures: how many vertex records the STL held and how many distinct positions there actually were. A closed mesh typically lands near a sixth of the original. That number is the mesh becoming a mesh rather than a pile of loose triangles.

  3. Download the PLY

    Binary PLY with an ASCII header you can open in any text editor to see the element counts and property list. Nothing is rescaled, because neither format states a unit.

Technical specifications

Reads.stl — binary or ASCII
Writes.ply — binary body, ASCII header
UnitAbsent on both sides — coordinates are written exactly as read
GainedAn indexed mesh: each position stored once, faces referring to it
GainedFields for per-vertex colour and normals, ready for a later step
Typical vertex countAround a sixth of the STL's, on a closed mesh
File sizeNo fixed limit — past 100 MB you are told what it will cost this tab, then it opens

Frequently asked questions

Why would I want a PLY?

Because the tools that do serious things to meshes prefer it. MeshLab, CloudCompare, Open3D, PCL and most academic code read PLY first — it is the format their file dialogs default to and the one their examples use. It also has room for things STL cannot express: per-vertex colour, per-vertex normals, confidence values, and any custom property somebody wants to attach. Converting is how you stop fighting a file dialog.

Does the mesh change?

The geometry does not; the representation does. Coincident corners are welded, so the same shape is described by roughly a sixth as many vertex records with a face list referring to them by index. Nothing moves, nothing is smoothed, no triangle is added or removed. What changes is that adjacency becomes explicit, which is precisely what a mesh algorithm needs and what STL refuses to record.

Do I get colour?

Only if the source had some, which an STL never does. PLY has the field ready and waiting — that is why scanners write it — but a converter cannot fill a field from a file that carries nothing. What this gives you is a container that can hold vertex colour when a later step produces it, such as projecting a photograph onto the mesh.

Binary or ASCII PLY?

Binary, with the standard ASCII header on top. ASCII PLY writes every coordinate as text and lands several times larger with no benefit beyond being greppable, and every tool that reads PLY reads the binary form. The header stays readable either way, so you can still check the element counts by opening the file.

Does the size change?

No. Neither format declares a unit, so the numbers are written exactly as they were read and the panel reports a factor of one. Whatever your STL meant by 1 is what the PLY means by 1.

Is anything uploaded?

No. Parsing, welding and writing are all work your own machine does, and the .ply arrives from memory rather than from a download server.

About why adjacency is worth a conversion

Almost everything interesting you can do to a mesh depends on knowing which triangles touch. Smoothing averages across neighbours. Decimation collapses an edge and needs to know what else used it. Hole detection looks for edges with only one face. Curvature, segmentation, remeshing, boolean operations — all of them start by building an adjacency structure, and none of them can start until the file says which vertices are the same vertex.

STL declines to say. It stores each triangle independently with its three corners written out in full, a design that made sense for a 1987 machine reading a stream and makes none now. Every tool that opens an STL rebuilds the adjacency by comparing floating-point coordinates and hoping they match exactly, which is why the same file can be watertight in one program and full of cracks in another.

PLY records it explicitly, once, and every reader gets the same answer. That is the whole value of this conversion. If the destination is a slicer rather than a mesh tool, the reverse is one page away: PLY back to STL. And if what you want is a format that indexes its mesh and states its unit, 3MF does both.

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.

Worth adding here: a model heading into a research or measurement pipeline is often the one thing in a project that cannot be regenerated. It was not copied anywhere but into your own browser's memory.