No valid ASSETMAP or ASSETMAP.xml was found
This almost never means the DCP is broken. It usually means the tool is pointed at the wrong folder.
The message you saw
No valid ASSETMAP or ASSETMAP.xml was found.
Could not find ASSETMAP nor ASSETMAP.xml in '...'
No ASSETMAP or ASSETMAP.xml file was found.
The first two lines are what dcpomatic2_verify prints on the command line. The third is what the DCP-o-matic Player shows, which is the wording most people paste when they ask for help. All three describe one condition, MISSING_ASSETMAP in libdcp. Our browser check reports it as: this is not a DCP root.
What the ASSETMAP does
The ASSETMAP is the index at the top of a DCP. It maps each asset UUID to a relative file path, so a server can find the picture, sound, and subtitle files without guessing from filenames. Every valid package has exactly one.
SMPTE packages name it ASSETMAP.xml. Interop packages name it ASSETMAP with no extension. A verifier that accepts only one spelling will reject the other, which is why both names appear in the error text.
Why it goes missing
The most common cause is folder depth. If you select the folder containing your DCP rather than the DCP itself, the ASSETMAP sits one level down and the tool cannot see it. Selecting a reel subfolder produces the same message from the other direction.
The second cause is an incomplete copy. Drag a DCP to a drive, interrupt it, and the multi-gigabyte MXF files are usually what survive; the small XML files at the top are copied last by some tools and first by others. A package missing only its ASSETMAP looks nearly complete on disk.
The third is repackaging. Some delivery workflows zip a DCP, and some unzip tools create an extra wrapper folder named after the archive. The DCP is intact, one level deeper than anyone expects.
How to fix it
Open the folder you selected and look for a file called ASSETMAP.xml or ASSETMAP, alongside VOLINDEX, a packing list ending in _pkl.xml, and one or more MXF files. If you see instead a single folder, open it and select that.
If the ASSETMAP genuinely is not there anywhere, get a fresh copy from source rather than reconstructing one. Do not hand-write it: it carries the UUIDs and byte lengths of every asset, and a reconstructed ASSETMAP that disagrees with the packing list fails later and more confusingly than the missing file did.
Will it still play without one?
Often, yes. A working cinema engineer put it plainly on the Film-Tech forum in July 2024: many servers ingest a package without an ASSETMAP or a VOLINDEX quite happily, because those files carry nothing the server cannot work out for itself, and some will regenerate them on ingest.
So this is not the same class of problem as a failed hash. Treat it as a symptom rather than the disease. A structural file that did not arrive is reliable evidence that the copy was incomplete, and the things that went missing alongside it may matter a great deal more.
There is a second reason to fix it anyway. Whether a package plays is not the only question. Festivals and distributors run their own checking tools before anything reaches a projector, and a package that trips one of those gets sent back regardless of what a server would have done with it.