Convert PLY to 3MF

Converting PLY to 3MF prepares a scanned mesh for a slicer, in a package that declares its unit instead of leaving it to convention. Two things to know first: the per-vertex colour a scan carries is not written into the 3MF, and the millimetre declaration is an assertion rather than a measurement, so check the size once.

  • Where it runs In your browser. The file is never uploaded.
  • Rebuilt 3MF works differently from a PLY, so this is not the gradual degradation a lossy codec applies. What 3MF can express is reproduced faithfully; what it has no equivalent for does not survive at all.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Geometry only. Materials, colours, textures and animation are not carried across, and a model placed several times comes back with each copy baked into its own position.

Up to 100 files at once. Mixed formats are fine.

Printing a scan: why 3MF rather than STL

Both formats will get a scan into a slicer, and 3MF gets it there with more of the truth attached. It declares its unit in the model element, so the slicer does not fall back to a house convention. It stores each vertex once and references it from every triangle, where an STL repeats three full vertices per triangle. And it is an OPC package with a content-type map and a relationship file, which means a malformed one fails loudly rather than opening as something odd.

None of that changes the print. What it changes is the number of ways the job can go wrong between the scan and the plate, and with scanned geometry — which is already the least predictable input a slicer sees — that is worth having.

Millimetres are declared in the 3MF, and a scan may not agree

The 3MF written here always says unit="millimeter". The coordinates from the PLY are passed through with no scaling, because a PLY declares no unit and there is nothing to convert from. The conversion is therefore stating a fact about the file that the file never contained.

For a structured-light or laser scan that statement is usually correct: the device knows its own optical geometry and reports in millimetres. For a photogrammetry reconstruction from photographs it is usually meaningless, because that pipeline recovers shape up to an unknown scale factor — a 200 mm object can come out with coordinates in the single digits or the thousands. Put a ruler or a scale bar in the capture, or measure a known feature in MeshLab and scale before converting. A slicer that believes a wrong unit prints a wrong part.

The colour a PLY carries is dropped on the way into 3MF

This is the pair where the loss is most visible, because per-vertex colour is the entire reason scans are PLY files. The reader takes the x, y and z properties from each vertex element and steps over the rest — red, green, blue, alpha, normals, confidence, quality and anything custom — so that the stride stays correct, then discards them.

3MF is fully capable of holding colour: it has a base materials group, a colour group and a triangle-level property index, and multi-material printers use them. Nothing is written. If a colour print is the goal, the route is your slicer's own painting tools or a vendor pipeline that reads textured meshes, not this conversion.

A PLY point cloud is not a printable object

If the PLY declares vertices and no faces, the conversion stops and says so. That is correct rather than restrictive: a slicer needs a closed surface to compute an inside and an outside, and a set of points has neither. There is no honest default for turning one into the other.

Reconstruction is the missing step and it belongs in a tool with a preview. MeshLab and CloudCompare both offer Poisson and ball-pivoting; the choice between them and the parameters you give them visibly change the result, which is exactly why a converter should not pick for you. Mesh first, inspect, then convert.

The mesh crosses into the 3MF exactly as the PLY had it

No welding is applied on this path. The STL and OBJ readers merge coincident vertices because those formats routinely arrive with duplicates; the PLY reader takes the vertex array and the face indices as the file states them, because a meshing step has already made those decisions deliberately.

So the vertex count in the 3MF matches the element vertex count in the PLY header, and the triangle count matches the face count. That makes verification easy and it also means the conversion cleans nothing up. Duplicate vertices, unreferenced vertices and split seams in the scan arrive intact, and if they were causing a manifold complaint they will keep causing it.

Scans are not watertight, and the 3MF inherits that

A scan has holes where the scanner had no line of sight: undercuts, the face the object was resting on, dark or specular surfaces that returned nothing. It usually also carries islands of background geometry and, where several passes were merged, self-intersections.

3MF expects a printable object to be a closed manifold volume, and nothing in this conversion checks or enforces that. The file will open in your slicer and the slicer will tell you what is wrong with it. Fixing it in advance — MeshLab's hole filling, Meshmixer's inspector, or Blender's 3D-Print Toolbox — is faster than iterating through slicer warnings, and it is the step most likely to decide whether the print succeeds.

