Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > E-Book Formats > ePub

Notices

Reply
 
Thread Tools Search this Thread
Old 08-04-2026, 09:54 AM   #151
Kayadelenium
Connoisseur
Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!
 
Posts: 53
Karma: 100000
Join Date: Jul 2026
Location: Planet Earth
Device: Kobo Forma
Quote:
Originally Posted by patrik View Post
Here is the complete book (scrambled).
Thank you — the scrambled book was exactly what was needed, and more than I asked for. It took about ten minutes to reproduce with it.

The short version: the difference isn't in your book, and it isn't a check I'm missing.

Your book contains 374 actual epub:type attributes. I report 335 of them. EPUBCheck reports 3339.

I'd rather show that than assert it. Take text/part0020.html and cut it to its first 14 lines: both tools report 3, and the file has 3. Cut it to 20 lines instead — the six extra lines are plain <p class="paranoindent"> paragraphs with no epub:type on them at all — and EPUBCheck reports 9. Line 15 in that file has zero epub:type, and the position EPUBCheck gives for its error there (15,325) is the closing </p>.

It starts once an HTML5 element that EPUB 2 doesn't allow has appeared — in your book a <section> and an empty <header> near the top of each file. After that, one further message per following element, all labelled epub:type.

I'm not going to tell you whose defect that is. EPUBCheck's verdict is right — the book genuinely is invalid, and at each of those points the content model genuinely doesn't match. Whether the message should name an attribute that isn't there, and whether that belongs to EPUBCheck or the validator underneath it, I haven't established and don't want to guess at in public.

Everything else in the two outputs matches exactly: 75 element errors to 75, 15 id datatype errors to 15, 2 playOrder to 2.

The 39 between my 335 and the real 374 are one <section epub:type="chapter"> per file. I report that <section> as a disallowed element and don't then also report its attribute — and neither does EPUBCheck, which gives 0 for that case in isolation.

One real gap on my side, from your book: page_styles.css has src: url(fonts/00001.ttf) and no such file exists. EPUBCheck flags it, I say nothing. I wrote the fix, it broke three cases in EPUBCheck's own test suite, and I backed it out rather than trade one gap for three. It's on the list properly now.
Kayadelenium is offline   Reply With Quote
Old 08-04-2026, 01:28 PM   #152
DNSB
Bibliophagist
DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.
 
DNSB's Avatar
 
Posts: 53,612
Karma: 181843001
Join Date: Jul 2010
Location: Vancouver
Device: Kobo Sage, Libra Colour, Lenovo M8 FHD, Paperwhite 4, Tolino epos
For what it may be worth, most of the issues in the scrambled ePub are from using calibre's convert-ebook function to convert an azw3 file created by Amazon from a submitted ePub3 original into an ePub2. The current calibre version does a bit better job (calibre 6.3.0 is a bit long in the tooth) but not that much of an improvement. KindleUnpack comes a lot closer to the original ePub.
DNSB is online now   Reply With Quote
Old 08-04-2026, 02:11 PM   #153
Kayadelenium
Connoisseur
Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!
 
Posts: 53
Karma: 100000
Join Date: Jul 2026
Location: Planet Earth
Device: Kobo Forma
That fits the file exactly: the package declares version="2.0" while the content is still EPUB 3 — <section>, <header>, and epub:type values from the EPUB 3 structural semantics vocabulary. The conversion moved the package version down and left the markup where it was, which is why both tools have so much to say about it.

Thanks — useful to know it came through azw3.

epubveri 0.9.6 Out now, and three of it came from this thread:

