How to compress an OBJ file
- 1
Add your OBJ
Drop the .obj, or the .obj with its .mtl and texture images, or one .zip of them. It opens in the 3D viewer and never leaves your browser.
- 2
Pick the settings
The defaults (5 decimals, normals kept, all triangles) do not change how the model looks. Lower the triangle slider when the file must be much smaller.
- 3
Compare and download
See the size and the vertex, UV, normal and triangle counts before and after, flip between Original and Compressed in 3D, then download the OBJ or a zip.
What makes an OBJ smaller
- Decimal places
- OBJ stores every number as text, often with 6 to 9 decimals. 5 decimals is a 0.00001-unit grid, far below what you can see. Numbers also lose trailing zeros (1.50000 becomes 1.5). UVs keep at least 4 decimals so textures do not shift.
- Merge duplicates
- Always on. Vertices, UVs and normals that are equal at the chosen precision are stored once, and any v, vt or vn that no face uses is dropped. Faces that collapse to a line are removed.
- Normals (vn)
- On our test models, removing them made the file about 30% smaller than the default settings alone. Blender, slicers and game engines recompute normals on import, but edges the file marked as hard may look smoother.
- Keep triangles
- Simplifies the mesh with meshoptimizer to a share of its triangles, part by part. Seams between objects, groups and materials stay closed, and it stops early where cutting more would visibly change the shape.
- Max texture size
- Shown when the .mtl uses textures: scales them down to 2048 or 1024 px on the longest side. PNG stays PNG and JPEG stays JPEG, so every app still reads the zip.
Frequently Asked Questions
It is free and needs no account. The OBJ is read and compressed by code running in your browser, so your model is never uploaded to our server.
Add the OBJ and press Compress OBJ with the defaults first: merging duplicates, dropping unused data and trimming decimals saved 8 to 41% on our test models (most around 10 to 15%) with no visible change. If you need more, remove normals, then lower "Keep triangles" (50% roughly halves the file) and check the Compressed view before you download.
Yes. Every o, g, usemtl and s line stays in place, so parts and materials are unchanged. Add the .mtl and the texture images (or one zip) and you get a zip back with the compressed OBJ, the .mtl and the textures, with texture paths fixed to sit next to the OBJ.
Some exporters already write short numbers and no duplicates, so there is little to merge. Then the size comes from the triangle count: lower "Keep triangles" or remove normals. To send or upload the file, the zip download also helps: OBJ is plain text, and our test OBJs zipped to between a quarter and 40% of their size.
Yes. Colours written after the position on v lines (v x y z r g b, as MeshLab, ZBrush and Blender export them) are kept, and two points with different colours are never merged.
Yes, with the "Keep triangles" slider (10% to 100%). Polygons with more than 3 corners are kept as they are unless you reduce triangles; then the simplified parts are written as triangles. For a big cut on a detailed scan, try 50% first and compare in the viewer.
For STL use Reduce STL File Size, which cuts triangles and writes a smaller binary STL. This page is for OBJ files only; to make a GLB from your OBJ, use OBJ to GLB.