How to Convert Textures for Unity Game Engine

Unity's texture import pipeline accepts most common image formats, but the format you choose and the settings you configure determine your game's visual quality, build size, and runtime performance. A poorly optimized texture pipeline can double your game's download size or cut your frame rate in half.

The texture requirements differ significantly depending on what the image is used for. A character texture, a UI sprite, a skybox, and a lightmap each need different formats, resolutions, and compression settings. Understanding these differences is essential for any Unity developer working beyond basic prototyping.

This guide covers the practical decisions you need to make when preparing textures for Unity projects, from source format selection to import settings.

Step-by-Step Instructions

  1. Choose the Right Source Format

    Unity imports PNG, JPG, BMP, TGA, TIFF, PSD, GIF, HDR, and EXR files. For most game textures, PNG is the best source format because it is lossless and supports alpha channels (transparency). Use JPG only for photographic textures where no transparency is needed and you want smaller source files in your project folder. Use PSD to preserve layer editability during development.

  2. Use Power-of-Two Dimensions

    GPU texture memory is optimized for power-of-two dimensions: 256, 512, 1024, 2048, 4096 pixels. Non-power-of-two textures still work but cannot use GPU mipmap generation, tiling, or certain compression formats efficiently. For 3D textures (materials, environment maps, lightmaps), always use power-of-two dimensions. For UI sprites, non-power-of-two is acceptable since they use different GPU rendering paths.

  3. Configure Import Settings in Unity

    After importing, select the texture in Unity's Project panel and configure the import settings. Set Texture Type (Default for 3D textures, Sprite for 2D UI, Normal Map for bump maps). Set Max Size to the largest dimension you need. Enable Generate Mipmaps for 3D textures (disable for UI). Choose the compression format based on target platform.

  4. Select Platform-Specific Compression

    Unity compresses textures differently per platform. For PC and consoles, DXT (BC) compression is standard: DXT1 for textures without alpha, DXT5 for textures with alpha. For Android, ETC2 is the default. For iOS, ASTC provides the best quality-to-size ratio. Set these in the platform-specific override tabs in the texture import settings.

  5. Verify in the Game View

    After configuring import settings, test your textures in the actual game view, not just the Scene view. Check for compression artifacts, especially on normal maps and textures with subtle gradients. If quality is unacceptable, increase the Max Size setting or try a higher-quality compression format. Use Unity's Frame Debugger to verify that the correct mipmap levels are being used at your target camera distances.

Texture Types and Format Recommendations

Diffuse and albedo textures (the base color of materials) work well as PNG source files with DXT1 compression in Unity for non-transparent surfaces or DXT5 for surfaces with transparency. Normal maps should always be imported as PNG and set to Normal Map texture type, which uses special compression that preserves the directional data correctly.

UI sprites should be PNG with transparency for any elements that are not rectangular. Set the texture type to Sprite (2D and UI) and disable mipmap generation since UI elements are rendered at a fixed screen size. Lightmaps are generated by Unity and do not need external format conversion, but if you are importing baked lightmaps from external tools, use HDR or EXR format for the extended color range.

Texture Size and Memory Budget

Texture memory is often the largest single consumer of GPU RAM in a game. A single 4096 by 4096 texture with DXT5 compression uses 32MB of GPU memory. At 2048 by 2048, that drops to 8MB. At 1024 by 1024, it is 2MB. The difference matters enormously when you have hundreds of textures loaded simultaneously.

For mobile games, most textures should be 512 by 512 or 1024 by 1024. For PC games, 1024 by 1024 to 2048 by 2048 is standard. Use 4096 by 4096 only for hero assets that the camera gets very close to. Use Unity's Memory Profiler to track texture memory usage and identify oversized textures that are consuming more memory than their visual impact justifies.

Convert Source Textures

If your textures are in WebP, HEIC, AVIF, or other formats that Unity does not import, convert them to PNG with imageconvert.co. The conversion runs in your browser with no upload. Your game assets stay on your development machine.

Frequently Asked Questions

What image format should I use for Unity textures?

PNG is the best source format for Unity textures. It is lossless, supports alpha transparency, and works with all of Unity's texture import settings. Unity recompresses all textures regardless of source format, so using a lossless source gives Unity the best data to work with.

Why should textures be power-of-two dimensions in Unity?

GPU hardware is optimized for power-of-two textures (256, 512, 1024, 2048, 4096). These dimensions enable efficient mipmap generation, texture tiling, and GPU compression. Non-power-of-two textures skip some of these optimizations, which can impact rendering performance and memory usage.

What compression format should I use for Unity mobile games?

For Android, use ETC2 compression (the default for OpenGL ES 3.0 devices). For iOS, ASTC provides the best quality-to-size ratio. Set these in the platform-specific override tabs in Unity's texture import settings. Both formats support alpha channels.

Does it matter if I import JPG or PNG into Unity?

For the final build, it does not matter because Unity recompresses all textures using platform-specific formats. However, PNG is preferred as a source format because it is lossless. JPG source files have already lost data to compression, meaning Unity starts with a degraded source. Over multiple edit-save cycles, JPG quality degrades further.

Convert textures to PNG for Unity

Convert WebP to PNG

Related Reading