- A @font-face src pointing at a font the book doesn't contain is now reported (RSC-007). From patrik's book above — epubcheck flagged it, I said nothing.
- --advisory now flags a CSS type selector that names no real element (JSWolf, post #92): h4a { } is valid CSS that matches nothing. Advisory only, never affects the verdict — across 84 real books it produces one finding.
- <menu> is no longer rejected in EPUB 3 — a false positive of mine; HTML5 has it and epubcheck accepts it. It stays an error in EPUB 2, which genuinely doesn't include it.

Also a proper message for a <rootfile> whose full-path is missing or empty, instead of only "no usable rootfile found".

Coverage is now 191 of 194 live epubcheck checks (~98%). The three that remain are deliberate scope decisions, all listed in docs/COVERAGE.md.

Binaries for 8 platforms: https://github.com/veripublica/epubveri/releases/latest
Browser demo, nothing to install, the file never leaves your machine: https://veripublica.github.io/epubveri/

If epubveri reports something on a book epubcheck accepts, please post it — ideally with both outputs as plain text for the same file.

Last edited by Kayadelenium; 08-04-2026 at 02:15 PM.
Kayadelenium is offline   Reply With Quote
Old 08-04-2026, 02:57 PM   #154
JSWolf
Resident Curmudgeon
JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.
 
JSWolf's Avatar
 
Posts: 84,438
Karma: 153744815
Join Date: Nov 2006
Location: Roslindale, Massachusetts
Device: Kobo Libra 2, Kobo Aura H2O, PRS-650, PRS-T1, nook STR, PW3
Quote:
Originally Posted by patrik View Post
Here is the complete book (scrambled).
What OS are you using? calibre 6.3.0 is rather old and you shroud upgrade if possible.
JSWolf is offline   Reply With Quote
Old 08-04-2026, 05:23 PM   #155
DiapDealer
Grand Sorcerer
DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.
 
DiapDealer's Avatar
 
Posts: 29,641
Karma: 212299010
Join Date: Jan 2010
Device: Nexus 7, Kindle Fire HD
Quote:
Originally Posted by JSWolf View Post
What OS are you using? calibre 6.3.0 is rather old and you shroud upgrade if possible.
Irrelevant to the task at hand in this thread.
DiapDealer is online now   Reply With Quote
Old 08-05-2026, 04:12 AM   #156
JSWolf
Resident Curmudgeon
JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.
 
JSWolf's Avatar
 
Posts: 84,438
Karma: 153744815
Join Date: Nov 2006
Location: Roslindale, Massachusetts
Device: Kobo Libra 2, Kobo Aura H2O, PRS-650, PRS-T1, nook STR, PW3
Quote:
Originally Posted by DiapDealer View Post
Irrelevant to the task at hand in this thread.
Better code, less errors with a newer version of calibre.
JSWolf is offline   Reply With Quote
Old 08-05-2026, 06:22 AM   #157
Kayadelenium
Connoisseur
Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!
 
Posts: 53
Karma: 100000
Join Date: Jul 2026
Location: Planet Earth
Device: Kobo Forma
epubveri 0.9.7 is out

One fix, and it changes no verdicts: stray text in an EPUB 2 body is now reported at the text, not at the element around it. Before, sixteen loose runs in one file all pointed at the same line and column — no way to tell them apart or jump to one. Same findings, same counts; only the positions are right.

Downloads (8 platforms): https://github.com/veripublica/epubv...ses/tag/v0.9.7
Browser demo: https://veripublica.github.io/epubveri/

As always: if our output disagrees with epubcheck on a book, posting both outputs as plain text is the most useful thing you can do.
Kayadelenium is offline   Reply With Quote
Old 08-06-2026, 02:43 AM   #158
Jellby
frumious Bandersnatch
Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.Jellby ought to be getting tired of karma fortunes by now.
 
Jellby's Avatar
 
Posts: 7,594
Karma: 22000001
Join Date: Jan 2008
Location: Spaniard in Germany
Device: Cybook Orizon, Kobo Aura
Quote:
Originally Posted by JSWolf View Post
Better code, less errors with a newer version of calibre.
Perhaps, but I believe the "task at hand" is not "how to get a good epub conversion" but "how to flag all the issues in a defective conversion".
Jellby is offline   Reply With Quote
Old 08-06-2026, 06:16 AM   #159
DiapDealer
Grand Sorcerer
DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.DiapDealer ought to be getting tired of karma fortunes by now.
 
DiapDealer's Avatar
 
Posts: 29,641
Karma: 212299010
Join Date: Jan 2010
Device: Nexus 7, Kindle Fire HD
Quote:
Originally Posted by JSWolf View Post
Better code, less errors with a newer version of calibre.
Less errors won't help fine tune new error-checking software.
DiapDealer is online now   Reply With Quote
Old 08-06-2026, 07:31 AM   #160
Kayadelenium
Connoisseur
Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!
 
Posts: 53
Karma: 100000
Join Date: Jul 2026
Location: Planet Earth
Device: Kobo Forma
epubveri 0.9.8

This one came out of running epubveri and EPUBCheck over the same 104 books and diffing them by message ID. Most of it is us reporting too much.
  • A misplaced element no longer drags its contents down with it. If an element was rejected as "not allowed here", everything inside it was then checked against the parent's rules — so nested <span>s inside one misplaced <span> each got their own error. One book: 1259 errors from us, 661 from EPUBCheck. It is now 631. The same fix stopped us missing things, too — a <div> inside that <span> is legal where the span was rejected and illegal inside a span, so nobody reported it.
  • An empty <dc:identifier/> drew three errors on top of the real one. EPUBCheck reports one. So do we now.
  • Message IDs now match EPUBCheck's exactly. It has lettered IDs — HTM_060b, OPF-004a through f, OPF-007a/b/c, RSC-006b, RSC-007w — and we were emitting the bare code, or in one case an ID that does not exist at all. If you filter output by ID, this matters.
  • Two of those turned out to be real gaps rather than renames: a prefix that is not a valid name was never checked, and a remote resource nothing references was not reported at all.

One correction worth making in public: our published coverage figure was measured against a denominator that was missing 17 of EPUBCheck's message IDs, so it was too flattering. Fixed, the checks behind it implemented, and it now reads 207 of 210 — but the old number was wrong, not the new one.

104 real books, 100 of them now agree with EPUBCheck on the exact set of message IDs.

Downloads (8 platforms): https://github.com/veripublica/epubveri/releases
Try it in the browser: https://veripublica.github.io/epubveri/

If you hit a disagreement, the most useful thing you can send is both tools' output as plain text for the same book — that is what turned the last few of these into fixes.
Kayadelenium is offline   Reply With Quote
Old 08-07-2026, 01:06 AM   #161
Doitsu
Grand Sorcerer
Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.
 
Doitsu's Avatar
 
Posts: 5,870
Karma: 24222221
Join Date: Dec 2010
Device: Kindle PW2
@Kayadelenium

I noticed several differences when checking this very old epub3 sample file.

See attached logs for details.
Attached Files
File Type: txt epubveri_log.txt (4.8 KB, 19 views)
File Type: txt epubcheck_log.txt (2.9 KB, 20 views)
Doitsu is offline   Reply With Quote
Old 08-07-2026, 05:26 AM   #162
Kayadelenium
Connoisseur
Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!
 
Posts: 53
Karma: 100000
Join Date: Jul 2026
Location: Planet Earth
Device: Kobo Forma
epubveri 0.9.9 is out

Doitsu — thank you, those two logs were worth more than any description. All three differences were mine, and all three are fixed.
  • epub:trigger is a real EPUB 3 element and I did not have it at all. Each of the six occurrences drew five errors from me — the element, its action and ref, and two more for the ev: namespace — where EPUBCheck draws one deprecation warning. It is now transcribed from EPUBCheck's own epub-trigger.rnc, and the deprecation warning (which was always right) is unchanged.
  • <video> and <audio> are transparent. The ordinary fallback shape — sources, then a <div> saying "your reading system does not support this" — was rejected, because I had only modelled the phrasing variant of their content model, never the flow one.
  • Which prefixes count as "reserved" depends on the document. EPUBCheck reserves one set in the package document, a different one in a content document, and none at all in a Media Overlay. I used the union everywhere, so the sample's epubrefix="media: ..." on a content document drew a warning it should not.

On that file: 38 errors before, 2 after — the same 2 EPUBCheck reports.

Also in 0.9.9, and the larger change: EPUB 2 documents no longer accept 195 global attributes XHTML 1.1 does not have — the event handlers, RDFa, microdata, ITS, ARIA and role. OPS 2.0.1 was finalised in 2010 and WAI-ARIA only became a W3C Recommendation in 2014, so the EPUB 2 schema could never have carried them. Each one was checked against EPUBCheck individually, and two (tabindex, xml:space) turned out to belong to specific elements rather than to everything, so they moved rather than disappeared.

Since the sample is CC-licensed, it is now part of the test library here — the only book in it with epub:trigger, a video fallback and Media Overlays, so this particular class of mistake now has a permanent guard.

Downloads (8 platforms): https://github.com/veripublica/epubveri/releases
Try it in the browser: https://veripublica.github.io/epubveri/

Both tools' output as plain text for the same book remains the single most useful thing anyone can send — it is what turned this one into three fixes rather than a guess.
Kayadelenium is offline   Reply With Quote
Old 08-07-2026, 10:16 AM   #163
Doitsu
Grand Sorcerer
Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.Doitsu ought to be getting tired of karma fortunes by now.
 
Doitsu's Avatar
 
Posts: 5,870
Karma: 24222221
Join Date: Dec 2010
Device: Kindle PW2
@Kayadelenium:

One more issue where epubveri and EPUBCheck differ:

OPF:

<dc:title id="title">Main title</dc:title>
<meta refines="title" property="title-type">main</meta>


epubveri:

WARNING RSC-017: @refines should use a fragment identifier pointing to its manifest item

EPUBCheck:

ERROR(RSC-005): Error while parsing file: Property "title-type" must refine a "title" property.
Doitsu is offline   Reply With Quote
Old 08-07-2026, 12:29 PM   #164
Kayadelenium
Connoisseur
Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!Kayadelenium rocks like Gibraltar!
 
Posts: 53
Karma: 100000
Join Date: Jul 2026
Location: Planet Earth
Device: Kobo Forma
epubveri 0.9.10

Doitsu — that one was worse than it looked, and it turned out to be two mistakes rather than one. Thank you.
  • The missing # is an error, not a warning. EPUBCheck's Schematron compares @refines against concat('#', @id), so a bare id fails its "must refine a title property" assertion. I had no such check at all, which meant the verdict differed and not just the wording — your file was INVALID to EPUBCheck and VALID to me. Seven of those assertions are now in: title-type, authority, term, identifier-type, role, collection-type, source-of.
  • And the warning I did give was too broad. It fired on any @refines without a #. EPUBCheck only reports that when the value resolves to a real manifest item's href — the case where someone names a file instead of an id. So a plain missing # drew a warning EPUBCheck never gives. It is now narrowed to that case, and the message names the item id it should have pointed at, as EPUBCheck's does.

Four shapes checked against EPUBCheck one at a time — bare id with a rule, the correct #id form, a bare id on a property with no such rule, and a real manifest href — all four now identical.

Worth admitting how the second one was found: my first probe used the wrong shape, so I briefly concluded EPUBCheck had no such check and was about to delete my warning outright. What corrected me was EPUBCheck's own test fixture, which is named metadata-refines-not-a-fragment-warning.opf and shows exactly which shape it is for.

Downloads (8 platforms): https://github.com/veripublica/epubveri/releases
Try it in the browser: https://veripublica.github.io/epubveri/

Two reports, two releases, five real bugs between them. Please keep them coming — the pattern that keeps working is a short description plus both tools' output for the same file.
Kayadelenium is offline   Reply With Quote
Old 08-07-2026, 01:56 PM   #165
JSWolf
Resident Curmudgeon
JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.
 
JSWolf's Avatar
 
Posts: 84,438
Karma: 153744815
Join Date: Nov 2006
Location: Roslindale, Massachusetts
Device: Kobo Libra 2, Kobo Aura H2O, PRS-650, PRS-T1, nook STR, PW3
I've more errors even if it's just a mistake in the column number.
Attached Files
File Type: txt epubveri.txt (10.9 KB, 15 views)
File Type: txt epubcheck.txt (32.6 KB, 15 views)
JSWolf is offline   Reply With Quote
Reply


Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
EPUBCheck v4.2.6 jhowell ePub 0 06-30-2021 03:49 PM
EPUBCheck v4.2.5 jhowell ePub 0 03-23-2021 09:45 AM
EPUBCheck v4.2.4 jhowell ePub 3 06-24-2020 09:51 AM
EPUBCheck v4.1.1 Doitsu ePub 2 03-18-2019 10:39 AM
Web-based epubcheck upgraded to epubcheck 1.0.5 kjk ePub 4 02-09-2010 09:53 PM


All times are GMT -4. The time now is 01:15 PM.


MobileRead.com is a privately owned, operated and funded community.