EPUB FixerKDP upload error scanner

EPUB error guide

OPF_048 package is missing unique-identifier

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

What the OPF_048 report should show.

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

Choose the next step from the identifier candidates.

OPF_048 is small to edit, but easy to repair incorrectly if the book contains several identifiers.

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.

Safe repair

There is one clear identifier.

Set package unique-identifier to the matching dc:identifier id and validate again for OPF_030 or metadata follow-up errors.

Manual decision

Several identifiers could be right.

Confirm whether the book should use the ISBN, UUID, retailer id, or draft id before editing content.opf.

3. Concrete path example

A typical OPF_048 metadata mismatch.

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

Decide whether OPF_048 has one clear identifier.

The content may display correctly in readers, but publishing validators need the package metadata to be explicit.

Scan first

The package pointer is missing.

Read the package opening tag and metadata identifiers together before editing either one.

Safe fix

One identifier clearly represents the publication.

Add unique-identifier on the package tag and point it to the existing dc:identifier id.

Stop

Multiple identifiers compete.

Do not let an automatic repair choose between ISBN, UUID, retailer, platform, or draft identifiers.

Start here

Start with the package tag, not the visible book metadata.

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.

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.

Can it be fixed automatically?

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.

What to check next

Open content.opf or package.opf and find the opening package tag near the top of the file.

What not to assume

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

Common OPF_048 situations.

The same error can come from a simple missing attribute or from messy publication metadata.

A UUID exists but the package does not point to it.

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.

Several identifiers are present.

The OPF contains an ISBN, a UUID, and a retailer or draft id.

Choose manually; do not let the tool guess.

Identifier text has no id attribute.

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.

A converter stripped package attributes.

Older conversion or metadata cleanup preserved visible metadata but removed unique-identifier.

Restore the package pointer and validate again.

The OPF_048 metadata error text

OPF_048: Package tag is missing its required unique-identifier attribute and value.

Where OPF_048 appears in KDP or EPUBCheck

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

OPF_048 is caused by a missing package-level pointer.

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

Find the package unique-identifier and the dc:identifier entries.

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.

  1. 1Open content.opf or package.opf and find the opening package tag near the top of the file.
  2. 2Check whether that package tag has a unique-identifier value.
  3. 3Look in the metadata section for dc:identifier entries and check whether each one has an id value.
  4. 4If there is one clear UUID or ISBN-style identifier, the package tag can point to that identifier id.
  5. 5If there are several possible identifiers, such as ISBN, UUID, retailer id, and draft id, stop and choose manually.
  6. 6Validate again after the change because OPF_030 can appear when the package points to an identifier id that does not exist.

Why KDP checks it

Why validators require a package unique identifier.

EPUB 3.3 package rules

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

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?

When OPF_048 can be repaired safely.

When automatic repair is safe

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.

When you need manual review

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 / after example

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?

Scan the OPF metadata before choosing an identifier.

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 scan

FAQ

Questions authors ask about OPF_048.

What does OPF-048 package missing unique-identifier mean?

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.

How is OPF-048 different from OPF-030?

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.

Can EPUB Fixer add a missing unique-identifier?

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.

Will OPF-048 affect KDP upload?

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.

Should I use ISBN or UUID for the unique identifier?

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.

Related EPUB error guides