Compress OBJ File

Shrink a Wavefront OBJ for upload limits, Sketchfab, slicers and game engines. The result is still an OBJ: the same groups and materials, fewer bytes, with a 3D before and after.

Free · no signup · your file stays in your browser

Loading the OBJ compressor...

How to compress an OBJ file

  1. 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. 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. 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.

Related free 3D tools