Why App Store Connect rejected your screenshot: IMAGE_ALPHA_NOT_ALLOWED
The short answer: your PNG declares an alpha (transparency) channel, and App Store Connect refuses any screenshot that does, even if every pixel is fully opaque. ASC checks the file's color type, not what the image looks like. Flatten the PNG to RGB without alpha (color type 2), or convert it to JPEG, and the upload goes through.
Updated July 2026
What actually triggers the error
A PNG file's IHDR header contains a one-byte color type that declares the pixel format for the whole file:
| Color type | Format | ASC verdict |
|---|---|---|
| 0 | Grayscale | Accepted |
| 2 | RGB (truecolor, no alpha) | Accepted. This is the target. |
| 3 | Indexed palette | Accepted unless a tRNS transparency chunk is present |
| 4 | Grayscale + alpha | Rejected: IMAGE_ALPHA_NOT_ALLOWED |
| 6 | RGBA | Rejected: IMAGE_ALPHA_NOT_ALLOWED |
App Store Connect looks at that byte. If it says 4 or 6, the upload is rejected regardless of whether any pixel is actually transparent. That's why "but my screenshot has no transparency!" doesn't help: the file format says otherwise.
Where the alpha channel sneaks in
Almost every convenient export path writes RGBA (color type 6) by default:
- Figma and Sketch exports. Both write RGBA PNGs regardless of content.
- HTML canvas.
canvas.toBlob('image/png')andtoDataURLalways emit RGBA, so any screenshot pipeline built on a browser or Electron canvas produces rejected files. - Editing tools in between. A clean simulator capture that passes through Photoshop, Pixelmator, or a quick markup tool often comes out the other side as RGBA.
- Design templates with transparency. If your composition genuinely uses transparent regions, the export must be flattened onto a background before upload.
The fastest fix: in your browser, free
The Alpha Channel Fixer flattens your PNG and re-encodes it with a purpose-built encoder that writes color type 2 (RGB, no alpha), then parses its own output to prove the alpha channel is gone before you download. Your file never leaves your browser: no upload, no server, no account. Drop the rejected PNG, download the fixed one, re-upload to ASC.
Manual fixes on macOS
Preview (no install)
- Open the PNG in Preview.
- File → Export.
- Untick the Alpha checkbox and save.
Fine for one file; tedious for thirty screenshots across locales.
sips (built into macOS)
sips can convert to JPEG, which structurally cannot carry an alpha channel. ASC accepts JPEG screenshots:
sips -s format jpeg shot.png --out shot.jpg
Caveat: JPEG is lossy; crisp UI text can pick up compression artifacts.
ImageMagick (keeps PNG, batch-friendly)
magick shot.png -background black -alpha remove -alpha off shot-flat.png
# whole folder:
for f in *.png; do magick "$f" -background black -alpha remove -alpha off "flat-$f"; done
Swap black for whatever your composition's background color is; it only shows through where pixels were genuinely transparent.
In code (Core Graphics)
If you generate screenshots programmatically on Apple platforms, render into a bitmap context created without an alpha channel (CGImageAlphaInfo.noneSkipLast won't do for PNG export; draw into an opaque context and write RGB). The principle is the same everywhere: composite onto an opaque background, then encode a format that has no alpha channel to declare.
Verify before you re-upload
Don't trust the export dialog; check the file. Fast check with Python:
python3 -c "print('color type', open('shot.png','rb').read()[25])"
# 2 = RGB, good. 6 = RGBA, ASC will reject it.
Or drop the file into the free size checker, which reads the color type and validates the dimensions in the same pass.
Related
Never see this error again.
ScreenshotPunch generates App Store screenshots with editorial art direction, exported flat (color type 2) and correctly sized from the start. Coming soon.
About ScreenshotPunch