← All articles 9 min read

Convert PSD to PNG: 4 Free Methods That Preserve Transparency

PSD files are great for editing, but terrible for sharing. They need Photoshop (or a Photoshop-aware tool) to open, and nobody is putting a 200MB layered file in a website or email. PNG solves this: it flattens the image into a universally supported format while keeping what matters most — transparency.

If your PSD has transparent areas, cutout objects, or semi-transparent layers, PNG is the right export target. Unlike JPG, which fills transparent pixels with white, PNG preserves full alpha-channel transparency. It also uses lossless compression, so text, sharp edges, and fine details stay crisp instead of getting smeared by JPEG artifacts.

The four methods below all handle PSD-to-PNG conversion with transparency preservation. They differ in automation potential, OS support, and how they deal with layers.

Methods at a Glance

Method OS Batch License Best For
ImageMagick 7.1 Win/Mac/Linux Yes Apache 2.0 CLI automation, quick one-offs
GIMP 2.10 Win/Mac/Linux Via Script-Fu GPL v3 Visual inspection, selective layer export
Python psd-tools 2.0 + Pillow 10.2 Any Yes MIT / MIT-CMU Scripted pipelines, CI/CD integration
XnConvert 1.99 Win/Mac/Linux Yes Freeware (personal) Drag-and-drop batch conversion

Method 1: ImageMagick 7.1 (CLI)

License: Apache 2.0 (free for commercial use)

ImageMagick reads PSD natively and flattens all visible layers into a single composite. Transparent areas become PNG alpha. This is the fastest path for single files and shell scripts.

Install

# Ubuntu/Debian
sudo apt install imagemagick

# macOS (Homebrew)
brew install imagemagick

# Windows (Chocolatey)
choco install imagemagick --version=7.1.1.38

Convert a Single File

magick design.psd design.png

ImageMagick 7.1 flattens the PSD composite and preserves the alpha channel automatically. The output PNG includes transparency wherever the PSD had it.

Force a White Background

If you want to flatten transparency onto white instead of keeping it transparent:

magick design.psd -background white -flatten design.png

Batch Convert a Folder

for f in *.psd; do
  magick "$f" "${f%.psd}.png"
done

Export Individual Layers

PSD files contain multiple layers. ImageMagick exposes them as numbered frames:

magick design.psd[0] layer-0.png
magick design.psd[1] layer-1.png

Index [0] is the composite (flattened view). Indexes [1], [2], etc. are individual layers from bottom to top.


Method 2: GIMP 2.10 (GUI)

License: GPL v3 (free and open source)

GIMP imports PSD files with full layer structure intact — including layer names, blending modes, and visibility. This makes it the best option when you need to inspect layers before exporting.

Install

Download GIMP 2.10 from gimp.org/downloads. Available for Windows, macOS, and Linux. On Ubuntu:

sudo apt install gimp

Convert Step by Step

  1. Open GIMP. Go to File > Open and select your .psd file.
  2. GIMP imports all layers. The Layers panel shows them with their original names and visibility.
  3. To export the flattened composite: File > Export As, choose PNG, and click Export.
  4. In the PNG export dialog, ensure Save background color is unchecked (this preserves transparency).

Export a Single Layer

  1. In the Layers panel, hide all layers except the one you want (click the eye icon).
  2. Right-click the visible layer > Flatten Image (or use Image > Flatten Image to merge onto the canvas).
  3. File > Export As > choose PNG.

Batch with Script-Fu

GIMP supports batch processing via Script-Fu (a Scheme dialect). Save this as psd-to-png.scm:

(let* (
  (image (car (gimp-file-load RUN-NONINTERACTIVE "input.psd" "input.psd")))
  (drawable (car (gimp-image-flatten image)))
)
  (file-png-save RUN-NONINTERACTIVE image drawable "output.png" "output.png" 0 9 1 1 1 1 1)
  (gimp-image-delete image)
)

Run from the terminal:

gimp -i -b '(gimp-script-fu-interpreter 0 0 "psd-to-png.scm")' -b '(gimp-quit 0)'

