DDS & TGA to PNG Converter
Open game textures — BC1 to BC7, mipmaps, cube maps and TGA — and save them as PNG.
Preview
Settings
Files
About the DDS & TGA to PNG Converter
Open the textures games and 3D engines use and save them as ordinary pictures. DDS files are decoded on your device in every common format — BC1–BC7 (DXT1, DXT3, DXT5, ATI1/ATI2, BC6H HDR and BC7, all decoded in JavaScript, so they work on any phone or computer), uncompressed 8-, 16- and 32-bit formats and floating-point formats — including mipmaps, cube-map faces, texture arrays and volume slices. TGA files of every standard kind (true-colour, colour-mapped and greyscale, 8 to 32 bits, raw or RLE) open too.
Save as PNG (keeps alpha), JPG or WebP, one file or a whole folder as a ZIP. Check a texture channel by channel — red, green, blue or alpha — and rebuild the blue channel of two-channel normal maps. Going the other way, turn PNG, JPG or WebP images into 32-bit or 24-bit TGA (raw or RLE) for mods and engines that want TGA. Nothing is uploaded.
How to use it
- Choose DDS / TGA to PNG (or Images to TGA to make TGA files).
- Drop your .dds or .tga files onto the box, or choose them. Many files at once are fine.
- Pick what to export — the main image, every mip level, every cube face or array slice, or everything — and the format.
- Check the preview; switch the channel view to look at the alpha channel or a single colour channel.
- Select Download (several images come as a ZIP), or Download all as ZIP.
Examples
rock_albedo.dds · BC7_UNORM_SRGB · 1024 × 1024 · 11 mip levels · Export: All mip levels
A ZIP with rock_albedo.png (1024 × 1024), rock_albedo-mip1.png (512 × 512) … rock_albedo-mip10.png (1 × 1).
sky.dds · cube map · 6 faces · Export: All faces and slices
sky-posx.png, sky-negx.png, sky-posy.png, sky-negy.png, sky-posz.png and sky-negz.png — the faces in DDS order +X, −X, +Y, −Y, +Z, −Z.
wall_normal.dds · BC5_UNORM · Rebuild normal-map blue: on
wall_normal.png with blue computed as z = √(1 − x² − y²), the familiar light-blue normal map instead of red-green only.
Common uses
- Looking at and extracting textures from games and mods (only files you have the right to use).
- Getting every mip level or cube face out of a DDS to check how it was generated.
- Turning TGA renders, sprites and screenshots into PNG for the web.
- Making TGA files from PNG for engines, mod tools and older 3D software.
- Checking a texture’s alpha channel or a packed mask channel on its own.
Supported DDS formats
- Block-compressed: BC1/DXT1, BC2/DXT3 (and DXT2), BC3/DXT5 (and DXT4), BC4/ATI1 (unsigned and signed), BC5/ATI2 (unsigned and signed), BC6H (unsigned and signed half-float HDR) and BC7 — the formats described in Microsoft’s Texture Block Compression in Direct3D 11.
- Uncompressed: any 8–32-bit RGB, RGBA, luminance or alpha layout described by bit masks (A8R8G8B8, X8R8G8B8, R5G6B5, A1R5G5B5, A4R4G4B4, L8, A8L8 …), and DXGI formats such as R8G8B8A8, B8G8R8A8, R10G10B10A2, R16G16B16A16 and R8/R8G8/R16.
- Floating point (HDR): R16/R32 float with one to four channels, R11G11B10_FLOAT and R9G9B9E5. These are shown with the sRGB curve after the exposure you set; values above 1.0 are clipped.
- Both the classic header and the DX10 header (with its DXGI format, texture arrays and cube flags) are read; the layout follows Microsoft Learn’s Programming Guide for DDS.
BC decoding is a TypeScript port of the public-domain bcdec decoder. Test textures of random blocks decode to exactly the same values as OpenImageIO (BC6H) and ImageMagick (BC7), and to within one level of 255 of ImageMagick or OpenImageIO for BC1–BC5.
Mipmaps, cube maps and channels
A DDS can hold several images: mip levels (each half the size of the one before, used for distant surfaces), the six faces of a cube map (+X, −X, +Y, −Y, +Z, −Z), array elements and volume slices. Choose Main image for the full-size first image only, or export the levels, faces or everything; each file is named after what it is.
The channel view shows red, green, blue or alpha alone in grey, which makes packed masks (roughness, metalness, AO in separate channels) easy to check. Two-channel textures (BC5, R8G8, R16G16) usually hold normal-map X and Y: with Rebuild normal-map blue the blue channel is computed as z = √(1 − x² − y²).
TGA files
TGA support follows the Truevision TGA 2.0 specification: image types 1, 2, 3, 9, 10 and 11, 8/15/16/24/32-bit pixels, colour maps with 15–32-bit entries, bottom-left or top-left origin and right-to-left rows. The alpha channel is used unless the TGA 2.0 extension area marks it as unused, or it is 0 everywhere; premultiplied alpha (attributes type 4) is converted to straight alpha for PNG.
TGA files written here are 32-bit with alpha or 24-bit, raw or RLE-compressed (packets never cross a row), with a TGA 2.0 footer whose attributes byte says whether the alpha channel is real.
Limitations
- Surfaces up to 8,192 × 8,192 pixels and files up to 512 MB.
- ASTC, ETC and PVRTC (mobile formats, usually in KTX files), integer (UINT/SINT), depth and YUV DDS formats are not decoded — the page names the format so you can convert it elsewhere.
- HDR textures are saved as 8-bit images after exposure and the sRGB curve; for full HDR work use the original file.
- DXT2 and DXT4 (premultiplied alpha) are saved with their colours as stored.
- TGA output is true-colour only (no colour-mapped or greyscale TGA files). PNGs keep the exact colour of fully transparent pixels; from other formats those colours come out black, because browsers do not keep them.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
How do I convert a DDS file to PNG?
Drop the .dds file onto the box and select Download. The full-size main image is saved as PNG with its alpha channel; choose All mip levels or All faces and slices to get the other images inside the file too.
Why does my normal map look red and green only?
BC5 and other two-channel formats store only the X and Y of each normal; the engine computes Z. Tick Rebuild normal-map blue to compute it, which gives the usual light-blue look.
Why is my texture completely transparent?
Its alpha channel is used for something else (a mask, or nothing) or the image relies on premultiplied alpha. Untick Keep alpha to save every pixel opaque, and use the channel view to see what the alpha channel holds.
Do I need a graphics card that supports BC7?
No. Every format, including BC6H and BC7, is decoded in JavaScript, so it works the same on phones, tablets and computers without special GPU support.
Are my files uploaded?
No. Textures are read and converted by your browser on your device, and the page works offline once it has loaded.