DDS to PNG Converter
Choose up to 20 DDS textures saved as DXT1, DXT3 or DXT5 (BC1, BC2 or BC3) and pick any mip level the header declares. The level is drawn on a checkerboard so transparency shows, and you can switch to color only or to the alpha channel as gray, read any pixel's decoded red, green, blue and alpha values, and see how many texels are opaque, transparent or partly transparent. Export PNG writes that level at its own size with all four channels, in the orientation shown: rows are flipped only when you tick Flip vertically, and nothing is premultiplied, color-converted or rebuilt as a normal map. Prepare ZIP converts every supported file at full size. Files with a DX10 header, BC4 to BC7, ETC, uncompressed pixels, cubemaps, arrays or volumes are refused with the reason instead of being turned into a blank image, and decoding runs in a background worker in this browser, so nothing is uploaded.
Your workspace
Up to 20 files, each up to 32 MiB and 4096 pixels on a side. You can also drop files here.
Preview channels
Current result
Choose up to 20 DDS files, or load the example texture.
The decoded level appears here. Transparent texels show the checkerboard behind them.
- Format
- None chosen
- Full size
- None
- Shown
- Nothing yet
- Alpha
- None yet
- Red 255, green 0, blue 0
- Index 3 is transparent black: 0, 0, 0, 0
- Alpha 255, each nibble times 17
- Eight values: 200, 13, 173, 146, 119, 93, 66, 39
- Six values plus 0 and 255: 13, 200, 50, 87, 125, 162, 0, 255
Each file is decoded by a background worker in this browser, and nothing is uploaded or stored. The RGBA, RGB only and Alpha only buttons change the preview; Export PNG always writes the chosen level at its own size with all four stored channels, and the ZIP holds every supported file at full size, level 0, with the same flip setting. One ZIP holds up to 67,108,864 pixels, four 4096 by 4096 textures, to stay within browser memory.
Common questions
- How do I convert a DDS file to PNG?
- Choose the .dds file, or drop it on the workspace. Its largest mip level, level 0, decodes straight away; check the preview, then choose Export PNG. For several textures, choose up to 20 at once, then Prepare ZIP and Download ZIP to get one full-size PNG per supported file.
- Which DDS formats does this converter support?
- Legacy DDS files whose header names DXT1, DXT3 or DXT5, also called BC1, BC2 and BC3. DXT1 transparency, DXT3 explicit 4-bit alpha and both DXT5 alpha modes are decoded. Files with the DX10 extended header, BC4, BC5, BC6H and BC7, premultiplied DXT2 and DXT4, ETC, uncompressed pixel layouts, cubemaps, texture arrays and volume textures are refused with a message naming the format, so you never get a blank or placeholder PNG.
- Why is my texture upside down, and how do I flip it?
- Some engines and exporters store textures bottom row first. The converter keeps rows in the order the file stores them and flips them only when you tick Flip vertically; the preview, the exported PNG and the ZIP all follow that setting.
- Can I export a smaller mip level instead of the full-size image?
- Yes. The Mip level list shows every level the header declares with its size. Choose one and Export PNG writes that level at its own size, for example 2 by 2 pixels, with the level and size in the file name, such as rock-mip2-2x2.png. The ZIP always uses level 0.
- Does the PNG keep the alpha channel?
- Yes. The PNG is 8-bit RGBA and carries the decoded alpha of every pixel, and fully transparent pixels keep their decoded red, green and blue values instead of being cleared or premultiplied. The RGB only and Alpha only buttons change the preview, not the export.
- What happens with textures whose size is not a multiple of 4?
- They decode normally. DXT data is stored in 4 by 4 blocks, and the blocks on the right and bottom edges are cropped to the width and height in the header, so a 6 by 5 texture gives a 6 by 5 PNG.
- How large can the DDS files be?
- Each file can be up to 32 MiB and 4096 pixels on each side, and you can choose up to 20 at a time. One ZIP holds up to 67,108,864 pixels, four 4096 by 4096 textures, so the browser does not run out of memory; for more, prepare the ZIP from fewer files or export PNGs one at a time.
- Why do a few pixels differ slightly from another DDS viewer?
- Blended DXT colors and DXT5 alpha values are computed with truncating integer arithmetic, the same as the Pillow imaging library. Graphics cards and some other decoders round instead, so a blended value can differ by one step out of 255.
- Is my texture uploaded anywhere?
- No. The file is read and decoded by a background worker in this browser tab, and the PNG or ZIP is built on your device. The page makes no network request with your file and stores nothing.
Decodes BC1 (DXT1), BC2 (DXT3) and BC3 (DXT5) blocks, including DXT1 transparency, DXT3 4-bit alpha and both DXT5 alpha modes, and writes every stored channel to the PNG unchanged, with no normal-map reconstruction, color-space conversion or recovery of detail lost to compression. Blended values use truncating integer arithmetic, matching Pillow, so a few can differ by one step out of 255 from decoders that round. DX10-header, BC4 to BC7, ETC, uncompressed, cubemap, array and volume files are refused by name, never turned into a placeholder image.