GIMP's batch mode is powerful but verbose. For serious batch work, ImageMagick or Python is more ergonomic.


Method 3: Python psd-tools 2.0 + Pillow 10.2

License: MIT (psd-tools) / MIT-CMU (Pillow) — both free for commercial use

This is the developer's choice. A Python script gives you full control over how layers are handled, and it slots into any CI/CD pipeline or build script.

Install

pip install psd-tools==2.0.4 Pillow==10.2.0

Convert a Single File

from psd_tools import PSDImage

psd = PSDImage.open("design.psd")
composite = psd.composite()
composite.save("design.png")

The composite() method flattens all visible layers — respecting blending modes, opacity, and masks — and returns a Pillow Image object with an alpha channel.

Export Individual Layers

from psd_tools import PSDImage

psd = PSDImage.open("design.psd")

for i, layer in enumerate(psd):
    if layer.is_visible():
        image = layer.composite()
        image.save(f"layer-{i}-{layer.name}.png")

Each layer exports as a separate PNG with its own transparency.

Batch Convert a Directory

from pathlib import Path
from psd_tools import PSDImage

input_dir = Path("psd_files")
output_dir = Path("png_output")
output_dir.mkdir(exist_ok=True)

for psd_path in input_dir.glob("*.psd"):
    psd = PSDImage.open(psd_path)
    composite = psd.composite()
    composite.save(output_dir / f"{psd_path.stem}.png")
    print(f"Converted {psd_path.name}")

Control Output Quality

Pillow lets you tune PNG compression (0 = no compression, 9 = maximum compression). Higher compression saves disk space but takes longer to encode:

composite.save("design.png", compress_level=9)

This is lossless — compress_level affects file size and encoding time, not image quality. For further size reduction after conversion, compress the PNG with quantization tools.


Method 4: XnConvert 1.99 (NConvert CLI)

License: Freeware for personal use (commercial license required for business use)

XnConvert provides a GUI for drag-and-drop batch conversion. Its CLI companion, NConvert, handles the same job from the terminal. Both are part of the XnView suite.

Install

Download XnConvert 1.99 from xnview.com/en/xnconvert. Available for Windows, macOS, and Linux.

For NConvert (CLI), download from xnview.com/en/nconvert.

GUI: Drag-and-Drop Conversion

  1. Open XnConvert.
  2. Drag PSD files onto the Input tab.
  3. In the Output tab, set format to PNG.
  4. Check Keep transparency in the output settings.
  5. Set the output folder and click Convert.

XnConvert processes all files in the queue and preserves transparency by default when converting to PNG.

CLI: NConvert Batch

nconvert -out png -keepfiledate -o output_dir/%.png *.psd

This converts every PSD in the current directory to PNG. The %.png token uses the original filename with a .png extension.

NConvert with Transparency

NConvert preserves transparency by default when converting PSD to PNG. To force a specific background color instead:

nconvert -out png -bgcolor 255 255 255 -o output_dir/%.png *.psd

PNG vs JPG: Which Format for Your PSD?

Converting to PNG is not always the right call. If your PSD is a photograph with no transparency, JPG produces smaller files with minimal visible quality loss. Here is when to choose each:

Factor PNG JPG
Transparency Full alpha channel preserved No transparency — filled with white
Compression Lossless — pixel-perfect output Lossy — some detail discarded
File size Larger (2-10x for photos) Smaller
Best image types Logos, icons, screenshots, UI mockups, text Photos, gradients, complex scenes
Editing Safe to re-edit (no generation loss) Each save degrades quality further
Web use Ideal for graphics with sharp edges Ideal for hero images and photo galleries

Rule of thumb: If the PSD has transparent areas or sharp text, convert to PNG. If it is a photograph with no transparency, convert to JPG instead. For web delivery, consider converting to WebP or AVIF for even smaller files.


Layer Handling: Composite vs Individual Export

Every PSD contains a pre-rendered composite (the flattened preview) and individual layers. How you export depends on what you need:

