zlim
Sign inGet started
Textures

KTX2 texture compression for glTF and GLB

KTX2 (with Basis Universal supercompression) is a GPU texture format that stays compressed in video memory instead of decoding to raw RGBA like PNG or JPEG. Zlim transcodes a model's textures to KTX2 with mipmaps, cutting texture memory — often the largest part of a 3D asset's footprint.

Get an API key Read the docs

Why texture memory is the hidden half of the budget

A 2K PNG might be a few megabytes on disk, but once decoded it occupies roughly 16 MB of GPU memory as uncompressed RGBA — and a model can carry many such textures. On mobile and AR devices, that VRAM pressure causes stutter, thermal throttling, and crashes long before polygon count does.

KTX2/Basis textures stay compressed on the GPU (transcoded to the device's native format — ASTC, ETC2, BCn), so they use a fraction of the memory and upload faster.

What Zlim does

Zlim transcodes a model's textures to KTX2 using Basis Universal (UASTC for high quality, ETC1S for maximum compression), generates the full mipmap chain, and rewrites the glTF to reference them via KHR_texture_basisu. This is applied alongside geometry compression so you optimize the whole budget in one job.

bash
zlim optimize model.glb       # textures → KTX2, mipmaps generated

FAQ

Do KTX2 textures need runtime support?

Yes — via the KHR_texture_basisu extension, which model-viewer, three.js, and Babylon.js support. The transcoder picks the device's native GPU format at load.

UASTC or ETC1S?

UASTC for high-fidelity textures (normal maps, detailed albedo); ETC1S for the smallest size on simpler textures. Zlim selects sensible defaults per profile.

Optimize your model now

Start free — 25 optimizations a month. No card required.

Get an API key
Related
FBX to GLBOBJ to GLBCompress GLBOptimize glTFDraco compressionReduce poly countOptimize for webOptimize for ARAPI & CLI docs