Skip to content

DirectDraw Surface (DDS) to JPEG converter

DDS → JPG makes a small preview of a game texture for a mod page, a bug report or a texture catalogue, where transparency and exact texels do not matter.

  • Converted with Image engine · input deleted within 24 h
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • File size Changed

    The 512×512 DXT1 texture went from 174,904 to 90,554 bytes; an uncompressed 800×600 DDS of 1,920,128 bytes became a 79,881-byte JPG.

  • Transparency Lost

    Alpha is flattened onto white by default: the DXT5 explosion became an 8,237-byte JPG on white, or 9,584 bytes on black with background #000000.

  • Opaque DXT1 textures Kept

    DXT1 always decodes with an alpha channel; when every pixel is opaque the channel is dropped, so a plain texture converts without a misleading transparency warning.

  • Texel accuracy Changed

    JPEG compression is applied on top of the DDS block compression, so the preview is fine for viewing but not for editing and re-exporting.

  • Mipmaps and cubemap faces Lost

    Only mip level 0 of the first face is written; the cubemap test produced one 33,227-byte JPG of a single side of the skybox.

  • HDR textures Changed

    BC6H lighting textures are clipped to 8-bit colour before JPEG encoding.

Sample conversions

Tiling ground texture

Input
disturb_dxt1_mip.dds, 174,904 bytes, 512×512 DXT1.
Output
90,554-byte JPG in 8 ms.

Fire sprite on black

Input
explosion_dxt5_mip.dds, 87,536 bytes, 256×256 DXT5, with options {"background":"#000000"}.
Output
9,584-byte JPG in 44 ms; the soft orange edge fades into black as it does in the game.

Large uncompressed DDS

Input
uncompressed_rgb.dds, 1,920,128 bytes, 800×600 32-bit.
Output
79,881-byte JPG in 0.95 s; PNG, WebP and PDF took about 1 s as well, so the time goes into reading the file.

A real DirectDraw Surface (DDS) → JPEG run

We converted our DirectDraw Surface (DDS) sample (281 KB) with Image engine on 2026-10-20. It took 20 ms and produced a 51 KB JPEG file, 82% smaller than the input. The engine raised 2 warnings, listed below.

Input · sample.dds · 281 KB

288,128 bytes

Output · sample.jpg · 51 KB

480 × 600 px, baseline

Width
480
Height
600
Encoding
baseline
  • Transparency filled with #ffffff for JPG output.
  • Image metadata stripped from output.

Options and when to change them

background
White is the default. Use black for fire, glow and smoke sprites, or the colour of the page the preview will sit on.
quality
90 by default; textures with fine noise compress well at 80 for a mod-page gallery.
width
Set a width such as 512 so that 4K textures make reasonable gallery thumbnails.

Do it yourself

texconv (DirectXTex, Windows)

bash
texconv -ft jpg -o previews *.dds

Batch-converts a folder; check textures with alpha afterwards, since JPG cannot keep transparency.

ImageMagick

bash
magick texture.dds -background black -flatten -quality 85 texture.jpg

BC6H and BC7 support depends on the ImageMagick build; DXT1, DXT3 and DXT5 are widely supported.

DirectDraw Surface (DDS) to JPEG by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Image engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=dds&to=jpg.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.dds" -F "from=dds" -F "to=jpg" \
  -F 'options={"width":0}' \
  --output output.jpg

Options this engine accepts for DirectDraw Surface (DDS) → JPEG

KeyApplies toTypeDefault
widthWriting JPEGnumber0
heightWriting JPEGnumber0
fitWriting JPEGcontain · cover · fillcontain
qualityWriting JPEGnumber90
backgroundWriting JPEGstring#ffffff
stripMetadataWriting JPEGbooleantrue
API reference

When this is the wrong conversion

  • If you plan to edit the texture, convert DDS → PNG; a JPG adds a second round of lossy compression.
  • If the texture's alpha matters (foliage, decals, UI), PNG keeps it and JPG cannot.

DirectDraw Surface (DDS) to JPEG questions

Why does the result say transparency was filled when my texture is opaque?

DXT1 textures are decoded with an alpha channel even when every pixel is opaque, and the warning is raised whenever the decoded image has one. If your texture had no cut-outs, nothing was actually filled.

Why is my explosion surrounded by white?

Its transparent pixels were filled with the default white background. Set background to #000000 for sprites drawn for additive blending.

Can I preview all six sides of a cubemap?

Not with this converter; it writes the first face only. GIMP's DDS import loads the faces as layers, and each layer can be exported on its own.