Match the report title.
Look for "OPF package unique-identifier is missing" or the closest title listed above. If the platform wording is different, keep the original EPUBCheck, KDP, or Kindle Previewer message before choosing a fix.
Use this when the OPF package tag has no unique-identifier. Check whether one real dc:identifier should identify the book before you edit the metadata.
The scan shows affected paths and repair decisions. It does not show manuscript text.
Not sure this kind of EPUB should be scanned here? Check unsupported or review-first EPUB cases.
Scan report titles
Read the scan report
Use the report label, affected file, and repair decision together. A matching title alone is not enough if the file path or EPUB structure points to a different problem.
Look for "OPF package unique-identifier is missing" or the closest title listed above. If the platform wording is different, keep the original EPUBCheck, KDP, or Kindle Previewer message before choosing a fix.
Use the report's Affected area, Source file, Target file, or Problem type rows before editing content.opf, nav.xhtml, toc.ncx, XHTML, CSS, or image paths.
Repairable means EPUB Fixer found one clear structural change. Needs review or Not supported means use the named file, source project, or platform step instead of guessing.
Repair summary
Copy the report summary instead of rebuilding the fix from memory. A useful repair note keeps the source file, target file or field, original error, repair decision, and next step together.
1. Example report output
The report should show whether the OPF has no package pointer, and whether one metadata identifier can safely satisfy it.
EPUBCheck message
ERROR(OPF-048): OEBPS/content.opf(-1,-1): Package is missing unique-identifier.
KDP / Previewer wording
The EPUB package metadata is invalid or incomplete.
EPUB Fixer report
package tag has no unique-identifier. metadata contains one dc:identifier with id="pub-id" and value "urn:uuid:...".
Do this next
Point the package to pub-id only if it is the intended publication identifier.
Do not do this
Do not pick between ISBN, UUID, retailer, and draft identifiers automatically when several plausible values exist.
Safe repair is possible when the EPUB contains one clear identifier. If there are competing identifiers, the correct answer comes from the publishing workflow, not the validator.
2. Next step
OPF_048 is small to edit, but easy to repair incorrectly if the book contains several identifiers.
Scan first
List the package tag and every dc:identifier entry before adding a unique-identifier attribute.
Safe repair
OPF_048 means the package tag has no unique-identifier pointer at all. Set package unique-identifier to the matching dc:identifier id only when the report shows one clear publication identifier, then validate again for OPF_030 or metadata follow-up errors.
Manual decision
Confirm whether the book should use the ISBN, UUID, retailer id, or draft id before editing content.opf.
3. Concrete path example
The package tag is missing the pointer even though metadata may already contain an identifier.
EPUBCheck: ERROR(OPF-048): OEBPS/content.opf(-1,-1): Package is missing unique-identifier. Report: package: <package version="3.0" ...> metadata: <dc:identifier id="pub-id">urn:uuid:...</dc:identifier> Fix decision: safe repair if pub-id is the single publication identifier After: <package unique-identifier="pub-id" ...>
If the report also finds ISBN, uuid, retailer-id, and draft-id, do not choose one automatically.
Quick decision
The content may display correctly in readers, but publishing validators need the package metadata to be explicit.
Scan first
Read the package opening tag and metadata identifiers together before editing either one.
Safe fix
In content.opf, the opening package tag needs unique-identifier="..." and that value must match the id on an existing dc:identifier. Add the package pointer only when the report shows one clear identifier to use; if several ISBN, UUID, retailer, or draft ids are present, choose manually before editing.
Stop
Do not let an automatic repair choose between ISBN, UUID, retailer, platform, or draft identifiers.
Start here
OPF_048 means the package element does not say which metadata identifier is the publication identifier. The title, author, and ISBN text can look fine while this link is still missing.
The EPUB may contain metadata, chapters, and images, but the OPF package file does not point to the identifier that represents the publication. Validators need that link so the package can consistently identify the book.
EPUB Fixer can repair this when there is one clear dc:identifier that should be used as the package identifier, such as a single UUID-style identifier or a single existing metadata identifier created by the export tool. The repair should add the package unique-identifier attribute and point it to the matching dc:identifier id.
Open content.opf or package.opf and find the opening package tag near the top of the file.
Do not choose between conflicting ISBN, UUID, retailer, draft, or platform identifiers automatically. If the metadata contains several plausible identifiers, the correct value is an editorial or publishing decision, not a safe automatic fix.
Common situations
The same error can come from a simple missing attribute or from messy publication metadata.
The metadata contains one clear dc:identifier, but the package tag has no unique-identifier attribute.
Point the package to that id if it is the intended publication identifier.
The OPF contains an ISBN, a UUID, and a retailer or draft id.
Choose manually; do not let the tool guess.
A dc:identifier value exists, but the package cannot point to it because it has no id.
Add an id only when that identifier is clearly the intended one.
Older conversion or metadata cleanup preserved visible metadata but removed unique-identifier.
Restore the package pointer and validate again.
OPF_048: Package tag is missing its required unique-identifier attribute and value.
EPUBCheck, Kindle Previewer, or KDP reads the OPF package file and finds that the package element does not declare which metadata identifier should be treated as the book's unique identifier.
What it means
The EPUB may contain metadata, chapters, and images, but the OPF package file does not point to the identifier that represents the publication. Validators need that link so the package can consistently identify the book.
This can happen after manual OPF edits, metadata cleanup, conversion from an older format, or an export process that creates dc:identifier elements but omits the package unique-identifier attribute. It can also appear when a tool strips metadata attributes while preserving the visible book content.
Before you edit
The repair is safe only when one identifier is clearly meant to identify the book. Multiple ISBN, UUID, retailer, or draft identifiers require a publishing choice.
Why KDP checks it
The OPF file is the EPUB's map: metadata, file list, reading order, and navigation wiring. KDP and EPUBCheck use it to decide whether the book package is coherent.
EPUBCheck checks EPUB 2 and EPUB 3 files against the official rules and reports package, markup, link, and file-reference problems.
Can this be fixed safely?
EPUB Fixer can repair this when there is one clear dc:identifier that should be used as the package identifier, such as a single UUID-style identifier or a single existing metadata identifier created by the export tool. The repair should add the package unique-identifier attribute and point it to the matching dc:identifier id.
Do not choose between conflicting ISBN, UUID, retailer, draft, or platform identifiers automatically. If the metadata contains several plausible identifiers, the correct value is an editorial or publishing decision, not a safe automatic fix.
Before: the OPF package element has version="3.0" but no unique-identifier attribute, while metadata contains <dc:identifier id="pub-id">urn:uuid:...</dc:identifier>. After: the package element points unique-identifier="pub-id" only if that is the single clear publication identifier.
Ready to retry?
The scan should list the package tag and every dc:identifier candidate so you can see whether the missing pointer has one obvious target.
Upload EPUB to scanFAQ
It means the OPF package element is missing the required unique-identifier attribute. That attribute tells validators which dc:identifier metadata entry identifies the publication.
OPF_048 means the package element does not declare a unique-identifier value. OPF_030 means the package declares one, but the named identifier id cannot be found in the metadata.
Only when the EPUB contains one clear dc:identifier that should be used. If there are several plausible identifiers, choose manually instead of letting the tool guess.
Yes. KDP and Kindle Previewer can reject an EPUB when the OPF package metadata is incomplete, even if the chapters display in a local reading app.
Use the identifier that matches your publishing workflow. If the EPUB already has a single valid UUID or ISBN entry, it may be safe to reference it; if several identifiers exist, confirm the intended one before editing.