You open a folder of album art, hit play in Windows Media Player, or let a media app rebuild its thumbnail cache — and boom: NS_E_WMP_PNG_UNSUPPORTED_BAD_CRC (0XC00D102D). It usually shows up when WMP touches a PNG to pull metadata, generate a thumbnail, or render album art. The file might look fine in Explorer, but the moment WMP reads the actual PNG chunks, it bails.
I've seen this most often with cover art people grabbed from shady download sites or pulled off old CDs and then renamed. Half-downloaded files are a classic trigger — the browser wrote the header, started the IDAT chunks, then the connection died and you got a truncated PNG that previews in some viewers but fails CRC validation.
What's actually going wrong
Every PNG chunk carries a CRC32 checksum. It's a 4-byte value computed over the chunk type and data. When a decoder reads a chunk, it recomputes the CRC and compares. Mismatch = reject the file. That's it. WMP is strict about this. Your thumbnail cache and some image viewers are not, which is why the file "works" until it doesn't.
Bad CRC doesn't mean the image is unusable — it means at least one chunk got corrupted in transit or on disk. Common causes:
- Interrupted download (partial file)
- Bad sectors or a dying drive on the folder where the PNG lives
- An editor that wrote the file and crashed before flushing the final chunk
- Files pushed over a flaky network share or SMB mount
- Renamed a .bin or .webp to .png without converting
The last one trips people up constantly. WMP sees the extension, tries to decode as PNG, and chokes on the bad structure.
The fix
- Find the offending file. WMP won't tell you which PNG it choked on in the error dialog. Check the folder you just added to the library. If you can't narrow it down, use PowerShell to scan every PNG in a path and validate:
Get-ChildItem -Path 'C:\Users\You\Music' -Recurse -Filter *.png | ForEach-Object {
$bytes = [System.IO.File]::ReadAllBytes($_.FullName)
# PNG signature check
if ($bytes[0] -ne 0x89 -or $bytes[1] -ne 0x50 -or $bytes[2] -ne 0x4E -or $bytes[3] -ne 0x47) {
Write-Host "$($_.FullName) - not a real PNG" -ForegroundColor Red
}
}
This catches the renamed-file case fast. For actual CRC validation, drop pngcheck somewhere and run it against the folder:
pngcheck -v *.png
It'll print the CRC status for every chunk. Any file it flags as CRC error is your culprit.
- Replace or repair the file. Don't waste time with online "PNG repair" sites — most of them just re-encode and strip metadata, and half of them harvest the file. If you have the original source (a CD rip, a download page, an email), just re-grab it. That's the real fix.
If you don't have the original, open the file in GIMP, IrfanView, or even Paint and re-save it as PNG. Any of those tools will rebuild the chunks with correct CRCs. GIMP's File → Export As is the cleanest option because it re-encodes from scratch.
- Clear WMP's thumbnail and media library cache. Even after you fix the file, WMP may keep serving the cached failure. Kill it, then wipe:
%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db
%LOCALAPPDATA%\Microsoft\Media Player\
Delete the contents of that Media Player folder. Then rebuild the library from WMP: Organize → Manage libraries → Music → Rebuild. It's slow but it clears the poisoned entries.
- Run a disk check on the folder's drive. If you had a bad PNG show up out of nowhere — not a fresh download — that's a red flag. Bad sectors corrupt data silently. On the drive holding the PNGs:
chkdsk D: /scan
If it reports errors, back up that drive before anything else. CRCs going bad on existing files is how drives start to die.
- Point WMP away from the bad folder. Temporary workaround while you sort things out: Organize → Manage libraries → Music, remove the folder that contains the broken PNG. WMP will stop scanning it and the error goes away.
If it still fails
Check these before you tear your hair out:
- Is the file actually a PNG? Open it in a hex editor. First 8 bytes must be
89 50 4E 47 0D 0A 1A 0A. If they're not, it's a renamed file and no amount of "repair" will help. - Run
sfc /scannow. Occasionally the WMP codec DLLs themselves get corrupted and reject valid PNGs. Rare, but it happens on machines that have been through a botched Windows update. - Try a different media app. VLC, foobar2000, and MusicBee are far more forgiving of PNG quirks. If they play fine and only WMP fails, the problem is WMP's decoder, not the file.
- Check for a third-party codec pack. K-Lite and similar packs sometimes install WMP filter replacements that break PNG handling. Uninstall them, reboot, retry. Skip codec packs in general — the stock Windows codecs are fine for PNG.
- Look at the event log. Event Viewer → Windows Logs → Application. WMP logs the full file path on decode failures even when the UI dialog hides it. Filter by source Windows Media Player.
One last thing: if the same PNG keeps coming back from a sync folder (OneDrive, Dropbox), the corrupted copy is on the server. Fixing it locally just means it gets re-synced as broken next time. Delete from the cloud copy first, then re-upload a clean version.