Bake high-poly detail into a normal map (and ambient occlusion) for a light version of the model — the xNormal workflow, in your browser. Drop one heavy model, or add your own low-poly and the maps bake onto its UVs. No upload, no account, no file size limit.
Batch processing runs this exact tool over a whole folder and hands back one zip — no file limit, still nothing uploaded.
The classic detail bake every desktop pipeline runs in xNormal, Marmoset Toolbag or Substance: the detail your low-poly cannot afford to carry as geometry is recorded into a texture instead, so the low-poly renders like the high-poly. It runs on your GPU, which is why a full 4K bake takes seconds rather than minutes.
Ambient occlusion is baked in the same pass, against the full-resolution high-poly rather than an approximation of it. Both maps come back inside a ready-to-use GLB.
Before a single ray flies, the model doctor runs with its fixes applied: wrong scale, broken bind poses and clearly inside-out meshes are repaired first — an inverted mesh would fire its bake rays the wrong way — and the full diagnostic report ships with the result.
Drop just your heavy model and the page makes the low-poly for you: it decimates to the fraction you choose (the same reduction as the reduce polygons page, so UVs, materials and skin weights survive), then bakes the detail the decimation removed back in as a normal map. A 400,000-triangle Meshy sculpt keeping 5% of its triangles plus a baked normal map is visually very close to the original — at a twentieth of the render cost.
Or bring your own retopologized low-poly as the second file: the maps then bake onto its UVs. The two models must sit on top of each other in space — same scale, same origin, exported from the same scene — because the bake works by matching the low surface to the high one point for point. If your low-poly has no UVs yet, it gets unwrapped automatically first.
The output GLB carries the bake’s own tangent frame as a TANGENT attribute, per the glTF spec. That pins the decode to the encode: Blender, Unity, Godot and three.js all reconstruct the same shading instead of guessing their own tangents against a bake they never saw.
When the low-poly is the decimated copy, its UVs are unchanged — so if your model already shipped a normal map, that texture-level detail is carried into the bake rather than silently dropped.
There is no cage editing — the search distance is measured for you, from how far each surface actually moved when it was simplified. Curvature, thickness, height and bent-normal maps are not baked (yet). Ambient occlusion bakes at up to 2048 px, which is more than a map that soft has any use for.
A bake cannot rescue two models that do not overlap in space. The result reports how much of the surface actually found the high-poly — if that number is low, fix the alignment and run again; the page is free and takes seconds.
No. The whole bake runs on your own GPU, in this tab. The files never leave your machine.
No. Drop one file and the page decimates it for you, then bakes the removed detail back as a normal map. Bring your own low-poly only if you have proper retopology you want the maps on.
Usually a tangent-frame mismatch — a map encoded with one tangent basis and decoded with another. This bake avoids that by writing its own tangent frame into the GLB as a TANGENT attribute, which glTF consumers are required to use. If you re-export the model through another tool, keep the tangents.
Much of the low-poly found no high-poly surface within reach, which almost always means the two models do not sit on top of each other — different scale, different origin, or different orientation. Export both from the same scene without moving either, and bake again.
Yes. On the one-file path the decimated low-poly keeps the original UVs, so the model’s existing normal map still applies — its detail is blended into the baked map instead of being lost. On the two-file path only geometric detail transfers, because your low-poly has different UVs.
Yes — on the one-file path the decimated low-poly keeps its skeleton and skin weights, and the maps bake in the bind pose. The output GLB still animates.
Quad remesh rebuilds the topology into clean quads and re-bakes the existing textures onto the new surface. This page keeps (or takes) a low topology and bakes new geometric detail — normal and occlusion — from the high-poly. For a character that deforms, remesh first for edge flow, then bake detail here with the remeshed model as your low-poly.
The GLB carries the maps already wired to the material and the tangent frame they were encoded in — drop it into an engine and it just works. Need the raw images? Any glTF tool (Blender included) extracts the textures from a GLB in one step.