OBJ to PLY converter: the surface, as it is
Drop an .obj and get one .ply file, converted in Blender on our server. The trip keeps the geometry and nothing more; the materials and the textures cannot come along. Free, no account, nothing to install.
How do I convert OBJ to PLY?
Drop the file on this page, wait while the server converts it, and download one .ply file.
- 1Choose an .obj, or a zip of the folder that holds it with its textures. Files up to 50 MB.
- 2The converter opens it in Blender on our server and writes PLY. Most files take under a minute; the page shows the result in 3D when it is done.
- 3Download one .ply file. The upload and the result are deleted 3 days later.
- In:
- .obj (zipped with .mtl and images)
- Out:
- one .ply file
- Keeps:
- the geometry
- Cost:
- free, no account
- The materials and the textures cannot be carried into PLY.
What survives the trip
An OBJ never travels alone: the materials are in a sibling .mtl and the images beside that. Upload a zip of the folder and the materials come through; upload the .obj alone and the mesh arrives grey.
The result is a binary PLY with positions, normals, texture coordinates and, where the source carries a vertex-colour layer, colour per vertex. A model coloured by textures comes out without colour: images are not baked into vertices.
OBJ and PLY do not hold the same things, and the page says so before you upload: the trip keeps the geometry and nothing more, and the materials and the textures cannot come along. PLY is what MeshLab, CloudCompare, Open3D and most research code read before anything else.
What this conversion cannot do
Measured on real files, not assumed. Everything below is a property of the formats or of the pipeline, and knowing it beforehand is cheaper than discovering it in your 3D tool.
The .mtl and the images have to come along
An .obj carries geometry and texture coordinates and nothing else; the materials live in the .mtl it names, and the images in files the .mtl names. Zip all three together. An .obj on its own converts, but to an untextured mesh.
Colour only where the source has vertex colours
PLY colours vertices, not surfaces. A model painted with textures, which is nearly every game character, arrives as geometry with normals and texture coordinates and no colour. Keep such a model as GLB if it has to look right.
Uploads stop at 50 MB
A larger file is refused before anything is uploaded. Decimate a dense mesh or shrink the textures in your 3D tool first; neither changes the format.
Frequently asked questions
Why is the result grey?
The .obj was uploaded without its .mtl and images, or the .mtl names images that were not in the zip. Put the .obj, the .mtl and the image files in one zip and upload that.
Why would I want a PLY of a textured model?
Geometry processing: measuring, remeshing, sampling points, computing distances. MeshLab, CloudCompare and Open3D read PLY before anything else, and for that work the colour does not matter.
Is anything uploaded, and for how long?
Yes: the file you drop goes to our server in New York, is converted there, and both the upload and the result are deleted 3 days after the conversion. Nothing is shared with anyone.
Can I look at the OBJ first?
Yes, without uploading anything: the OBJ viewer draws it in your browser. Open the OBJ viewer →
Can this become a VTuber avatar?
Not as it is: an avatar needs a skeleton, skin weights and a face that moves, and an .obj has none of them. Rig and texture the model in Blender first, then convert the rigged file to VRM.
The other format pairs
All 50 are free, all run the same pipeline, and all say what they drop.
OBJ to GLB
OBJ in, GLB out, free: one file.
PLY to GLB
PLY in, GLB out, free: one file.
PLY to FBX
PLY in, FBX out, free: one file.
PLY to OBJ
PLY in, OBJ out, free: zipped with its files.
GLB to PLY
GLB in, PLY out, free: one file.
FBX to PLY
FBX in, PLY out, free: one file.
OBJ to STL
OBJ in, STL out, free: one file.
OBJ to DAE
OBJ in, DAE out, free: zipped with its files.
OBJ to USDZ
OBJ in, USDZ out, free: one file.
STL to PLY
STL in, PLY out, free: one file.
PLY to STL
PLY in, STL out, free: one file.
PLY to DAE
PLY in, DAE out, free: zipped with its files.
PLY to USDZ
PLY in, USDZ out, free: one file.
DAE to PLY
DAE in, PLY out, free: one file.
USDZ to PLY
USDZ in, PLY out, free: one file.
OBJ to 3MF
OBJ in, 3MF out, free: one file.
GLB to OBJ
GLB in, OBJ out, free: zipped with its files.
FBX to OBJ
FBX in, OBJ out, free: zipped with its files.
STL to OBJ
STL in, OBJ out, free: zipped with its files.
DAE to OBJ
DAE in, OBJ out, free: zipped with its files.
USDZ to OBJ
USDZ in, OBJ out, free: zipped with its files.
3MF to OBJ
3MF in, OBJ out, free: zipped with its files.
Only want to look at the file? GLB viewer, FBX viewer and OBJ viewer all run on your own device — nothing is uploaded.
Is your model going into VTubing?
An .obj is a surface without a skeleton, so no converter can make a VRM avatar out of it directly. Rigged and textured in Blender, the same model converts to VRM on the FBX to VRM converter, with the bones mapped onto the VRM humanoid.
Open the VRM converter