What metadata is and where it lives
Metadata is the information about a book rather than the book itself. In an EPUB it sits in one place, the metadata block of the package document (the .opf file). Reading apps read it when you import a book, and use it to show the title in your library, to sort by author, to group a series and to choose the dictionary and hyphenation language.
The fields
| Field | Required? | Notes |
|---|---|---|
Title (dc:title) | Yes | What appears in your library. |
Language (dc:language) | Yes | A BCP 47 code such as en, ar, fr-CA. |
Identifier (dc:identifier) | Yes | ISBN, UUID or URL. Apps may use it to match reading progress, so avoid changing it. |
Creator (dc:creator) | No | One entry per author. |
| Publisher, date, description, subjects, rights | No | Used for search and display. |
Modified (dcterms:modified) | EPUB 3 only | A timestamp. Updated whenever you edit. |
Editing with PDFSwift
- Open the EPUB Metadata Editor and choose your book. The form fills in with its current values.
- Change what you need. Put several authors or subjects on separate lines.
- Press Save edited EPUB. The tool writes the changes into the package file, builds the new archive and validates it.
- Download the edited copy and import it into your reading app.
The edit is made as a text change to the package file. All the other files in the archive are copied exactly as they were; the tool’s tests compare them byte for byte. Everything runs in your browser.
Common fixes
- Author is “Unknown” or a file name. Replace it with the real name. Use one line per author so each is listed separately.
- The title has junk in it. Remove source names, brackets and extensions. A clean title sorts and searches better.
- Wrong language. A missing or incorrect language affects hyphenation, dictionary lookup and text-to-speech voice. Set the real one.
- Series. Series information is stored in custom fields that vary by tool. This editor leaves them untouched rather than rewrite them.
When your app does not show the change
Most reading apps copy metadata into their own library database at import time. After editing, remove the old copy from the app and import the new file. Some apps, such as library managers, have their own metadata editor; changes there do not alter the EPUB file unless you tell the program to write them back.
What not to change
The identifier is how some apps recognise a book across devices. Changing it can make an app treat the file as a different book and lose your highlights or position. If you must change it, do it in a library manager that handles the consequences.
After editing, the validator will confirm that the book still has all required fields. To change the cover as well, use the cover editor.
See the change in the file itself
Because the editor changes only the package file, the difference is easy to inspect. A before and after of a small book:
<!-- before -->
<dc:title>book (1) [source.example]</dc:title>
<dc:creator>unknown</dc:creator>
<!-- after -->
<dc:title>The Test Book</dc:title>
<dc:creator>Ada Tester</dc:creator>
<meta property="dcterms:modified">2026-10-09T10:12:00Z</meta>
If you want to be certain nothing else changed, extract both EPUBs with an archive tool and compare the two folders with a diff tool. Only the .opf file should differ.
Language codes you are likely to need
| Language | Code | Language | Code |
|---|---|---|---|
| English | en | Arabic | ar |
| French | fr | Spanish | es |
| German | de | Portuguese (Brazil) | pt-BR |
| Persian | fa | Hebrew | he |
| Chinese (Simplified) | zh-Hans | Russian | ru |
Multiple languages in one book
A book has one primary language in its metadata. Passages in another language are marked inside the chapter files with a lang attribute. The metadata editor sets the primary one; it does not edit the chapters.
Dates
Use a year (2019), a year and month (2019-04) or a full date (2019-04-23). The validator reports a notice for other forms, which most reading apps still accept but may sort unpredictably.
Checking your work
- Reopen the edited file in the editor and confirm each field shows what you typed.
- Run the validator on it.
- Import it into your reading app and check the library entry.