Scan first
You have not seen the OPF metadata yet.
List the package tag and every dc:identifier entry before adding a unique-identifier attribute.
EPUB error guide
How to understand the OPF_048 package missing unique-identifier error, what to check in EPUB metadata, and when the identifier can be repaired safely.
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
Set package unique-identifier to the matching dc:identifier id and 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
Add unique-identifier on the package tag and point it to the existing dc:identifier id.
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.