One PLY surface, one 3MF object, no names

The 3MF contains a single object in its resources section and a single item in its build section, positioned with no transform. A PLY has one surface and no way to say otherwise, so there is nothing to divide and nothing to place.

No name attribute is written either, so the slicer shows an unnamed object. If your scan does contain several disconnected shells — a scanned assembly, or a capture with background fragments still attached — Split to Parts after import finds them by connectivity, and that is also the fastest way to delete the fragments you did not want.

What the slicer receives inside the 3MF package

A ZIP with three entries: [Content_Types].xml mapping the .model and .rels extensions to their content types, _rels/.rels with one relationship pointing at the model, and 3D/3dmodel.model holding the geometry in the 3MF core namespace. That structure is what makes it an OPC package rather than a ZIP with an XML file in it, and a slicer given the model alone would reject the archive.

It is a model file, not a project. No print profile, no filament assignment, no plate layout, no thumbnail and no per-object settings, because those are slicer-specific extensions rather than geometry. Your slicer applies whatever profile you have selected and can save its own, much larger, project 3MF afterwards.

Getting a scan ready before you convert the PLY

The order that saves time is: mesh the point cloud, delete the background islands, fill the holes, decimate to something a slicer can handle, scale against a known dimension, and only then convert. Every one of those is a scan problem rather than a format problem, and every one of them is easier in MeshLab or your scanner software than in a slicer.

The conversion itself runs entirely in your browser — no engine to download, nothing uploaded, a 100 MB ceiling — which matters when the scan is of a person, a client's object or a part somebody would rather not publish. The file that reaches your slicer never left the machine it was captured on.

How to convert PLY to 3MF

  1. Drop your PLY onto this page, or click to choose one.
  2. The surface is packaged as a 3MF with millimetre units in your browser.
  3. Download the .3mf and open it in your slicer.

PLY and 3MF: a captured surface meeting a print package

PLY compared with 3MF
PLY3MF
Full namePolygon File Format3D Manufacturing Format
File extension.ply.3mf
Media typemodel/plymodel/3mf
First published19942015
Published byStanford University3MF Consortium
Specification3MF Core Specification
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Opens in a browserNo browserNo browser
Considered insteadOBJ, STLSTL, OBJ

Opening the result

The usual programs do not overlap: PLY opens in MeshLab, Blender and CloudCompare, 3MF in PrusaSlicer, Cura and Microsoft 3D Builder — so whoever receives the result needs something from the second list.

What each format is for

The two are aimed at different work: PLY at scanning and moving data between programs, 3MF at 3D printing. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

3MF comes from 3MF Consortium and dates from 2015, specified as 3MF Core Specification. PrusaSlicer, Cura and Microsoft 3D Builder all read it.

PLY was published in 1994 and 3MF in 2015. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

PLY to 3MF: printing a scan without surprises

Are my PLY files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file.

Does the scan colour reach the 3MF?

No. 3MF has a proper colour model and could hold it, but the PLY reader takes x, y and z from each vertex and steps over every other property, so red, green and blue are discarded before anything is written.

Will the scan be the right size in my slicer?

Only if it was already in millimetres. The 3MF is written declaring millimetre and the coordinates are copied through unchanged. A structured-light scan usually is; a photogrammetry reconstruction has an arbitrary scale until you calibrate it against a known dimension.

My PLY is refused as a point cloud. Why?

Because it holds points and no faces, and points cannot be sliced. Run Poisson or ball-pivoting reconstruction in MeshLab, CloudCompare or your scanner software to make a surface, then convert that.

Does it close the holes in the scan?

No. Nothing here inspects or repairs topology. Gaps where the scanner could not see, stray islands and self-intersections all pass through, and your slicer will report the mesh as non-manifold exactly as it would have from a PLY.

Will the scan arrive as one object on the plate?

Yes. A PLY describes a single surface with no parts, so the 3MF contains one object and one build item. Separating disconnected shells is a Split to Parts command in your slicer.

Is the 3MF smaller than the PLY?

It depends on which PLY. Against an ASCII PLY, usually yes, because the 3MF markup is deflate-compressed inside the package. Against a binary PLY of a dense scan, often not.

More about these formats