Format comparison lab

Texture compression comparison

Encode one image into BC, ETC, ASTC and Basis Universal with the same encoders our tools use, then compare quality, file size and GPU memory with real measurements.

1

Source image

Drop an image here, or choose one

Loading image…

Working size (longest side)

Larger images are scaled down, never up, and cropped to whole 4×4 blocks.

Images never leave your browser.

2

Formats

8 selected
Desktop · BC
Mobile · ETC
Mobile · ASTC
Universal · Basis

Each format is encoded and decoded in a background worker.

3

Results

Choose formats and run the comparison to see measurements here.

How to read the results

PSNR (dB)

Peak signal-to-noise ratio over R, G and B. Every 3 dB roughly halves the squared error. Above about 40 dB differences are hard to see; below about 30 dB artifacts are usually obvious.

SSIM

Structural similarity of luma, from 0 to 1. It tracks blur and blocking better than PSNR but ignores colour shifts, so read the two together.

GPU memory

What the texture occupies after upload, without mipmaps. It depends only on format and size; add about 33% for a full mip chain.

File size

The encoded container on disk. Basis files are supercompressed and can be far smaller than their GPU footprint; DDS, PKM and ASTC files are their GPU data plus a small header.

Block grid

Zoom in and turn on the grid to see block boundaries. Artifacts that line up with the grid come from decisions the encoder made per block.

Encoder settings

Each format uses the defaults of its encoder page, such as ASTC at medium quality. For final assets, open the dedicated encoder to tune quality, colour space and mipmaps.

Frequently asked questions

Do these results match the real encoders?

Yes. The tool runs the same WebAssembly encoders and decoders as our encoder and decoder pages and measures the decoded pixels. GPU hardware can round some formats slightly differently, so treat differences under about 1 dB as a tie.

Why is the GPU memory for Basis Universal an estimate?

Basis files are transcoded on each device. ETC1S usually becomes BC1 or ETC1 at 4 bits per texel, and UASTC becomes BC7 or ASTC 4×4 at 8 bits per texel. Quality here is measured on a direct decode to RGBA; transcoding to a GPU format can add a small extra loss.

How are images with transparency handled?

Alpha is kept and measured in its own PSNR column. Formats that cannot keep it are marked in the format list: the BC1 encoder rejects transparent images, and ETC1 and ETC2 RGB drop alpha. Use BC3, BC7, ETC2 RGBA, ASTC or Basis for transparent textures.

Are my images uploaded?

No. Images are decoded, encoded and measured in your browser, and nothing is sent to a server.