Composite export flattens all visible layers into a single PNG. This is what you get from magick design.psd design.png or psd.composite() in Python. It respects layer visibility, blending modes, opacity, and masks. Use this when you want the final design as one image.

Individual layer export saves each layer as a separate PNG file. Each layer keeps its own transparency. This is useful for:

ImageMagick, GIMP, and psd-tools all support individual layer export, as shown in the examples above. XnConvert handles composite export only.

One thing to watch: individual layers export at the PSD canvas size by default. If you need cropped-to-content layers (no surrounding whitespace), use psd-tools:

layer_image = layer.composite()
cropped = layer_image.crop(layer_image.getbbox())
cropped.save(f"{layer.name}.png")

Handling Common PSD Issues

Adjustment Layers and Smart Objects

ImageMagick and XnConvert read the PSD composite, so adjustment layers (Curves, Levels, Hue/Saturation) are already baked in. GIMP imports some adjustment layers but ignores others — always compare the GIMP render against the original Photoshop preview.

psd-tools 2.0 handles most adjustment layers in its composite() method, but complex smart objects may not render identically. If pixel-perfect accuracy matters, flatten in Photoshop first or verify the output against a reference.

CMYK PSD Files

PSD files for print are often in CMYK color mode. PNG is an RGB format, so conversion requires a color space transform:

magick design.psd -colorspace sRGB design.png

In Python:

composite = psd.composite()
if composite.mode == "CMYK":
    composite = composite.convert("RGBA")
composite.save("design.png")

Colors will shift slightly during CMYK-to-RGB conversion — this is unavoidable because CMYK and RGB have different gamuts.

Large PSD Files

PSD files over 2GB use the PSB (Large Document Format) extension. ImageMagick 7.1 reads PSB files the same way as PSD. psd-tools also supports PSB. GIMP 2.10 can open PSB files but may be slow with very large canvases.


FAQ

Can I convert PSD to PNG without Photoshop?

Yes. All four methods in this guide are free and do not require Photoshop. ImageMagick, GIMP, Python with psd-tools, and XnConvert all read PSD files natively.

Does converting PSD to PNG lose quality?

No. PNG uses lossless compression, so the pixel data is preserved exactly. The only "loss" is that layers are flattened into a single image — the original layer structure is gone. Keep the PSD file if you need to edit layers later.

How do I keep transparency when converting PSD to PNG?

All four methods preserve transparency by default when the PSD has an alpha channel. The key is to avoid adding -flatten (ImageMagick) or -bgcolor (NConvert) flags, which composite transparency onto a solid background.

Can I convert PSD to PNG on my phone?

Not with the tools listed here. For mobile, upload the PSD to a cloud service and use a web-based converter — or use Pixotter's conversion tools directly in your mobile browser.

What is the maximum PSD file size these tools handle?

ImageMagick 7.1 and psd-tools handle files up to several GB (including PSB format). GIMP 2.10 can open large files but may run slowly above 1GB. XnConvert works well up to about 500MB.

How do I batch convert hundreds of PSD files?

ImageMagick's shell loop, the Python script, or NConvert's CLI are all built for batch work. For hundreds of files, the Python script offers the most control — you can add logging, error handling, and parallel processing with concurrent.futures.

Should I convert PSD to PNG or WebP?

PNG is the safe choice when you need universal compatibility and transparency. WebP offers smaller files with both lossy and lossless options, but older browsers and some desktop applications still lack support. For web delivery, convert to PNG first, then use Pixotter to compress or convert to WebP as needed.

How do I make the PNG background transparent after conversion?

If the PSD already has transparency, PNG preserves it automatically. If the PSD has a solid background you want to remove, use a background removal tool after conversion.


Next Steps

Once your PNGs are ready, they are probably larger than they need to be — especially if they came from high-resolution PSD files. Compress your PNGs to cut file size by 40-70% without visible quality loss, or learn more about reducing image file sizes across your entire workflow.

For the opposite conversion — when you need a JPG instead — see the companion guide on converting PSD to JPG.