All ToolsStart a project ↗
Texture delivery

Texture resolution and memory: what 4K actually costs

For an uncompressed RGBA8 texture, base-level memory is width × height × 4 bytes. A 4096 × 4096 image therefore needs 64 MiB before mipmaps. A complete mip chain adds about one third. The downloaded JPEG or PNG size does not tell you the decoded texture memory.

RGBA8 base memory bars: 2048 squared uses 16 MiB, 4096 squared uses 64 MiB, 8192 squared uses 256 MiB.
The bar lengths are proportional to calculated memory. Mipmaps, compression and other GPU allocations are excluded.Download the reference SVG
Twice the width. Four times the pixels.Calculated base-level RGBA8 memory. Mipmaps, GPU compression and other allocations are excluded.
  1. 2K · 16 MiB2048 × 2048 × 4 bytes.
  2. 4K · 64 MiB4096 × 4096 × 4 bytes.
  3. 8K · 256 MiB8192 × 8192 × 4 bytes.

Try the texture budget

Compare square RGBA8 maps. This estimates texture storage, not total GPU usage.

Approximately 426.7 MiB for five 4K RGBA8 maps with full mip chains.

Formula: side × side × 4 × map count ÷ 1,048,576. Multiply by approximately 4/3 for mipmaps. Compression, geometry and framebuffers are excluded.

The decision

What this solves

Small downloads can still create large decoded textures. A model with several 4K maps can exhaust a device budget even when its GLB seems compact.

Calculate the base level

Multiply width by height to obtain pixel count, then multiply by bytes per pixel. Divide bytes by 1,048,576 for MiB. In this guide, 1K means 1024 pixels on each side. The square RGBA8 sequence is 4 MiB at 1K, 16 MiB at 2K, 64 MiB at 4K and 256 MiB at 8K.

Doubling both dimensions quadruples the pixel count. Moving from 4K to 2K therefore reduces this base allocation by 75 percent. That is a mathematical size relationship, not a promised frame-rate improvement.

Account for mipmaps and formats

A full mip chain stores successively smaller versions. The series 1 + 1/4 + 1/16 and so on approaches 4/3, so the overhead is approximately one third for a large square texture. A partial chain has different overhead.

RGBA8 is only one representation. Floating-point textures, compressed GPU formats, driver allocation and application copies change actual usage. Keep the format assumption next to every estimate and measure the target application when memory is critical.

Choose detail from the final camera

A texture does not need the same resolution for a thumbnail and a close-up of an engraved label. Inspect the most demanding intended view and the portion of UV space occupied by that detail. A large image can still look soft when the visible label uses only a tiny region.

Compare two versions with identical camera, lighting and compression settings. Inspect diagonals, small lettering and specular movement. Keep the smaller version only if it preserves the detail needed for that delivery. Avoid using a single arbitrary resolution for every map.

Keep download and runtime budgets separate

PNG and JPEG compress the transferred image. The runtime decodes it, so a low-megabyte download can expand considerably. Conversely, GPU texture compression can change the runtime footprint independently of the source image dimensions.

Record downloaded bytes, decoded-format estimate and observed device behaviour as separate columns. This prevents a smaller file from being mistaken for proof that a mobile rendering failure has been solved.

Tools for this task

Start with these tools

Use the tools in order, or jump straight to the one that matches the question in front of you.

Workflow

Recommended workflow

The sequence keeps the work practical and reduces the usual guesswork before production.

Count the maps

List texture width, height, channel format and number of distinct maps. Include duplicated material images.

Open tool

Make a smaller candidate

Export one resolution step smaller while keeping the master. Check fine labels, edges and repeat patterns.

Open tool

Test the receiving view

Compare close and distant views on the intended device. Record visual loss separately from file size.

Open tool
Example outcome

Calculated example: five distinct 4096 × 4096 RGBA8 textures need 320 MiB at base level, or approximately 426.7 MiB with full mip chains. Five 2048 × 2048 versions need 80 MiB base, about 106.7 MiB with mipmaps. These figures exclude geometry, framebuffers and application overhead.

Basis and limitations

These are transparent arithmetic estimates for uncompressed RGBA8, not measured browser allocations or compressed GPU formats. Original worked arithmetic. Confirm actual allocations using the target renderer or browser profiler.

MDN: WebGL texImage2D formats: Texture formats, channel types and dimensions. The RGBA8 arithmetic here is a bounded example, not total GPU memory.

MDN: WebGL generateMipmap: Mipmaps are a separate texture allocation consideration beyond the base level.

Common mistakes
  • Calling compressed file size GPU memory.
  • Forgetting that doubling both dimensions gives four times the pixels.
  • Reporting an estimate as a measured device limit.
Next pages

Keep going

FAQ

Questions this page answers

Why does halving texture resolution save so much memory?

Halving both width and height leaves one quarter of the pixels. For the same format, base-level memory falls by 75 percent.

How much memory does a 4K texture use?

A square 4096 × 4096 RGBA8 texture uses 64 MiB at base level and about 85.3 MiB with a complete mip chain. Other formats and allocations differ.

Is 8K always better for a product render?

No. Choose resolution from the final view, UV coverage and delivery budget. Extra pixels that cannot be seen increase processing without improving the intended image.

Next step

Talk to XO3D

Bring the product, audience, launch date and required assets. We can help define the creative direction and production scope from there.

Tell us about your brief

Published by XO3D Labs: 2026-09-17

Updated: 2026-09-17

About the studio behind these tools

XO3D is a director-led product CGI studio, and these tools come out of its own production pipeline rather than being built as marketing. We work with tech, industrial and premium consumer brands on product films, launch stills and interactive experiences.

That makes us the right choice for launch-critical work where the visual standard has to be high and the product may not exist yet.

It makes us the wrong choice for three things: hundreds of routine SKUs to a fixed template, a permanently live self-service configurator across a large range, and the campaign idea itself.