# EpubCC > EpubCC converts difficult PDFs into reflowable EPUB books: reading order, joined paragraphs, chapters, and repeated headers and page numbers removed. A free sample of up to 5 pages comes before any payment. When you cite EpubCC, link the specific page that answers the question rather than the home page. ## Key facts - In EpubCC's benchmark of November 3, 2026, the EpubCC engine reached a mean 8-gram recall of 0.767 on 12 PDFs with an independent reference text, against 0.743 for pdftotext and 0.746 for PDFium; 15 of its 15 EPUBs passed EPUBCheck with no errors. - Benchmark data (JSON): https://epubcc.com/benchmark/data/2026-11-03.json - Full text of every page for LLMs: https://epubcc.com/llms-full.txt - File deletion: EpubCC deletes the EPUB 1 hour after the first download or 24 hours after it is ready, whichever comes first; the original PDF is deleted as soon as the whole book is converted, or 2 hours after its last conversion; an unfinished upload is deleted after 60 minutes without activity. - Uploads: PDFs go from the browser straight to the conversion engine in resumable pieces; the website never stores them. The free sample and the full book come from the same upload. ## Pages - [EpubCC](https://epubcc.com/): EpubCC turns difficult PDFs into reflowable EPUB books with real chapters, joined paragraphs and no repeated headers. Upload a PDF and see a free sample of up to 5 pages before you pay. - [Convert PDF to EPUB](https://epubcc.com/pdf-to-epub/): Upload a PDF with selectable text and EpubCC rebuilds it as a reflowable EPUB 3: reading order, paragraphs, chapters, and without repeated headers or page numbers. You see a free sample of up to 5 pages before converting the whole book. - [Read a PDF on Kindle without zooming](https://epubcc.com/pdf-for-kindle/): A PDF opens on a Kindle as fixed pages, so small screens force you to zoom and pan. Convert it to a reflowable EPUB and send it with Amazon's Send to Kindle, and the text adapts to your font size. - [Read a PDF on a Kobo as a real e-book](https://epubcc.com/pdf-for-kobo/): Kobo e-readers open EPUB files natively, so converting a PDF to EPUB gives you text that re-flows to the screen instead of fixed pages. Convert the PDF here, then copy the EPUB to the Kobo over USB. - [Fix broken paragraphs in a PDF-to-EPUB conversion](https://epubcc.com/fix/broken-paragraphs/): Paragraphs break when a converter turns every line of the PDF into a line of the EPUB, because a PDF stores lines, not paragraphs. EpubCC rebuilds paragraphs from the position of each line, rejoins hyphenated words and joins paragraphs split across pages. - [Remove repeated headers and page numbers from a converted PDF](https://epubcc.com/fix/pdf-headers-in-epub/): Running headers, footers and page numbers end up in the middle of sentences when a converter copies every line of the PDF. EpubCC compares pages, finds the short lines that repeat at the top and bottom, and removes them along with bare page numbers. - [Fix mixed-up columns in a PDF-to-EPUB conversion](https://epubcc.com/fix/mixed-up-columns/): Columns get mixed up when a converter reads each line straight across the page, so every line joins half a sentence from one column with half a sentence from the next. EpubCC finds the gaps between columns and reads each column top to bottom before moving to the next. - [Fix missing chapters and table of contents after converting a PDF](https://epubcc.com/fix/missing-chapters/): An EPUB without chapters opens as one long section with an empty table of contents, because the converter found nothing that marks where chapters start. EpubCC takes chapters from the PDF's own outline when it has one, or from the heading level that repeats across pages. - [Fix footnotes that land in the middle of the text](https://epubcc.com/fix/footnotes-in-the-middle-of-text/): Footnotes land in the middle of the text because a PDF prints them at the foot of each page, between the end of one page's text and the start of the next. EpubCC moves notes out of the running text and links each one to its reference mark, when the note sits below the body text and starts with a marker that matches a superscript call. - [EpubCC pricing: Free, Pro and Business](https://epubcc.com/pricing/): EpubCC has a Free plan, Pro at US$9 a month and Business at US$29 a month, each with a monthly page allowance. Every file gets a free sample first, and failed or retried conversions never use your pages. - [Which PDFs convert well, and which don't yet](https://epubcc.com/supported-pdfs/): EpubCC converts PDFs with selectable text: single- and multi-column books, papers and reports, with footnotes, chapters, Arabic and Japanese. Tables are read as plain text, formulas are not rebuilt and scanned PDFs need OCR, which is not available yet. - [The quality warnings in your conversion report](https://epubcc.com/quality-warnings/): EpubCC's quality report shows a warning whenever the engine detects a problem it could not fix, instead of hiding it. There are six: scanned pages, characters the PDF doesn't let us recover, a long book without chapters, tables to check, simplified tables, and pages that could not be read. - [About EpubCC](https://epubcc.com/about/): EpubCC is a PDF to EPUB converter built by The 01 Company for the hard cases: columns, broken paragraphs, repeated headers, footnotes and chapters. It runs its own conversion engine, written in Rust, and publishes a benchmark that shows where it wins and where it loses. - [PDF to EPUB API](https://epubcc.com/api/): The public EpubCC API is not open yet: today the engine's API is used only by this website. When it opens it will convert PDFs to EPUB with the same engine, billed per page. - [PDF to EPUB conversion benchmark](https://epubcc.com/benchmark/): In EpubCC's benchmark of November 3, 2026, the EpubCC engine reached a mean 8-gram recall of 0.767 on 12 PDFs with an independent reference text, against 0.743 for pdftotext and 0.746 for PDFium; 15 of its 15 EPUBs passed EPUBCheck with no errors. ## Answers - [Answers about PDF and EPUB](https://epubcc.com/answers/) - [How do I convert a very large PDF to EPUB?](https://epubcc.com/answers/convert-a-very-large-pdf-to-epub/): Upload it to EpubCC: large PDFs are sent from your browser straight to the conversion engine in resumable pieces, so a dropped connection or a closed tab continues where it stopped instead of starting over. The free 5-page sample accepts any PDF up to 200 MB, on any plan, so you see the result on your own file first. Converting the whole book depends on your plan, from 20 MB on Free to 200 MB on Business. - [What happens to my files after converting a PDF to EPUB?](https://epubcc.com/answers/what-happens-to-my-files/): EpubCC deletes the EPUB 1 hour after your first download, or 24 hours after it's ready, whichever comes first; the original PDF is deleted as soon as the whole book is converted, or 2 hours after its last conversion. Your files are never published or used for training, and “Delete now” removes everything immediately. - [Why does my PDF look terrible on Kindle?](https://epubcc.com/answers/why-pdf-looks-bad-on-kindle/): Your PDF looks terrible on a Kindle because a PDF is a fixed page designed for paper, and the Kindle can only shrink or zoom that page, not re-flow the text. Converting it to a reflowable EPUB lets the reader lay out the text for the screen and the font size you choose. - [Why does PDF-to-EPUB conversion break paragraphs?](https://epubcc.com/answers/why-pdf-to-epub-breaks-paragraphs/): PDF-to-EPUB conversion breaks paragraphs because a PDF stores lines at fixed positions, not paragraphs, and a simple converter copies each line as it is. Rebuilding paragraphs needs the geometry of each line: gaps, indents, font changes and hyphens at line ends. - [Can a scanned PDF become a reflowable EPUB?](https://epubcc.com/answers/can-a-scanned-pdf-become-an-epub/): A scanned PDF can become a reflowable EPUB only after OCR turns each page image into text, and that text carries OCR errors on poor or old scans. EpubCC does not offer OCR yet; it converts PDFs that already have selectable text. - [How do I preserve footnotes when converting a PDF to EPUB?](https://epubcc.com/answers/how-to-preserve-footnotes/): To preserve footnotes, the converter has to recognise them as notes and link each one from its call in the text, instead of leaving them as small text in the middle of the book. EpubCC writes them as EPUB footnotes linked from the superscript that calls them. - [When should I keep a fixed-layout PDF instead of converting to EPUB?](https://epubcc.com/answers/when-to-keep-a-pdf/): Keep the fixed-layout PDF when the page design is part of the meaning: comics, picture books, sheet music, forms, maps and heavily designed layouts. Convert to a reflowable EPUB when the document is mostly running text you want to read comfortably on a small screen. - [Is EPUB better than PDF for e-readers?](https://epubcc.com/answers/is-epub-better-than-pdf-for-e-readers/): For books and documents that are mostly running text, yes: an EPUB re-flows to fit the screen and the font size you choose, while a PDF is a fixed printed page that an e-reader can only shrink or zoom. For pages whose layout is the content, such as comics, sheet music or forms, the PDF is still the better file. - [Can a Kindle read EPUB files?](https://epubcc.com/answers/can-a-kindle-read-epub/): Yes, through Amazon's Send to Kindle service: it accepts EPUB files and converts them so they appear in your Kindle library, but a Kindle does not open an EPUB copied straight onto it by USB. Amazon's help page lists EPUB among the supported formats and allows documents up to 200 MB through Send to Kindle for Web. - [KEPUB vs EPUB: what's the difference?](https://epubcc.com/answers/kepub-vs-epub/): KEPUB is Kobo's own variant of EPUB, named .kepub.epub, which Kobo devices open with Kobo's own rendering engine instead of the generic EPUB one. A plain EPUB opens on every Kobo and on almost every other reader, so it is the file to make first; KEPUB is an optional extra for Kobo owners. - [How do I know if my PDF is scanned?](https://epubcc.com/answers/how-to-tell-if-a-pdf-is-scanned/): Open the PDF and try to select a sentence or search for a word that you can see on the page: if nothing gets selected or found, the page is an image and the PDF is scanned. If you can select the text but it pastes as gibberish, the PDF has a damaged or poor OCR text layer. - [Why does my EPUB show page numbers in the middle of the text?](https://epubcc.com/answers/page-numbers-in-the-middle-of-epub-text/): Your EPUB shows page numbers in the middle of sentences because the converter copied the PDF's page furniture (page numbers, running headers and footers) as if it were part of the text. The fix is a converter that detects text repeated at the top or bottom of the pages and removes it before joining the paragraphs. - [Why are words split with hyphens after converting a PDF?](https://epubcc.com/answers/hyphenated-words-after-pdf-conversion/): Words come out split as "conver- sion" because the PDF hyphenated them at the end of a printed line and the converter copied the line break and the hyphen as they were. A converter has to rejoin those words while keeping real hyphenated compounds such as "well-known" intact. - [Can I convert a PDF with tables to EPUB?](https://epubcc.com/answers/convert-pdf-with-tables-to-epub/): You can convert it, but tables are a known weak point: EpubCC does not rebuild tables yet, it reads them as text column by column, and bold header cells can end up as headings. Check the pages with tables in the free sample before you convert the whole book. - [How do I convert a two-column PDF to EPUB?](https://epubcc.com/answers/convert-two-column-pdf-to-epub/): Use a converter that detects the columns before it joins lines into paragraphs, so the left column is read top to bottom and then the right one, instead of reading each line straight across the page. EpubCC does this by splitting each page along the white gaps between columns before rebuilding the text. - [What is the best free PDF to EPUB converter?](https://epubcc.com/answers/best-free-pdf-to-epub-converter/): For a simple, single-column PDF with clean text, such as a novel, Calibre is free, runs on your own computer and is often enough. For columns, repeated headers, footnotes or long books, test converters on your own file: EpubCC's free sample converts up to 5 pages, and our public benchmark shows where each engine we measured wins and loses. - [PDF to EPUB without losing formatting: what is possible?](https://epubcc.com/answers/pdf-to-epub-without-losing-formatting/): You keep the structure, not the page design: paragraphs, headings, chapters, footnotes, bold text and images can all survive, but the exact position of every line cannot, because a reflowable EPUB re-flows the text for each screen. If the look of each page must stay identical, keep the PDF or use a fixed-layout format. - [How do I fix EPUBCheck errors?](https://epubcc.com/answers/how-to-fix-epubcheck-errors/): Run EPUBCheck, then fix the messages in order: each one gives a code such as RSC-005, the file, the line and column, and fixing the first errors often clears several later ones. Look up the code in our [EPUBCheck reference](/epubcheck/) for its usual causes and fix, edit the EPUB's files, rebuild the archive and validate again until no errors remain. - [How do I read a PDF on a Kobo without zooming?](https://epubcc.com/answers/read-pdf-on-kobo-without-zooming/): Convert the PDF to a reflowable EPUB and copy that to the Kobo: the text then fits the screen at the font size you pick, so there is nothing to zoom or pan. A PDF stays a fixed printed page on any e-reader, so zoom settings can only make it bigger, not make it fit. - [What is EPUB 3 and why does it matter?](https://epubcc.com/answers/what-is-epub-3/): EPUB 3 is the current version of the open EPUB e-book standard: a ZIP file holding XHTML chapters, CSS, images and a package document, which reading apps re-flow for any screen. It matters because it is the one format nearly every reader and store accepts, and its latest revision, EPUB 3.3, is a W3C Recommendation. - [How long does a PDF to EPUB conversion take?](https://epubcc.com/answers/how-long-does-pdf-to-epub-take/): Usually seconds once it starts: on our production server, a 585-page text book converted in 3.0 seconds and a 487-page book full of charts in 14.9 seconds (measured on 2026-11-04). The free 5-page sample takes under a second; uploading a large file and waiting in the queue can take longer than the conversion itself. - [Is it legal to convert a PDF I bought to EPUB?](https://epubcc.com/answers/is-it-legal-to-convert-a-pdf-to-epub/): It depends on the copyright law of your country and on the licence you accepted when you bought the PDF, so there is no single yes or no; converting a file only for your own reading is treated differently from sharing it. This is general information, not legal advice: convert only files you have the right to use, and check the seller's terms or ask a lawyer when in doubt. ## Cases - [Conversion cases with evidence](https://epubcc.com/cases/) - [Two-column PDF to EPUB: an academic paper](https://epubcc.com/cases/two-column-paper/): Two-column papers break when a converter reads straight across both columns. On the OLMo paper (arXiv, CC BY 4.0) the EpubCC engine keeps the columns apart, but pdf_oxide's extract_text scores higher on continuity for this document. - [Three-column PDF to EPUB: the Federal Register](https://epubcc.com/cases/three-column-federal-register/): The Federal Register prints three narrow columns per page with rotated text in the margin, which defeats converters that read line by line. On this public-domain document the EpubCC engine keeps the column order and removes the running headers. - [PDF footnotes to EPUB notes: an academic paper](https://epubcc.com/cases/footnotes/): Footnotes are kept as linked EPUB notes when they sit below the body text and start with a marker that matches a superscript call. On the QLoRA paper (arXiv, CC BY 4.0) other engines recover more continuous text than ours, which the table shows. - [Removing repeated headers: the 9/11 Commission Report](https://epubcc.com/cases/repeated-headers/): Long reports repeat the chapter title and page number on every page, and a line-by-line conversion puts them in the middle of sentences. On the 585-page 9/11 Commission Report the EpubCC engine detects them by comparing pages and removes them. - [Chapters and table of contents from a PDF book](https://epubcc.com/cases/chapters-and-toc/): Chapters come from the PDF's own outline when it has one, or from the heading level that repeats across pages. On this Project Gutenberg textbook typeset in LaTeX, every engine scores low on text because of the formulas, ours included. - [Arabic PDF to EPUB: right-to-left text](https://epubcc.com/cases/arabic-rtl/): Arabic PDFs often store letters in visual order, so converters that read them left to right reverse the words. On an Arabic Wikipedia article the EpubCC engine restores the word order and writes a right-to-left EPUB. - [Japanese PDF to EPUB](https://epubcc.com/cases/japanese/): Japanese text has no spaces between words, so joining lines and paragraphs needs different rules than Latin text. On a Japanese Wikipedia article the EpubCC engine joins CJK lines without inserting spaces. - [Spanish PDF to EPUB: accents, «» and ¿?](https://epubcc.com/cases/spanish-pdf/): Spanish text converts cleanly when the PDF has real Unicode text: accents, ñ, «» quotes and inverted ¿? marks come through unchanged and the EPUB is tagged as Spanish. On a 50-page Spanish Wikipedia article our 8-gram recall is 0.941, below pdf_oxide's 0.963. - [French PDF to EPUB: guillemets and apostrophes](https://epubcc.com/cases/french-pdf/): French punctuation survives conversion when the PDF stores real text: « » guillemets keep their inner spaces, apostrophes and accented capitals come through, and the EPUB is tagged as French. On this 22-page Wikipedia article other engines recover more continuous text than ours. - [German PDF to EPUB: umlauts, ß and „quotes“](https://epubcc.com/cases/german-pdf/): German text converts cleanly when the PDF stores real Unicode text: ä, ö, ü, ß and the low-high „…“ quotes come through unchanged and the EPUB is tagged as German. On an 86-page Wikipedia article our 8-gram recall is 0.845, below pdf_oxide's 0.877. - [PDF charts in EPUB: what is lost](https://epubcc.com/cases/charts-and-graphs/): Charts drawn as vector graphics are not kept: the EpubCC engine keeps raster images but not vector drawings, so a line chart loses its lines and its axis labels turn into loose paragraphs. On the 487-page Economic Report of the President 2024 the text around the charts converts well; the charts themselves do not. - [What happens with a scanned PDF](https://epubcc.com/cases/scanned-pdf/): EpubCC does not do OCR yet. A scanned page with no text layer is left out with a warning; a scan that already carries an OCR layer is converted from that hidden text, with its errors. On an 1867 Alice scan our 8-gram recall is 0.513, below PDFium (0.651) and pdf_oxide (0.632). - [Text wrapped around images: a known limit](https://epubcc.com/cases/text-wrapped-around-images/): When a paragraph flows around a floating image, the EpubCC engine keeps the image but breaks the paragraph: the narrow lines beside the picture become separate one-line paragraphs, and the caption can land inside a sentence. On an English Wikipedia article pdf_oxide reaches an 8-gram recall of 0.800 against our 0.761. - [Government report PDF to EPUB: footnotes kept](https://epubcc.com/cases/government-report-footnotes/): Government reports put footnotes at the bottom of almost every page and repeat the report number in every footer. On a 58-page GAO report the EpubCC engine found 50 footnotes, linked 47 to their calls and removed the footers, with no margin text left in the EPUB. - [EU regulation PDF to EPUB, in Spanish](https://epubcc.com/cases/eu-regulation-spanish/): An EU regulation in the Official Journal converts well for running text: on the 144-page Spanish edition of the AI Act the EpubCC engine removed every running header, built one chapter per article from the PDF outline and reached a 4-gram precision of 0.982. Some numbered points are detached from their text, and other engines recover slightly more continuous text. - [PDF with equations to EPUB: the honest result](https://epubcc.com/cases/equations-math-paper/): Equations are the weak point: the EpubCC engine keeps the prose and simple inline symbols, but display equations with fractions, sums and subscripts come out as scrambled plain text, because it does not build MathML yet. On the DPO paper (arXiv, CC BY 4.0) our 8-gram recall is 0.814, behind OpenDataLoader (0.860) and PDFium (0.838). - [Line-numbered PDF to EPUB: not handled yet](https://epubcc.com/cases/line-numbered-legal-text/): Line numbers in the margin are not handled yet: on a 50-page U.S. Senate bill the EpubCC engine writes the numbers 1 to 24 as a stack of short paragraphs before each page's text and splits about 24 words per 1,000. Other engines do worse on continuity (8-gram recall 0.09 to 0.51 against our 0.559), but none gives a clean result. ## Learn and glossary - [Learn: PDF to EPUB, explained](https://epubcc.com/learn/) - [PDF and EPUB glossary](https://epubcc.com/glossary/) - [What is a reflowable EPUB?](https://epubcc.com/glossary/reflowable/): A reflowable EPUB stores text and its structure, not positions on a page, so the reading app lays it out again for each screen, font and size. It is the default kind of EPUB and the opposite of a fixed-layout one. - [What is a fixed-layout EPUB?](https://epubcc.com/glossary/fixed-layout/): A fixed-layout EPUB keeps each page exactly as designed, like a PDF, and is declared with rendition:layout set to "pre-paginated" in the package document. It suits picture books, comics and cookbooks where the position of every element matters. - [What is EPUB 3?](https://epubcc.com/glossary/epub-3/): EPUB 3 is the current version of the EPUB e-book standard, built on XHTML5, CSS, SVG and an HTML navigation document. Its latest revision, EPUB 3.3, became a W3C Recommendation in 2023. - [What is EPUB 2?](https://epubcc.com/glossary/epub-2/): EPUB 2 is the previous generation of the EPUB standard (2.0.1 dates from 2010), based on XHTML 1.1 and an NCX table of contents. It has been superseded by EPUB 3 but many older files still use it. - [What is the EPUB container (OCF)?](https://epubcc.com/glossary/ocf-container/): An EPUB file is a ZIP archive laid out by the Open Container Format (OCF): an uncompressed "mimetype" file first, a META-INF/container.xml that points to the package document, and the content files. Renaming a .epub to .zip lets you look inside. - [What is the OPF package document?](https://epubcc.com/glossary/opf/): The OPF (Open Packaging Format) file, or package document, is the XML file that describes an EPUB: its metadata, the manifest of every file and the spine that sets the reading order. Reading apps find it through META-INF/container.xml. - [What is the EPUB manifest?](https://epubcc.com/glossary/manifest/): The manifest is the list, inside the OPF package document, of every file that belongs to the publication, each with an id, a path and a media type. A file in the ZIP that is not in the manifest, or a manifest entry with no file, is an error. - [What is the EPUB spine?](https://epubcc.com/glossary/spine/): The spine is the ordered list, inside the OPF package document, of the content documents a reader pages through from start to end. It sets the default reading order of the book. - [What is the NCX table of contents?](https://epubcc.com/glossary/ncx/): The NCX (Navigation Control file for XML) is the table of contents format of EPUB 2, an XML file with the media type application/x-dtbncx+xml. EPUB 3 replaced it with the HTML navigation document but still allows an NCX for older readers. - [What is the EPUB navigation document?](https://epubcc.com/glossary/nav-document/): The navigation document is the XHTML file that holds an EPUB 3's table of contents, as a nav element with epub:type="toc", and optionally landmarks and a page list. Every EPUB 3 must have exactly one, marked with the "nav" property in the manifest. - [What is EPUB landmarks?](https://epubcc.com/glossary/landmarks/): Landmarks are an optional nav element in the EPUB 3 navigation document (epub:type="landmarks") that points to key places such as the cover, the table of contents and the start of the main text. Some reading apps use them for "Go to beginning" and similar commands. - [What is an EPUB page list?](https://epubcc.com/glossary/page-list/): A page list is a nav element (epub:type="page-list") in the EPUB 3 navigation document that maps the page numbers of a printed edition to places in the e-book. It lets readers cite or jump to "page 42" of the print source. - [What is XHTML in EPUB?](https://epubcc.com/glossary/xhtml/): EPUB content documents are XHTML: HTML written with XML syntax, so every tag must be closed, attributes quoted and the file well-formed. EPUB 3 uses the XHTML syntax of HTML5; EPUB 2 used XHTML 1.1. - [What is CSS in EPUB?](https://epubcc.com/glossary/css-in-epub/): EPUB uses ordinary CSS stylesheets for presentation, but reading apps may override fonts, margins and colours, and some properties, such as fixed positioning, are unreliable or not allowed. Good EPUB CSS is short and lets the reader decide. - [What is epub:type?](https://epubcc.com/glossary/epub-type/): epub:type is an attribute that adds meaning to an element in an EPUB 3 document, using terms from the EPUB Structural Semantics Vocabulary, such as "footnote", "noteref", "chapter" or "pagebreak". Reading apps use it, for example, to show a footnote as a pop-up. - [What is a media type in EPUB?](https://epubcc.com/glossary/media-type/): A media type (MIME type) such as application/xhtml+xml, image/jpeg or text/css tells the reading app what each file in an EPUB is. Every manifest item declares one, and it must match the file's real content. - [What is Dublin Core metadata (dc:*)?](https://epubcc.com/glossary/dublin-core-metadata/): EPUB metadata uses Dublin Core elements in the package document: dc:identifier, dc:title and dc:language are required, and dc:creator, dc:date, dc:publisher and others are optional. EPUB 3 also requires a dcterms:modified timestamp. - [What is an EPUB cover image?](https://epubcc.com/glossary/cover-image/): The cover image of an EPUB 3 is the manifest item marked with the "cover-image" property; reading apps show it as the thumbnail in the library. It is usually a JPEG or PNG of the front cover. - [What is reading order?](https://epubcc.com/glossary/reading-order/): Reading order is the sequence in which text is meant to be read: column by column, with side notes, captions and footnotes placed where they belong. In an EPUB it is set by the spine and the order of elements in each document. - [What is a PDF text layer?](https://epubcc.com/glossary/text-layer/): The text layer of a PDF is the actual character data (which glyph, in which font, at which position) behind what you see on the page. You can select and search text only when it exists. - [What is a scanned PDF?](https://epubcc.com/glossary/scanned-pdf/): A scanned PDF holds photographs of paper pages, so each page is an image with no text layer unless OCR was run on it. It looks like text but a computer sees only pixels. - [What is OCR (optical character recognition)?](https://epubcc.com/glossary/ocr/): OCR (optical character recognition) turns images of text into characters a computer can read. Applied to a scanned PDF it adds a text layer, with recognition errors that depend on scan quality, fonts and language. - [What is a tagged PDF?](https://epubcc.com/glossary/tagged-pdf/): A tagged PDF contains a structure tree that marks headings, paragraphs, lists, tables and the reading order, on top of the drawn text. Tags are what screen readers use, and PDF/UA requires them. - [What is a ToUnicode map?](https://epubcc.com/glossary/tounicode/): A ToUnicode map (CMap) is a table in a PDF font that says which Unicode character each glyph represents. Without it, a program can draw the text but may not know what the letters are. - [What is an embedded font?](https://epubcc.com/glossary/embedded-font/): An embedded font is a font file (often only the glyphs used) stored inside a PDF or an EPUB, so the text displays the same on any device. In EPUB it is declared with @font-face in the CSS. - [What is a running header?](https://epubcc.com/glossary/running-header/): A running header (or footer) is text repeated at the top or bottom of every page of a printed document, such as the book or chapter title and the page number. It is page furniture, not part of the text. - [What is a footnote in an EPUB?](https://epubcc.com/glossary/footnote/): A footnote is a note printed at the bottom of the page it refers to, linked to the text by a reference mark. In an EPUB there is no page bottom, so the note becomes a linked element that readers can show as a pop-up. - [What is an endnote?](https://epubcc.com/glossary/endnote/): An endnote is a note collected at the end of a chapter or of the book instead of at the foot of the page. In EPUB 3 it is marked with epub:type="endnote" inside a section of endnotes. - [What is a noteref?](https://epubcc.com/glossary/noteref/): A noteref is the link from a reference mark in the text (a superscript number or symbol) to its note, marked in EPUB 3 with epub:type="noteref". Reading apps that support it open the note in a pop-up. - [What is a ligature?](https://epubcc.com/glossary/ligature/): A ligature is a single glyph that joins two or three letters, such as "fi", "fl" or "ffi". Fonts use them for appearance; the underlying text should still be the separate letters. - [What is a soft hyphen?](https://epubcc.com/glossary/soft-hyphen/): A soft hyphen (U+00AD) is an invisible character that marks where a word may be split; it only shows as a hyphen when the line actually breaks there. In a PDF, a hyphen at the end of a line can be a soft hyphen or a real one. - [What is sideloading?](https://epubcc.com/glossary/sideloading/): Sideloading means putting an e-book on a reader yourself, by USB cable, email or an app, instead of buying it in the device's store. Converted EPUBs always reach a reader this way. - [What is Send to Kindle?](https://epubcc.com/glossary/send-to-kindle/): Send to Kindle is Amazon's service for delivering your own documents to a Kindle library, through an app, a web page or a personal Kindle email address. It accepts EPUB files and converts them to Amazon's format for the device. - [What is KF8 (AZW3)?](https://epubcc.com/glossary/kf8-azw3/): KF8 (Kindle Format 8) is Amazon's e-book format based on HTML5 and CSS, introduced in 2011; files in this format usually have the .azw3 extension. It replaced the older MOBI format on Kindle devices. - [What is KEPUB?](https://epubcc.com/glossary/kepub/): KEPUB is Kobo's variant of EPUB, recognised by the .kepub.epub file extension, which Kobo devices open with their own rendering engine instead of the generic EPUB one. Kobo's own store uses it for the books it sells. - [What is DRM (digital rights management)?](https://epubcc.com/glossary/drm/): DRM (digital rights management) is encryption that ties an e-book or PDF to an account or device so it cannot be opened elsewhere. Store-bought e-books are often protected this way. - [What is EPUBCheck?](https://epubcc.com/glossary/epubcheck/): EPUBCheck is the official, open-source validator for EPUB files, maintained by the W3C and released under the BSD-3-Clause licence. It reports every problem as a message with a code such as RSC-005 and a severity: fatal, error, warning, info or usage. - [What is EPUB accessibility metadata?](https://epubcc.com/glossary/accessibility-metadata/): Accessibility metadata are schema.org properties in the package document, such as schema:accessMode, schema:accessibilityFeature and schema:accessibilitySummary, that describe how accessible an EPUB is. Stores and libraries show them to readers who rely on assistive technology. - [What is alt text?](https://epubcc.com/glossary/alt-text/): Alt text is a short text alternative for an image, written in the img element's alt attribute, that screen readers read aloud in place of the picture. Decorative images get an empty alt. - [What is page-progression-direction (RTL books)?](https://epubcc.com/glossary/page-progression-direction/): page-progression-direction is an attribute of the EPUB spine (ltr, rtl or default) that tells the reader in which direction pages turn. Arabic, Hebrew and Persian books use rtl, and so do Japanese books set vertically. - [What is vertical writing in EPUB?](https://epubcc.com/glossary/vertical-writing/): Vertical writing sets text in columns from top to bottom, read right to left, as in traditional Japanese, Chinese and Korean books. EPUB 3 supports it through the CSS writing-mode property (vertical-rl). - [What is MathML?](https://epubcc.com/glossary/mathml/): MathML is the XML language for mathematical notation, allowed inside EPUB 3 content documents so equations stay text instead of images. Support in reading apps varies. - [What is SVG in EPUB?](https://epubcc.com/glossary/svg/): SVG (Scalable Vector Graphics) is the XML vector image format allowed in EPUB 3, either as image files or inline in content documents. Unlike JPEG or PNG, it stays sharp at any size. - [What is EPUB media overlays?](https://epubcc.com/glossary/media-overlays/): Media overlays synchronise recorded narration with the text of an EPUB 3, using SMIL files that pair audio clips with elements of the content documents. Reading apps highlight each phrase as it is read aloud. - [What is an EPUB reading system?](https://epubcc.com/glossary/reading-system/): An EPUB reading system is the software that opens an EPUB and presents it to a reader: an e-reader's built-in app, Apple Books, a Kobo or a phone app. EPUB 3.3 defines it as a system that processes EPUB publications for presentation to a user. - [What is EPUB core media types?](https://epubcc.com/glossary/core-media-types/): Core media types are the file formats every EPUB 3 reading system is expected to support, so they need no fallback: GIF, JPEG, PNG, SVG and WebP images, MP3, AAC and Opus audio, CSS, TrueType, OpenType, WOFF and WOFF2 fonts, and XHTML. EPUB 3.3 lists them in a table. - [What is a foreign resource (and its fallback)?](https://epubcc.com/glossary/foreign-resource/): A foreign resource is a file whose media type is not one of EPUB's core media types, such as a TIFF image. EPUB 3.3 lets you include it only with a fallback, declared in the manifest with the fallback attribute or provided by HTML, that a reading system can show instead. - [What is the EPUB unique identifier?](https://epubcc.com/glossary/unique-identifier/): The unique identifier is the primary identifier of an EPUB: the value of the dc:identifier element that the package element's unique-identifier attribute points to. It is often an ISBN or a UUID, and EPUB 3.3 says a significant revision needs a new one. - [What is dcterms:modified?](https://epubcc.com/glossary/dcterms-modified/): dcterms:modified is the required last-modified date of an EPUB 3, written in the package document as a meta element. EPUB 3.3 requires exactly one, in the form YYYY-MM-DDThh:mm:ssZ (UTC). - [What is a language tag (dc:language and xml:lang)?](https://epubcc.com/glossary/language-tag/): A language tag is a code such as en, en-US, ar or ja that says which language a text is in, written with the BCP 47 syntax. An EPUB declares it in dc:language in the package document and with lang and xml:lang on its content documents. - [What is remote resources in EPUB?](https://epubcc.com/glossary/remote-resources/): A remote resource is a file an EPUB loads from the web instead of carrying it inside the ZIP. EPUB 3.3 allows it only for audio, video, fonts and resources fetched by scripts; everything else, including images and stylesheets, must be inside the container. - [What is scripted content in EPUB?](https://epubcc.com/glossary/scripted-content/): A scripted content document is an EPUB content document that contains JavaScript or an HTML form. EPUB 3.3 allows scripting, but the manifest item must carry the scripted property and reading systems are free to run the scripts in a restricted way or not at all. - [What is non-linear content in EPUB?](https://epubcc.com/glossary/non-linear-content/): Non-linear content is a document listed in the EPUB spine with linear="no": auxiliary material, such as notes, answer keys or descriptions, that is outside the main reading order. Reading systems may skip it while paging, so it has to be reachable from a link. - [What is font obfuscation?](https://epubcc.com/glossary/font-obfuscation/): Font obfuscation is a simple scrambling of embedded font files, keyed to the EPUB's unique identifier and declared in META-INF/encryption.xml, so a font cannot be copied out of the ZIP and installed elsewhere. EPUB 3.3 says it is not encryption and offers no real protection. - [What is a synthetic spread?](https://epubcc.com/glossary/synthetic-spread/): A synthetic spread is two adjacent pages shown side by side on one screen, like an open book. In a fixed-layout EPUB the rendition:spread property says when a reading system should do it: none, landscape, or both orientations. - [What is a page-break marker?](https://epubcc.com/glossary/page-break-marker/): A page-break marker is an element in an EPUB, usually with epub:type="pagebreak" and the page number as its label, that records where a page of the printed edition began. Together with a page list it lets readers find "page 42" of the print source. - [What is an EPUB CFI?](https://epubcc.com/glossary/epub-cfi/): An EPUB CFI (Canonical Fragment Identifier) is a standard way to point at any location or range inside an EPUB, written as epubcfi(…) with a path through the package and the document. Reading systems can use it for bookmarks, highlights and reading positions. - [What is WCAG?](https://epubcc.com/glossary/wcag/): WCAG (Web Content Accessibility Guidelines) is the W3C standard for accessible web content, with success criteria at three levels, A, AA and AAA. Its current version is WCAG 2.2, and EPUB Accessibility 1.1 builds on it. - [What is EPUB Accessibility 1.1?](https://epubcc.com/glossary/epub-accessibility/): EPUB Accessibility 1.1 is the W3C Recommendation, published in October 2024, that defines when an EPUB is accessible and how to say so. It requires discovery metadata, WCAG 2 conformance and EPUB-specific features such as page navigation where a print edition exists. - [What is Ace by DAISY?](https://epubcc.com/glossary/ace-by-daisy/): Ace by DAISY is a free accessibility checker for EPUB from the DAISY Consortium, available as a command-line tool and a desktop app. It helps evaluate an EPUB against accessibility practice; it does not replace a human review. - [What is MOBI?](https://epubcc.com/glossary/mobi/): MOBI is the older Mobipocket-based e-book format that early Kindles used, with the .mobi extension. Amazon's Send to Kindle help page no longer lists it among the supported formats, while it does list EPUB. ## EPUBCheck 5.4.0 messages explained - [EPUBCheck messages explained](https://epubcc.com/epubcheck/) - [EPUBCheck PKG-001: EPUB version mismatch, how to fix it](https://epubcc.com/epubcheck/pkg-001/): EPUBCheck PKG-001 is a warning message: “Validating the EPUB against version … but detected version ….” EPUBCheck was told to validate one EPUB version but the package document declares another. The version comes from the version attribute of the package element, and EPUBCheck reports the mismatch as a warning before it applies the rules of the version you asked for. - [PKG-003: unreadable EPUB file header, how to fix it](https://epubcc.com/epubcheck/pkg-003/): EPUBCheck PKG-003 is an error message: “Unable to read EPUB file header. This is likely a corrupted EPUB file.” EPUBCheck could not read the start of the file as a ZIP archive, so it is not a usable EPUB. Every EPUB is a ZIP container, and reading apps and stores reject a file whose header is not a valid ZIP header. - [EPUBCheck PKG-004: corrupted ZIP header, how to fix it](https://epubcc.com/epubcheck/pkg-004/): EPUBCheck PKG-004 is a fatal error message: “Corrupted EPUB ZIP header.” The ZIP structure of the EPUB is damaged, so EPUBCheck cannot list or read its files. It is a fatal error: nothing inside the book can be checked until the archive is rebuilt, and reading apps usually refuse to open it. - [EPUBCheck PKG-005: extra field on mimetype, how to fix it](https://epubcc.com/epubcheck/pkg-005/): EPUBCheck PKG-005 is an error message: “The mimetype file has an extra field of length …. The use of the extra field feature of the ZIP format is not permitted for the mimetype file.” The mimetype entry in the ZIP carries an extra field, which the EPUB container rules forbid for that one file. Reading apps identify an EPUB by finding the mimetype text at a fixed position near the start of the file, and an extra field moves it. - [PKG-006: mimetype missing or not first, how to fix it](https://epubcc.com/epubcheck/pkg-006/): EPUBCheck PKG-006 is an error message: “Mimetype file entry is missing or is not the first file in the archive.” The mimetype file is missing or is not the first entry of the ZIP archive. Reading apps identify the file as an EPUB from its first bytes, so EPUB requires mimetype to be the first file, stored uncompressed. - [PKG-007: wrong mimetype file content, how to fix it](https://epubcc.com/epubcheck/pkg-007/): EPUBCheck PKG-007 is an error message: “The content of the mimetype file must be the string "application/epub+zip"….” The mimetype file must contain exactly the text application/epub+zip, with nothing before or after it. EPUB 3.3 forbids leading or trailing whitespace and a byte order mark in that file. - [PKG-008: file inside EPUB unreadable, how to fix it](https://epubcc.com/epubcheck/pkg-008/): EPUBCheck PKG-008 is a fatal error message: “Unable to read file "…".” EPUBCheck could not read one of the files inside the EPUB, so it stops checking that file. It is a fatal error: the message names the file, and the rest of what depends on that file cannot be validated. - [PKG-009: forbidden file name character, how to fix it](https://epubcc.com/epubcheck/pkg-009/): EPUBCheck PKG-009 is an error message: “The file name "…" contains characters that are not allowed in OCF file names: ….” A file name inside the EPUB contains a character that the EPUB container rules do not allow in file names. The restriction exists so that the same names work on every operating system that unpacks the book. - [EPUBCheck PKG-010: space in a file name, how to fix it](https://epubcc.com/epubcheck/pkg-010/): EPUBCheck PKG-010 is a warning message: “The file name "…" contains spaces, which may create interoperability issues with older reading systems.” A file name inside the EPUB contains spaces. That is allowed, but it can break older reading systems, and every URL that points to the file then has to encode the space correctly. - [EPUBCheck PKG-011: file name ending in a dot, how to fix it](https://epubcc.com/epubcheck/pkg-011/): EPUBCheck PKG-011 is an error message: “The file name "…" is not allowed to end with ".".” A file name inside the EPUB ends with a full stop, which the EPUB container rules forbid. Some operating systems strip a trailing dot, so the file would no longer match the references to it. - [PKG-012: non-ASCII letters in file name, how to fix it](https://epubcc.com/epubcheck/pkg-012/): EPUBCheck PKG-012 is a usage message: “The file name "…" contains non-ASCII characters, which might create interoperability issues with older reading systems.” A file name inside the EPUB contains non-ASCII characters (accents, other scripts). That is valid in EPUB 3, but it may break older reading systems, so EPUBCheck reports it as usage information. - [EPUBCheck PKG-014: empty folder in the EPUB, how to fix it](https://epubcc.com/epubcheck/pkg-014/): EPUBCheck PKG-014 is a warning message: “The EPUB contains empty directory "…".” The EPUB archive contains an empty folder. It does no harm to reading apps, and EPUBCheck reports it only so you can remove what serves no purpose. - [EPUBCheck PKG-016: uppercase .EPUB extension, how to fix it](https://epubcc.com/epubcheck/pkg-016/): EPUBCheck PKG-016 is a warning message: “Use only lowercase characters for the EPUB file extension for maximum compatibility.” The file extension is written in uppercase (.EPUB); lowercase .epub is the most compatible. The content of the book is not affected, only how some apps and stores recognise the file. - [EPUBCheck PKG-017: uncommon file extension, how to fix it](https://epubcc.com/epubcheck/pkg-017/): EPUBCheck PKG-017 is a warning message: “Uncommon EPUB file extension.” The file does not end in .epub, so some reading apps and stores may not recognise it. EPUBCheck reports the same text, "Uncommon EPUB file extension", as PKG-017 (a warning) and as PKG-024 (a usage message); the cause and the fix are the same. - [PKG-018: EPUB file to check not found, how to fix it](https://epubcc.com/epubcheck/pkg-018/): EPUBCheck PKG-018 is a fatal error message: “The EPUB file could not be found.” EPUBCheck could not find the EPUB file you asked it to check. It is a fatal error about the command, not about the book: nothing was validated. - [EPUBCheck PKG-020: package document not found, how to fix it](https://epubcc.com/epubcheck/pkg-020/): EPUBCheck PKG-020 is an error message: “OPF file "…" could not be found.” The package document (OPF) named in META-INF/container.xml does not exist at that path. Without the package document, neither reading apps nor EPUBCheck know which files make up the book. - [EPUBCheck PKG-021: corrupted image file, how to fix it](https://epubcc.com/epubcheck/pkg-021/): EPUBCheck PKG-021 is an error message: “Corrupted image file encountered.” An image file inside the EPUB is damaged and cannot be decoded. Reading apps will show a blank space or a broken image where it is used. - [EPUBCheck PKG-022: image extension mismatch, how to fix it](https://epubcc.com/epubcheck/pkg-022/): EPUBCheck PKG-022 is a warning message: “Wrong file extension for image. The image is a "…" file but has the file extension "…".” An image's extension does not match its real format, for example a PNG file named .jpg. Most reading apps still show it, but tools that trust the extension or the manifest media type can fail. - [EPUBCheck PKG-023: validating as EPUB 2.0, how to fix it](https://epubcc.com/epubcheck/pkg-023/): EPUBCheck PKG-023 is a usage message: “Validating the EPUB against version 2.0, default validation profile will be used.” EPUBCheck is validating the file as EPUB 2.0 and applying its default validation profile. It is a usage message, shown only with -u, and it does not mean anything is wrong. - [PKG-025: content file inside META-INF, how to fix it](https://epubcc.com/epubcheck/pkg-025/): EPUBCheck PKG-025 is an error message: “Publication resource must not be located in the META-INF directory.” A file of the publication (a chapter, image or stylesheet) is stored inside META-INF, a folder reserved for container files such as container.xml. EPUB 3.3 does not allow publication resources there. - [EPUBCheck PKG-026: non-font file obfuscated, how to fix it](https://epubcc.com/epubcheck/pkg-026/): EPUBCheck PKG-026 is an error message: “Obfuscated resource must be a Font Core Media Type (was declared as "…" in "…").” A file that is not a font is listed as obfuscated in META-INF/encryption.xml. Font obfuscation, the scrambling EPUB defines to discourage copying embedded fonts, only applies to font files. - [EPUBCheck PKG-027: file names not in UTF-8, how to fix it](https://epubcc.com/epubcheck/pkg-027/): EPUBCheck PKG-027 is a fatal error message: “Could not extract EPUB ZIP content, probably due to file names not encoded in UTF-8.” EPUBCheck could not extract the archive, most likely because the file names inside the ZIP are not encoded in UTF-8. It is a fatal error: the content cannot be checked until the archive is rebuilt. - [EPUBCheck RSC-001: listed file not found, how to fix it](https://epubcc.com/epubcheck/rsc-001/): EPUBCheck RSC-001 is an error message: “File "…" could not be found.” EPUBCheck looked for a file that the EPUB says exists and did not find it in the archive. The file is usually one the package document or the container lists, so reading apps will fail to load it too. - [EPUBCheck RSC-002: container.xml missing, how to fix it](https://epubcc.com/epubcheck/rsc-002/): EPUBCheck RSC-002 is a fatal error message: “Required META-INF/container.xml resource could not be found.” The archive has no META-INF/container.xml, the file that tells reading apps where the package document is. Without it the EPUB cannot be opened at all, so EPUBCheck stops with a fatal error. - [RSC-003: no OPF rootfile in container, how to fix it](https://epubcc.com/epubcheck/rsc-003/): EPUBCheck RSC-003 is an error message: “No rootfile tag with media type "application/oebps-package+xml" was found in the container.” META-INF/container.xml exists but none of its rootfile elements has the media type application/oebps-package+xml, so the package document cannot be found. Reading apps rely on that exact value to pick the package document. - [EPUBCheck RSC-004: encrypted file not checked, how to fix it](https://epubcc.com/epubcheck/rsc-004/): EPUBCheck RSC-004 is an info message: “File "…" is encrypted, its content will not be checked.” A file is encrypted (listed in META-INF/encryption.xml), so EPUBCheck cannot read it and skips its checks. It is an informative message, not an error. - [EPUBCheck RSC-005: schema error in a file, how to fix it](https://epubcc.com/epubcheck/rsc-005/): EPUBCheck RSC-005 is an error message: “Error while parsing file: ….” A file does not follow the schema EPUB requires for it. An element, attribute or value is not allowed where it is, or something required is missing; the text after "Error while parsing file:" says which. It is the most common EPUBCheck error, and one structural mistake can cause several messages. - [RSC-006: remote resource not allowed, how to fix it](https://epubcc.com/epubcheck/rsc-006/): EPUBCheck RSC-006 is an error message: “Remote resource reference is not allowed in this context; resource "…" must be located in the EPUB container.” A resource is loaded from the web in a place where EPUB requires it to be inside the EPUB file. Only audio, video, fonts and resources fetched by scripts may stay remote; everything else must be in the container so the book works offline. - [RSC-006b: remote resource for a script, how to fix it](https://epubcc.com/epubcheck/rsc-006b/): EPUBCheck RSC-006b is a usage message: “Resource "…" is located outside the EPUB Container; please check the resource is retrieved in scripted content.” A resource is located outside the EPUB container, and EPUBCheck asks you to check that a script fetches it. It is a usage message, shown only with -u; resources retrieved through scripting APIs may legitimately be remote. - [EPUBCheck RSC-007: referenced file not found, how to fix it](https://epubcc.com/epubcheck/rsc-007/): EPUBCheck RSC-007 is an error message: “Referenced resource "…" could not be found in the EPUB.” A link or reference points to a file that is missing from the book. EPUBCheck reports the same text as RSC-007 (an error) and as RSC-007w (a warning, for references that do not break the publication's validity); the causes and the fix are the same. - [EPUBCheck RSC-008: file not in the manifest, how to fix it](https://epubcc.com/epubcheck/rsc-008/): EPUBCheck RSC-008 is an error message: “Referenced resource "…" is not declared in the OPF manifest.” A file exists in the EPUB and is referenced, but the package document's manifest does not list it. Every publication resource must be declared in the manifest, or reading apps may refuse to load it. - [EPUBCheck RSC-009: fragment on a raster image, how to fix it](https://epubcc.com/epubcheck/rsc-009/): EPUBCheck RSC-009 is a warning message: “A non-SVG image resource should not be defined with a fragment identifier.” A reference to a raster image (JPEG, PNG, GIF, WebP) includes a fragment identifier (#part), which only makes sense for SVG images. Reading apps ignore or mishandle the fragment, so the image may not show as intended. - [EPUBCheck RSC-010: link to a non-content file, how to fix it](https://epubcc.com/epubcheck/rsc-010/): EPUBCheck RSC-010 is an error message: “Reference to non-standard resource type found.” A hyperlink points to a file that is not a document a reading app can display, such as a plain image or another non-content file inside the EPUB. Links must lead to content documents (XHTML or SVG). - [RSC-011: link to a non-spine document, how to fix it](https://epubcc.com/epubcheck/rsc-011/): EPUBCheck RSC-011 is an error message: “Found a reference to a resource that is not a spine item.” A hyperlink points to a content document that is in the manifest but not in the spine, so reading apps may not be able to open it. Every document a reader can navigate to must be part of the spine. - [EPUBCheck RSC-012: broken fragment link (#id), how to fix it](https://epubcc.com/epubcheck/rsc-012/): EPUBCheck RSC-012 is an error message: “Fragment identifier is not defined.” A link points to a fragment (#id) that does not exist in the target document. The link opens the right file but cannot jump to the intended place, which is common with footnotes and table of contents entries. - [RSC-013: fragment on a stylesheet link, how to fix it](https://epubcc.com/epubcheck/rsc-013/): EPUBCheck RSC-013 is a usage message: “Fragment identifier is used in a reference to a stylesheet resource.” A reference to a stylesheet includes a fragment identifier (#part), which has no meaning for CSS files. It is a usage message: the stylesheet still loads, the fragment is just ignored. - [EPUBCheck RSC-014: fragment of the wrong type, how to fix it](https://epubcc.com/epubcheck/rsc-014/): EPUBCheck RSC-014 is a usage message: “Fragment identifier defines an incompatible resource type.” A fragment identifier points to something of a different type than the reference expects. It is a usage message, shown only with -u, for example a link that should target an SVG element but resolves to another kind of resource. - [EPUBCheck RSC-015: SVG use without a fragment, how to fix it](https://epubcc.com/epubcheck/rsc-015/): EPUBCheck RSC-015 is a usage message: “A fragment identifier is required for svg use tag references.” An SVG use element references a file without a fragment identifier; it must point to a specific element with #id. Without the fragment, the reading app does not know which shape to reuse. - [RSC-016: file is not well-formed XML, how to fix it](https://epubcc.com/epubcheck/rsc-016/): EPUBCheck RSC-016 is a fatal error message: “Fatal Error while parsing file: ….” A file is not well-formed XML, so it cannot be parsed at all. EPUB content documents must be valid XML, and reading apps may show an error page or nothing at all for that chapter. - [EPUBCheck RSC-017: parser warning in a file, how to fix it](https://epubcc.com/epubcheck/rsc-017/): EPUBCheck RSC-017 is a warning message: “Warning while parsing file: ….” The parser found something questionable that does not stop it from reading the file. It is a warning: the EPUB stays valid, but the text after the colon often points at a real mistake. - [EPUBCheck RSC-019: metadata.xml missing, how to fix it](https://epubcc.com/epubcheck/rsc-019/): EPUBCheck RSC-019 is a warning message: “EPUBs with Multiple Renditions should contain a META-INF/metadata.xml file.” The EPUB contains several renditions (more than one package document) but no META-INF/metadata.xml file. The multiple-renditions format recommends that file for metadata that applies to the whole container. - [RSC-020: invalid URL syntax in a link, how to fix it](https://epubcc.com/epubcheck/rsc-020/): EPUBCheck RSC-020 is an error message: “"…" is not a valid URL (…).” A URL in the EPUB is not syntactically valid. Reading apps may fail to follow the link or load the resource, and the message gives the URL and the reason in brackets. - [EPUBCheck RSC-024: informative parser warning, how to fix it](https://epubcc.com/epubcheck/rsc-024/): EPUBCheck RSC-024 is a usage message: “Informative parsing warning: ….” The parser reported an informative warning about a file. It is a usage message, shown only with -u, and it does not affect validity; the text after the colon is the parser's own note. - [EPUBCheck RSC-025: informative parser error, how to fix it](https://epubcc.com/epubcheck/rsc-025/): EPUBCheck RSC-025 is a usage message: “Informative parsing error: ….” The parser reported an informative parsing error about a file. It is a usage message, shown only with -u, so EPUBCheck does not count it against the EPUB; the text after the colon is the parser's description. - [EPUBCheck RSC-026: URL leaks outside the EPUB, how to fix it](https://epubcc.com/epubcheck/rsc-026/): EPUBCheck RSC-026 is an error message: “URL "…" leaks outside the container (it is not a valid-relative-ocf-URL-with-fragment string).” A relative URL climbs above the root of the EPUB (too many ../), pointing outside the container. Reading apps cannot follow it, so the link or resource is broken. - [EPUBCheck RSC-027: XML file encoded in UTF-16, how to fix it](https://epubcc.com/epubcheck/rsc-027/): EPUBCheck RSC-027 is a warning message: “XML document is encoded in UTF-16. It should be encoded in UTF-8 instead.” An XML file is encoded in UTF-16; EPUB recommends UTF-8 for every XML document. It is a warning: the file is still read, but some reading apps handle UTF-16 poorly. - [EPUBCheck RSC-028: XML file not in UTF-8, how to fix it](https://epubcc.com/epubcheck/rsc-028/): EPUBCheck RSC-028 is an error message: “XML documents must be encoded in UTF-8, but … was detected.” An XML file uses an encoding other than UTF-8, which EPUB requires for XML documents. Characters such as accents and quotes can show as garbage in reading apps. - [EPUBCheck RSC-029: data URL not allowed here, how to fix it](https://epubcc.com/epubcheck/rsc-029/): EPUBCheck RSC-029 is an error message: “Data URL is not allowed in this context.” A data: URL (content embedded in the URL itself) is used where EPUB does not allow it. EPUB 3.3 restricts data URLs so that every document a reader can navigate to is a real file in the container. - [EPUBCheck RSC-030: file URL not allowed, how to fix it](https://epubcc.com/epubcheck/rsc-030/): EPUBCheck RSC-030 is an error message: “File URLs are not allowed in EPUB, but found "…".” A file: URL points to a file on someone's computer; EPUB does not allow file URLs. Readers cannot reach the author's disk, so the link or image is broken for everyone. - [EPUBCheck RSC-031: remote resource over HTTP, how to fix it](https://epubcc.com/epubcheck/rsc-031/): EPUBCheck RSC-031 is a warning message: “Remote resource references should use HTTPS, but found "…".” A remote resource is referenced with http instead of https. It is a warning: some reading apps block insecure connections, so the resource may not load. - [RSC-032: foreign resource, no fallback, how to fix it](https://epubcc.com/epubcheck/rsc-032/): EPUBCheck RSC-032 is an error message: “Fallback must be provided for foreign resources, but found none for resource "…" of type "…".” A resource in a format reading apps are not required to support (a foreign resource) is used without a fallback in a core format. Without a fallback, apps that cannot display it show nothing. - [EPUBCheck RSC-033: query string in a URL, how to fix it](https://epubcc.com/epubcheck/rsc-033/): EPUBCheck RSC-033 is an error message: “Relative URL strings must not have a query component, but found one in "…".” A relative URL contains a query string (?key=value), which EPUB does not allow because there is no server to answer it. The reading app looks for a file whose name includes the query and does not find it. - [RSC-034: script without JS media type, how to fix it](https://epubcc.com/epubcheck/rsc-034/): EPUBCheck RSC-034 is an error message: “Scripts must have a JavaScript media type.” A script is declared with a media type that is not a JavaScript media type. EPUB 3.3 lists application/javascript, application/ecmascript and text/javascript as the core media types for scripts. - [RSC-035: legacy JavaScript media type, how to fix it](https://epubcc.com/epubcheck/rsc-035/): EPUBCheck RSC-035 is a usage message: “"…" is a legacy media type for JavaScript. Consider using 'text/javascript' instead.” A script uses a legacy media type for JavaScript, and EPUBCheck suggests text/javascript instead. It is a usage message, shown only with -u: the script still counts as JavaScript. - [EPUBCheck OPF-001: unreadable EPUB version, how to fix it](https://epubcc.com/epubcheck/opf-001/): EPUBCheck OPF-001 is an error message: “There was an error when parsing the EPUB version: ….” EPUBCheck could not read the EPUB version from the package document. The version attribute on the package element tells validators and reading apps which set of rules the book follows, so without a readable value the rest of the check is unreliable. - [EPUBCheck OPF-002: package document not found, how to fix it](https://epubcc.com/epubcheck/opf-002/): EPUBCheck OPF-002 is a fatal error message: “The OPF file "…" was not found in the EPUB.” The package document named in META-INF/container.xml is not in the archive. EPUBCheck stops there, because the package document lists every other file, so nothing else in the book can be checked until it is found. - [EPUBCheck OPF-003: file missing from manifest, how to fix it](https://epubcc.com/epubcheck/opf-003/): EPUBCheck OPF-003 is a usage message: “Item "…" exists in the EPUB, but is not declared in the OPF manifest.” A file is in the archive but not declared in the manifest. Reading apps work from the manifest, so an undeclared file may be ignored; this is a usage note, shown only when EPUBCheck runs with -u. - [EPUBCheck OPF-004: malformed prefix attribute, how to fix it](https://epubcc.com/epubcheck/opf-004/): EPUBCheck OPF-004 is a warning message: “Invalid prefix declaration: leading or trailing whitespace is not allowed.” The prefix attribute on the package element is not written in the syntax EPUB requires. That attribute maps short prefixes (such as ibooks) to vocabulary URIs, and EPUBCheck reports each kind of syntax mistake with its own variant of OPF-004. - [EPUBCheck OPF-005: prefix without a URI, how to fix it](https://epubcc.com/epubcheck/opf-005/): EPUBCheck OPF-005 is an error message: “Invalid prefix declaration: URI for prefix "…" doesn’t exist.” A prefix in the prefix attribute has no URI after it. Each prefix exists only to stand for a vocabulary URI, so a mapping without one cannot be used by any property in the package document. - [EPUBCheck OPF-006: invalid URI for a prefix, how to fix it](https://epubcc.com/epubcheck/opf-006/): EPUBCheck OPF-006 is an error message: “Invalid prefix declaration: URI "…" is not a valid URI.” The URI given for a prefix in the prefix attribute is not a valid URI. Properties that use the prefix expand to that URI, so an invalid value makes them meaningless to reading apps and validators. - [EPUBCheck OPF-007: forbidden prefix mapping, how to fix it](https://epubcc.com/epubcheck/opf-007/): EPUBCheck OPF-007 is a warning message: “Re-declaration of reserved prefix "…".” The prefix attribute declares a mapping that EPUB does not allow there, most often a re-declaration of a reserved prefix. EPUBCheck reports four related cases: OPF-007 (a warning) and OPF-007a, OPF-007b and OPF-007c (errors). - [EPUBCheck OPF-011: page on both spread sides, how to fix it](https://epubcc.com/epubcheck/opf-011/): EPUBCheck OPF-011 is an error message: “itemref can’t have both page-spread-right and page-spread-left properties.” A spine itemref has both the page-spread-right and page-spread-left properties. They tell a reading app on which side of a two-page spread the page goes, so having both is a contradiction and EPUB forbids it. - [OPF-012: property wrong for file type, how to fix it](https://epubcc.com/epubcheck/opf-012/): EPUBCheck OPF-012 is an error message: “Item property "…" is not defined for media type "…".” A manifest item has a property that does not apply to its media type. Manifest properties describe what a file is or contains, and each one is only defined for certain kinds of file. - [OPF-013: declared media types differ, how to fix it](https://epubcc.com/epubcheck/opf-013/): EPUBCheck OPF-013 is a warning message: “Resource "…" is declared with MIME type "…" in content, but has MIME type "…" in the package document.” A content document declares one media type for a resource and the manifest declares another. Reading apps may trust either value, so a mismatch can stop the resource from playing or displaying. - [EPUBCheck OPF-014: manifest property missing, how to fix it](https://epubcc.com/epubcheck/opf-014/): EPUBCheck OPF-014 is an error message: “The property "…" should be declared in the OPF file.” A content document uses a feature that must be declared on its manifest item, and the declaration is missing. EPUB requires these properties so reading apps know in advance which documents need SVG, MathML, scripting or network access. - [EPUBCheck OPF-015: unneeded manifest property, how to fix it](https://epubcc.com/epubcheck/opf-015/): EPUBCheck OPF-015 is an error message: “The property "…" should not be declared in the OPF file.” A manifest item declares a property that the document does not actually use, such as svg, mathml or scripted. EPUB asks for these properties to match the content, so a stale one is reported as an error. - [EPUBCheck OPF-016: rootfile without full-path, how to fix it](https://epubcc.com/epubcheck/opf-016/): EPUBCheck OPF-016 is an error message: “The element "rootfile" is missing its required attribute "full-path".” A rootfile element in META-INF/container.xml has no full-path attribute. That attribute is the only thing that tells reading apps where the package document is, so the book cannot be opened without it. - [EPUBCheck OPF-017: empty rootfile full-path, how to fix it](https://epubcc.com/epubcheck/opf-017/): EPUBCheck OPF-017 is an error message: “The attribute "full-path" on element "rootfile" must not be empty.” A rootfile element in META-INF/container.xml has an empty full-path attribute. The attribute must hold the path to the package document; an empty value leaves reading apps with nothing to open. - [EPUBCheck OPF-018: unneeded remote-resources, how to fix it](https://epubcc.com/epubcheck/opf-018/): EPUBCheck OPF-018 is a warning message: “The "remote-resources" property was declared in the Package Document, but no reference to remote resources has been found.” A manifest item declares remote-resources, but EPUBCheck found no reference to a remote resource in it. The property tells reading apps that the document needs the network, so it should only be there when it is true. - [OPF-018b: remote-resources unverified, how to fix it](https://epubcc.com/epubcheck/opf-018b/): EPUBCheck OPF-018b is a usage message: “The "remote-resources" property was declared in the Package Document, but no reference to remote resources has been found; please check scripted content to make sure the property is legit.” A manifest item declares remote-resources, no remote reference was found, and the document is scripted. Because a script can load files from the web at run time, EPUBCheck cannot tell, so it only reports a usage note (shown with -u). - [EPUBCheck OPF-021: unregistered URI scheme, how to fix it](https://epubcc.com/epubcheck/opf-021/): EPUBCheck OPF-021 is a warning message: “Use of non-registered URI scheme type in href: "…".” An href uses a URI scheme that is not registered, unlike http, https or mailto. Reading apps may not know what to do with an unregistered scheme, so the link can fail silently. - [OPF-025: list where one value needed, how to fix it](https://epubcc.com/epubcheck/opf-025/): EPUBCheck OPF-025 is an error message: “Property value list "…" is not allowed, only one value must be specified.” A metadata property that takes a single value was given a list of values. EPUBCheck names the list it found, and reading apps would not know which of the values to use. - [EPUBCheck OPF-026: malformed property value, how to fix it](https://epubcc.com/epubcheck/opf-026/): EPUBCheck OPF-026 is an error message: “Found malformed property value: "…".” A property value is malformed, for example a prefix with nothing after the colon. Property values must be a name, optionally preceded by a prefix and a colon, and nothing else. - [EPUBCheck OPF-027: property not in vocabulary, how to fix it](https://epubcc.com/epubcheck/opf-027/): EPUBCheck OPF-027 is an error message: “Undefined property: "…".” A property is not defined in the vocabulary it belongs to, so reading apps will not understand it. EPUBCheck knows the EPUB vocabularies and checks every unprefixed or reserved-prefix property against them. - [EPUBCheck OPF-028: prefix used but undeclared, how to fix it](https://epubcc.com/epubcheck/opf-028/): EPUBCheck OPF-028 is an error message: “Undeclared prefix: "…".” A property uses a prefix that is not declared in the package document's prefix attribute. Apart from the reserved prefixes, every prefix must be mapped to a vocabulary URI before it can be used. - [EPUBCheck OPF-029: file is not its media type, how to fix it](https://epubcc.com/epubcheck/opf-029/): EPUBCheck OPF-029 is an error message: “The file "…" does not appear to match the media type …, as specified in the OPF file.” A file's content does not match the media type declared for it in the manifest. EPUBCheck looks at the file itself, so a wrong declaration can make reading apps try to decode it in the wrong format. - [OPF-030: unique-identifier not found, how to fix it](https://epubcc.com/epubcheck/opf-030/): EPUBCheck OPF-030 is an error message: “The unique-identifier "…" was not found.” The package element's unique-identifier attribute names an id that no dc:identifier element has. EPUB requires the book's main identifier to be marked this way, so the book has no valid identity until it is fixed. - [EPUBCheck OPF-031: guide link to missing file, how to fix it](https://epubcc.com/epubcheck/opf-031/): EPUBCheck OPF-031 is an error message: “File listed in reference element in guide was not declared in OPF manifest: ….” A reference in the EPUB 2 guide element points to a file that is not in the manifest. The guide is a legacy list of key places (cover, table of contents, start), and its targets must be declared files. - [EPUBCheck OPF-032: guide link to non-document, how to fix it](https://epubcc.com/epubcheck/opf-032/): EPUBCheck OPF-032 is an error message: “Guide references "…" which is not a valid "OPS Content Document".” A reference in the guide element points to a file that is not a content document. The EPUB 2 guide may only point to documents a reading app can open as pages, such as XHTML chapters. - [EPUBCheck OPF-033: no linear spine items, how to fix it](https://epubcc.com/epubcheck/opf-033/): EPUBCheck OPF-033 is an error message: “The spine contains no linear resources.” Every item in the spine is marked linear="no", so there is nothing to read from start to end. The spine defines the reading order, and at least one document has to belong to it. - [EPUBCheck OPF-034: document twice in spine, how to fix it](https://epubcc.com/epubcheck/opf-034/): EPUBCheck OPF-034 is an error message: “The spine contains multiple references to the manifest item with id "…".” The spine lists the same manifest item more than once. EPUB allows each document to appear only once in the reading order, so a duplicate makes the book invalid. - [OPF-035: XHTML declared as text/html, how to fix it](https://epubcc.com/epubcheck/opf-035/): EPUBCheck OPF-035 is a warning message: “Media type "text/html" is not appropriate for XHTML/OPS.” A content document is declared as text/html in an EPUB 2 package; EPUB content documents are XHTML and need application/xhtml+xml. Reading apps may treat a text/html document as an unsupported type. - [EPUBCheck OPF-036: video type may not play, how to fix it](https://epubcc.com/epubcheck/opf-036/): EPUBCheck OPF-036 is a usage message: “Video type "…" might not be supported by reading systems.” A video uses a media type that reading apps may not support. This is a usage note (shown with -u), and EPUBCheck suggests video/mp4, video/h264 or video/webm instead. - [EPUBCheck OPF-037: deprecated media type, how to fix it](https://epubcc.com/epubcheck/opf-037/): EPUBCheck OPF-037 is a warning message: “Found deprecated media-type "…".” An EPUB 2 manifest uses a deprecated media type, which EPUBCheck names. In EPUB 2 these are the old OEB types such as text/x-oeb1-document, kept only for compatibility with very old publications. - [EPUBCheck OPF-040: fallback item not found, how to fix it](https://epubcc.com/epubcheck/opf-040/): EPUBCheck OPF-040 is an error message: “Fallback item with id "…" could not be found.” A manifest item's fallback attribute names an id that no manifest item has. Fallbacks let a reading app switch to another format it can render, so a broken fallback chain can leave content unreadable. - [EPUBCheck OPF-041: fallback-style not found, how to fix it](https://epubcc.com/epubcheck/opf-041/): EPUBCheck OPF-041 is an error message: “Fallback-style item with id "…" could not be found.” An EPUB 2 manifest item's fallback-style attribute names an id that no manifest item has. In EPUB 2, fallback-style points to a stylesheet to use with a non-standard document, so a missing target breaks it. - [OPF-042: file type not allowed in spine, how to fix it](https://epubcc.com/epubcheck/opf-042/): EPUBCheck OPF-042 is an error message: “"…" is not a permissible spine media-type.” An EPUB 2 spine lists a file of a type that is never allowed in the spine, such as a stylesheet or an image. EPUBCheck names the media type; the spine is the reading order and only lists documents. - [OPF-043: spine item without fallback, how to fix it](https://epubcc.com/epubcheck/opf-043/): EPUBCheck OPF-043 is an error message: “Spine item with non-standard media-type "…" has no fallback.” The spine lists a file that is not an EPUB content document and gives no fallback to one. Reading apps must be able to show every spine item, so a foreign file needs a fallback chain ending in XHTML or SVG. - [EPUBCheck OPF-044: fallback has no XHTML, how to fix it](https://epubcc.com/epubcheck/opf-044/): EPUBCheck OPF-044 is an error message: “Spine item with non-standard media-type "…" has no EPUB content document fallback.” A spine item of a non-standard media type has a fallback chain, but no item in that chain is an EPUB content document. EPUB requires every spine fallback chain to end in a document reading apps can always show. - [EPUBCheck OPF-045: circular fallback chain, how to fix it](https://epubcc.com/epubcheck/opf-045/): EPUBCheck OPF-045 is an error message: “Encountered circular reference in fallback chain.” A manifest fallback chain is circular: following the fallback attributes leads back to an item already in the chain. A reading app looking for a format it can render would loop forever. - [EPUBCheck OPF-048: missing unique-identifier, how to fix it](https://epubcc.com/epubcheck/opf-048/): EPUBCheck OPF-048 is an error message: “Package tag is missing its required unique-identifier attribute and value.” The package element has no unique-identifier attribute, which is required. It points to the dc:identifier that identifies the book, and reading apps use it to tell books and editions apart. - [EPUBCheck OPF-049: manifest id not found, how to fix it](https://epubcc.com/epubcheck/opf-049/): EPUBCheck OPF-049 is an error message: “Item id "…" was not found in the manifest.” Something refers to a manifest id that does not exist, for example a spine itemref idref or the spine's toc attribute. Every such reference must match the id of an item element in the manifest. - [EPUBCheck OPF-050: spine toc is not an NCX, how to fix it](https://epubcc.com/epubcheck/opf-050/): EPUBCheck OPF-050 is an error message: “TOC attribute references resource with non-NCX mime type; "application/x-dtbncx+xml" is expected.” The spine's toc attribute points to an item that is not an NCX file. In EPUB 2 (and in EPUB 3 books that keep an NCX for old readers) toc must name the NCX item. - [EPUBCheck OPF-053: date in nonstandard format, how to fix it](https://epubcc.com/epubcheck/opf-053/): EPUBCheck OPF-053 is a warning message: “Date value "…" does not follow recommended syntax as per http://www.w3.org/TR/NOTE-datetime:….” A date in the metadata does not follow the recommended W3C date and time format, so some apps may not read it. EPUBCheck quotes the value and the reason. - [EPUBCheck OPF-054: invalid metadata date, how to fix it](https://epubcc.com/epubcheck/opf-054/): EPUBCheck OPF-054 is an error message: “Date value "…" is not valid as per http://www.w3.org/TR/NOTE-datetime:….” A date in the metadata is not a valid date. EPUBCheck quotes the value and the reason, and an invalid date is an error rather than a style warning. - [EPUBCheck OPF-055: empty EPUB 2 metadata tag, how to fix it](https://epubcc.com/epubcheck/opf-055/): EPUBCheck OPF-055 is a warning message: “… tag is empty.” A metadata element in an EPUB 2 package document is empty, and EPUBCheck names it. Empty metadata gives reading apps and stores nothing to show, so it is reported as a warning. - [OPF-060: duplicate file names in ZIP, how to fix it](https://epubcc.com/epubcheck/opf-060/): EPUBCheck OPF-060 is an error message: “Duplicate entry in the ZIP file: "…" (file names must be unique after Unicode canonical normalization and full case folding).” Two files in the ZIP have names that are the same once case and Unicode normalisation are ignored, such as Image.jpg and image.jpg. EPUB requires file names to stay unique under those rules. - [EPUBCheck OPF-062: Adobe page-map in spine, how to fix it](https://epubcc.com/epubcheck/opf-062/): EPUBCheck OPF-062 is a usage message: “Found Adobe page-map attribute on spine element in opf file.” The spine uses Adobe's old page-map attribute, a proprietary way of mapping print pages. It is a usage note (shown with -u): the attribute is not part of EPUB 3. - [OPF-063: Adobe page-map item missing, how to fix it](https://epubcc.com/epubcheck/opf-063/): EPUBCheck OPF-063 is a warning message: “Referenced Adobe page-map item "…" was not found in the manifest.” The spine's Adobe page-map attribute names an item that is not in the manifest. The attribute points to a proprietary page-map file, and EPUBCheck could not find it. - [EPUBCheck OPF-065: refines metadata loop, how to fix it](https://epubcc.com/epubcheck/opf-065/): EPUBCheck OPF-065 is an error message: “Invalid metadata declaration, probably due to a cycle in "refines" metadata.” Metadata refines chains loop back on themselves, so EPUBCheck cannot resolve what refines what. Each meta element with refines describes another element, and following those links must end somewhere. - [EPUBCheck OPF-066: pagination source missing, how to fix it](https://epubcc.com/epubcheck/opf-066/): EPUBCheck OPF-066 is an error message: “Missing "dc:source" or "source-of" pagination metadata. The pagination source must be identified using the "dc:source" and "source-of" properties when the content includes page break markers.” The content marks print page breaks but the metadata does not say which print edition the page numbers come from. EPUB requires the pagination source when page-break markers are present. - [EPUBCheck OPF-067: file in link and manifest, how to fix it](https://epubcc.com/epubcheck/opf-067/): EPUBCheck OPF-067 is an error message: “The resource "…" must not be listed both as a "link" element in the package metadata and as a manifest item.” The same resource is listed both as a link in the metadata and as a manifest item. EPUB treats linked records and publication resources differently, so a file must be one or the other. - [OPF-070: invalid collection role URL, how to fix it](https://epubcc.com/epubcheck/opf-070/): EPUBCheck OPF-070 is a warning message: “Custom collection role "…" is an invalid URL.” A collection element's role is written as a URL, but the URL is not valid. Custom collection roles must be absolute URLs; built-in roles such as index are plain names. - [EPUBCheck OPF-072: empty Dublin Core element, how to fix it](https://epubcc.com/epubcheck/opf-072/): EPUBCheck OPF-072 is a usage message: “Metadata element "…" is empty.” A Dublin Core metadata element in an EPUB 2 package document is empty, and EPUBCheck names it. It is a usage note (shown with -u), but an empty field still gives reading apps nothing to display. - [OPF-073: DOCTYPE identifier not allowed, how to fix it](https://epubcc.com/epubcheck/opf-073/): EPUBCheck OPF-073 is an error message: “External identifiers must not appear in the document type declaration.” An XML document's DOCTYPE uses an external identifier (a public or system id) that EPUB does not allow for that media type. EPUB only permits a short list, such as the SVG 1.1, MathML 3.0 and NCX DTDs. - [EPUBCheck OPF-074: same file in two items, how to fix it](https://epubcc.com/epubcheck/opf-074/): EPUBCheck OPF-074 is an error message: “Package resource "…" is declared in several manifest items.” The same file is declared by more than one manifest item. Each publication resource must be listed once, so a reading app can rely on one id and one media type per file. - [EPUBCheck OPF-085: invalid UUID identifier, how to fix it](https://epubcc.com/epubcheck/opf-085/): EPUBCheck OPF-085 is a warning message: “"dc:identifier" value "…" is marked as a UUID, but is an invalid UUID.” A dc:identifier says it is a UUID (urn:uuid:) but the value is not a valid UUID. Reading apps and stores may use the identifier to recognise the book, so a malformed one is reported. - [OPF-086: deprecated package property, how to fix it](https://epubcc.com/epubcheck/opf-086/): EPUBCheck OPF-086 is a warning message: “Property "…" is deprecated. Consider using … instead.” A metadata property is deprecated; EPUBCheck names the property and the replacement to use. Deprecated properties still work in many reading apps, but newer ones may ignore them. - [OPF-086b: deprecated epub:type value, how to fix it](https://epubcc.com/epubcheck/opf-086b/): EPUBCheck OPF-086b is a usage message: “epub:type value "…" is deprecated. Consider using … instead.” An epub:type value is deprecated; EPUBCheck names the value and its replacement. It is a usage note (shown with -u), for example "note" replaced by "footnote" or "endnote". - [OPF-086c: deprecated reserved prefix, how to fix it](https://epubcc.com/epubcheck/opf-086c/): EPUBCheck OPF-086c is a warning message: “the "…" reserved prefix is deprecated.” A reserved prefix that EPUB has deprecated is used or declared, and EPUBCheck names it. In EPUBCheck 5.4.0 these are the xsd, msv and prism prefixes, which EPUB 3.3 no longer recommends. - [EPUBCheck OPF-088: unknown epub:type value, how to fix it](https://epubcc.com/epubcheck/opf-088/): EPUBCheck OPF-088 is a usage message: “Unrecognized epub:type value "…".” An epub:type value is not in the EPUB structural semantics vocabulary, so reading apps will ignore it. It is a usage note (shown with -u) and does not make the EPUB invalid. - [EPUBCheck OPF-089: alternate link with others, how to fix it](https://epubcc.com/epubcheck/opf-089/): EPUBCheck OPF-089 is an error message: “The "alternate" link rel keyword cannot be paired with other keywords.” A metadata link uses rel="alternate" together with other keywords. EPUB says the alternate keyword must stand alone, because it marks a different representation of the whole package document. - [EPUBCheck OPF-090: older media type used, how to fix it](https://epubcc.com/epubcheck/opf-090/): EPUBCheck OPF-090 is a usage message: “It is encouraged to use MIME media type "…" instead of "…".” The manifest uses an older media type where a newer one is preferred; EPUBCheck names both. It is a usage note (shown with -u): the older type is still accepted. - [EPUBCheck OPF-091: fragment in manifest href, how to fix it](https://epubcc.com/epubcheck/opf-091/): EPUBCheck OPF-091 is an error message: “The item href URL must not have a fragment identifier.” A manifest item's href contains a fragment identifier (the part of a URL after the hash sign). Manifest items declare whole files, so their URLs must not point inside a file. - [EPUBCheck OPF-092: malformed language tag, how to fix it](https://epubcc.com/epubcheck/opf-092/): EPUBCheck OPF-092 is an error message: “Language tag "…" is not well-formed: ….” A language tag in the EPUB is not a well-formed BCP 47 tag. EPUBCheck quotes the tag and the reason; reading apps use the language for hyphenation, fonts and text-to-speech. - [OPF-093: local link without media type, how to fix it](https://epubcc.com/epubcheck/opf-093/): EPUBCheck OPF-093 is an error message: “The "media-type" attribute is required for linked resources located in the EPUB container.” A link element in the metadata points to a file inside the EPUB but has no media-type attribute. For local resources EPUB requires the media type, so reading apps know what the linked file is. - [EPUBCheck OPF-094: link needs a media type, how to fix it](https://epubcc.com/epubcheck/opf-094/): EPUBCheck OPF-094 is an error message: “The "media-type" attribute is required for "…" links.” A metadata link of a type that requires a media type has none. EPUB requires media-type on record and voicing links, and EPUBCheck names the rel value. - [EPUBCheck OPF-095: voicing link not audio, how to fix it](https://epubcc.com/epubcheck/opf-095/): EPUBCheck OPF-095 is an error message: “The "media-type" attribute of "voicing" links must be an audio MIME type, but found "…".” A voicing link in the metadata declares a media type that is not audio. A voicing link points to a recording of a title or name being spoken, so its media type must be an audio type. - [OPF-096: non-linear page unreachable, how to fix it](https://epubcc.com/epubcheck/opf-096/): EPUBCheck OPF-096 is an error message: “Non-linear content must be reachable, but found no hyperlink to "…".” A document marked linear="no" in the spine is not linked from anywhere, so readers cannot reach it. Non-linear documents are skipped when paging through the book and are only reachable through links. - [OPF-096b: non-linear page maybe hidden, how to fix it](https://epubcc.com/epubcheck/opf-096b/): EPUBCheck OPF-096b is a usage message: “No hyperlink was found to non-linear document "…", please check that it can be reached from scripted content.” A non-linear document has no hyperlink pointing to it, and the book contains scripts. A script might provide the link at run time, so EPUBCheck only reports a usage note (shown with -u). - [EPUBCheck OPF-097: manifest file never used, how to fix it](https://epubcc.com/epubcheck/opf-097/): EPUBCheck OPF-097 is a usage message: “Resource "…" is listed in the manifest, but no reference to it was found in content documents.” A file is listed in the manifest but nothing in the content references it. It is a usage note (shown with -u): the file is valid but probably unused, which makes the EPUB larger for no reason. - [EPUBCheck OPF-098: link to package element, how to fix it](https://epubcc.com/epubcheck/opf-098/): EPUBCheck OPF-098 is an error message: “The "href" attribute must reference resources, not elements in the package document, but found URL "…".” A metadata link's href points to an element inside the package document itself (a URL with #id). Link elements must reference resources, not parts of the package document. - [EPUBCheck OPF-099: manifest lists the OPF, how to fix it](https://epubcc.com/epubcheck/opf-099/): EPUBCheck OPF-099 is an error message: “The manifest must not list the package document.” The manifest lists the package document itself, which is not allowed. The package document is found through META-INF/container.xml and describes the publication; it is not a resource of it. - [OPF-100: fixed-layout property on text, how to fix it](https://epubcc.com/epubcheck/opf-100/): EPUBCheck OPF-100 is a usage message: “The "…" property only applies to pre-paginated content.” A property that only applies to fixed-layout (pre-paginated) content is set on reflowable content. It is a usage note (shown with -u), and the property is ignored there. - [EPUBCheck HTM-001: XML version is not 1.0, how to fix it](https://epubcc.com/epubcheck/htm-001/): EPUBCheck HTM-001 is an error message: “Any publication resource that is an XML-based media type must be a valid XML 1.0 document. XML version found: ….” An XML file in the EPUB declares an XML version other than 1.0. EPUB requires every XML-based resource (XHTML chapters, the package document, the NCX, SVG images) to be a valid XML 1.0 document, and EPUBCheck names the version it found. - [EPUBCheck HTM-003: external entity declared, how to fix it](https://epubcc.com/epubcheck/htm-003/): EPUBCheck HTM-003 is an error message: “External entities are not allowed in EPUB v3 documents. External entity declaration found: ….” An EPUB 3 document declares an external entity, which EPUB does not allow. External entities pull text from another file through the DOCTYPE, and reading apps do not resolve them, so the text would be missing. - [EPUBCheck HTM-004: unexpected DOCTYPE found, how to fix it](https://epubcc.com/epubcheck/htm-004/): EPUBCheck HTM-004 is an error message: “Irregular DOCTYPE: found "…", expected "…".” A document has a DOCTYPE other than the one expected for its type and EPUB version. EPUBCheck shows the DOCTYPE it found and the one it expected, so the fix is usually to copy the expected one. - [HTM-007: empty ssml:ph pronunciation, how to fix it](https://epubcc.com/epubcheck/htm-007/): EPUBCheck HTM-007 is a warning message: “Empty or whitespace-only value of attribute ssml:ph.” An ssml:ph attribute is empty or contains only whitespace. The attribute gives a phonetic pronunciation for text-to-speech, so an empty one gives the speech engine nothing to use. - [EPUBCheck HTM-009: obsolete DOCTYPE to remove, how to fix it](https://epubcc.com/epubcheck/htm-009/): EPUBCheck HTM-009 is an error message: “The DOCTYPE provided is obsolete or irregular and can be removed.” A document's DOCTYPE is obsolete or irregular and can simply be removed. EPUB only allows a few external identifiers in DOCTYPEs (for MathML, the NCX and SVG 1.1); anything else is reported. - [EPUBCheck HTM-010: unusual epub namespace, how to fix it](https://epubcc.com/epubcheck/htm-010/): EPUBCheck HTM-010 is a usage message: “Namespace "…" is unusual for the prefix "epub".” The epub prefix is bound to an unusual namespace, so epub:type and other epub attributes may be ignored. Reading apps only recognise these attributes in the namespace http://www.idpf.org/2007/ops; with any other URI they are just unknown attributes. EPUBCheck reports it as a usage note and shows the namespace found. - [EPUBCheck HTM-011: undeclared named entity, how to fix it](https://epubcc.com/epubcheck/htm-011/): EPUBCheck HTM-011 is an error message: “Entity is undeclared.” A named entity is used that the document does not declare. XML only knows &, <, >, " and ', so HTML names such as   break the XHTML and the chapter may not open at all. - [EPUBCheck HTM-025: unregistered URI scheme, how to fix it](https://epubcc.com/epubcheck/htm-025/): EPUBCheck HTM-025 is a warning message: “Non-registered URI scheme type found in href.” A link uses a URI scheme that is not registered. EPUBCheck warns because reading apps may not know what to do with it; the book stays valid. - [EPUBCheck HTM-044: unused namespace declared, how to fix it](https://epubcc.com/epubcheck/htm-044/): EPUBCheck HTM-044 is a usage message: “Namespace uri "…" was included but not used.” A namespace is declared in a document but never used. It is a usage note: harmless, reported only so you can tidy the markup, and it does not make the EPUB invalid. - [EPUBCheck HTM-045: empty href in a link, how to fix it](https://epubcc.com/epubcheck/htm-045/): EPUBCheck HTM-045 is a usage message: “Encountered empty href.” A link has an empty href, which points back to the same document. It is valid, and EPUBCheck only reports it as a usage note so you can check that a self-link was intended. - [HTM-046: fixed layout without viewport, how to fix it](https://epubcc.com/epubcheck/htm-046/): EPUBCheck HTM-046 is an error message: “Fixed layout document has no "viewport" meta element.” A fixed-layout XHTML document has no viewport meta element, so reading apps do not know its page size. In fixed layout, the width and height in the viewport define each page's coordinate space; without them the page cannot be laid out as designed. - [EPUBCheck HTM-047: viewport syntax error, how to fix it](https://epubcc.com/epubcheck/htm-047/): EPUBCheck HTM-047 is an error message: “Viewport metadata "…" has a syntax error.” The viewport meta element of a fixed-layout document has a syntax error. The content attribute must be a list of name=value properties separated by commas, semicolons or spaces, and EPUBCheck quotes the value it could not parse. - [EPUBCheck HTM-048: SVG page without viewBox, how to fix it](https://epubcc.com/epubcheck/htm-048/): EPUBCheck HTM-048 is an error message: “SVG Fixed-Layout Documents must have a "viewBox" attribute (on the outermost "svg" element).” A fixed-layout document built as SVG has no viewBox on its outermost svg element, so its size is unknown. For SVG fixed-layout pages the viewBox is what defines the page's dimensions. - [EPUBCheck HTM-051: Microdata without RDFa, how to fix it](https://epubcc.com/epubcheck/htm-051/): EPUBCheck HTM-051 is a warning message: “Found Microdata semantic enrichments but no RDFa. EDUPUB recommends using RDFa Lite.” The content uses Microdata but no RDFa, and the EDUPUB profile recommends RDFa Lite. EPUBCheck only reports this when it validates against the EDUPUB profile, set by dc:type metadata or by running it with -profile edupub. It is a warning: the EPUB stays valid. - [EPUBCheck HTM_054: reserved custom namespace, how to fix it](https://epubcc.com/epubcheck/htm_054/): EPUBCheck HTM_054 is an error message: “Custom attribute namespace ("…") must not include the string "…" in its domain.” A custom attribute uses a namespace whose domain contains w3.org or idpf.org. EPUB allows prefixed custom attributes only in namespaces outside those two domains, which are reserved for the standards themselves. - [EPUBCheck HTM_055: discouraged HTML element, how to fix it](https://epubcc.com/epubcheck/htm_055/): EPUBCheck HTM_055 is a usage message: “The "…" element should not be used (discouraged construct).” The document uses an HTML element that EPUB discourages. EPUB 3.3 lists base, rp and embed as discouraged constructs because they cause interoperability problems; EPUBCheck names the element and reports it as a usage note. - [HTM_056: viewport missing a dimension, how to fix it](https://epubcc.com/epubcheck/htm_056/): EPUBCheck HTM_056 is an error message: “Viewport metadata has no "…" dimension (both "width" and "height" properties are required).” A fixed-layout viewport declares only one dimension, and both width and height are required. EPUBCheck names the dimension that is missing. - [EPUBCheck HTM_057: invalid viewport value, how to fix it](https://epubcc.com/epubcheck/htm_057/): EPUBCheck HTM_057 is an error message: “Viewport "…" value must be a positive number or the keyword "device-…".” A viewport width or height is not a positive number or the matching device keyword. EPUB allows a plain positive number or device-width for width and device-height for height. - [EPUBCheck HTM_058: HTML file saved as UTF-16, how to fix it](https://epubcc.com/epubcheck/htm_058/): EPUBCheck HTM_058 is an error message: “HTML documents must be encoded in UTF-8, but UTF-16 was detected.” An HTML document is encoded in UTF-16, and EPUB's XHTML documents must be UTF-8. Some reading apps show garbled text or refuse to open a chapter in another encoding. - [EPUBCheck HTM_059: viewport property repeated, how to fix it](https://epubcc.com/epubcheck/htm_059/): EPUBCheck HTM_059 is an error message: “Viewport "…" property must not be defined more than once, but found values […].” A viewport defines the same property twice with different values. EPUB forbids more than one width or height definition in a viewport meta element, and EPUBCheck lists the values it found. - [HTM_060b: viewport that will be ignored, how to fix it](https://epubcc.com/epubcheck/htm_060b/): EPUBCheck HTM_060b is a usage message: “EPUB reading systems must ignore viewport meta elements in reflowable documents; viewport declaration "…" will be ignored.” A viewport meta element will be ignored by reading apps, so it has no effect. EPUBCheck reports this usage note in two cases. HTM_060b is a viewport in a reflowable document, where reading apps must ignore it. HTM_060a is a second (or later) viewport in a fixed-layout document, where only the first one counts. - [EPUBCheck HTM_061: invalid data-* attribute, how to fix it](https://epubcc.com/epubcheck/htm_061/): EPUBCheck HTM_061 is an error message: “"…" is not a valid custom data attribute (it must have at least one character after the hyphen, be XML-compatible, and not contain ASCII uppercase letters).” A data-* attribute name is not valid. A custom data attribute needs at least one character after the hyphen, no uppercase ASCII letters and only characters allowed in XML names. - [EPUBCheck HTM_062: deprecated SVG xlink:href, how to fix it](https://epubcc.com/epubcheck/htm_062/): EPUBCheck HTM_062 is a usage message: “SVG "xlink:href" attribute is deprecated; an "href" attribute should be used instead.” An SVG element uses xlink:href, which is deprecated in favour of plain href. EPUBCheck reports two usage notes about it. HTM_062 means xlink:href is used. HTM_063 means an element has both xlink:href and href with different values, so different apps may load different targets. - [EPUBCheck CSS-001: forbidden CSS property, how to fix it](https://epubcc.com/epubcheck/css-001/): EPUBCheck CSS-001 is an error message: “The "…" property must not be included in an EPUB Style Sheet.” The stylesheet uses a property that EPUB does not allow in its style sheets. EPUB 3.3 forbids direction and unicode-bidi in CSS, because reading apps may switch CSS off and the text direction would then be lost; EPUBCheck names the property. - [CSS-002: empty url() reference in CSS, how to fix it](https://epubcc.com/epubcheck/css-002/): EPUBCheck CSS-002 is an error message: “Empty or NULL reference found.” The CSS has an empty reference, such as url() with nothing inside. An empty reference points nowhere, so reading apps cannot load anything from it, and EPUBCheck reports it as an error. - [EPUBCheck CSS-003: CSS file saved as UTF-16, how to fix it](https://epubcc.com/epubcheck/css-003/): EPUBCheck CSS-003 is a warning message: “CSS document is encoded in UTF-16. It should be encoded in UTF-8 instead.” A CSS file is encoded in UTF-16, and UTF-8 is recommended. EPUB 3.3 allows UTF-8 or UTF-16 for stylesheets, so this is only a warning, but UTF-8 is the encoding every reading app handles. - [EPUBCheck CSS-004: CSS file not in UTF-8, how to fix it](https://epubcc.com/epubcheck/css-004/): EPUBCheck CSS-004 is an error message: “CSS documents must be encoded in UTF-8, detected …;.” A CSS file uses an encoding other than UTF-8 or UTF-16, which EPUB does not allow. Accented letters and symbols in content: strings or font names can then display wrongly; EPUBCheck names the encoding it detected. - [EPUBCheck CSS-005: conflicting style tags, how to fix it](https://epubcc.com/epubcheck/css-005/): EPUBCheck CSS-005 is a usage message: “Conflicting alternate style tags found: ….” A link to a stylesheet carries alternate style tags that contradict each other. Alternate style tags are class names on link elements (horizontal or vertical, day or night) that tell a reading app when to use each stylesheet, and EPUBCheck lists the conflicting ones. - [EPUBCheck CSS-006: CSS fixed positioning, how to fix it](https://epubcc.com/epubcheck/css-006/): EPUBCheck CSS-006 is a usage message: “CSS selector specifies fixed position.” A CSS rule uses position: fixed, which reading apps handle inconsistently in paginated text. It is a usage note, not an error: the element may stay on screen, disappear or overlap the text depending on the app. - [EPUBCheck CSS-007: non-standard font type, how to fix it](https://epubcc.com/epubcheck/css-007/): EPUBCheck CSS-007 is an info message: “Font-face reference "…" refers to non-standard font type "…".” An @font-face rule points to a font in a format EPUB does not list as a core font type. EPUB's core font types are TrueType, OpenType, WOFF and WOFF2; other formats may be ignored and the text shown in a default font. EPUBCheck reports it as information. - [EPUBCheck CSS-008: syntax error in a CSS file, how to fix it](https://epubcc.com/epubcheck/css-008/): EPUBCheck CSS-008 is an error message: “An error occurred while parsing the CSS: ….” The CSS parser found a syntax error in a stylesheet or style element. EPUBCheck reports the parser's own description and the line and column, and rules after the error may be skipped by reading apps. - [CSS-015: alternate CSS without title, how to fix it](https://epubcc.com/epubcheck/css-015/): EPUBCheck CSS-015 is an error message: “Alternative style sheets must have a title.” An alternative style sheet has no title attribute. A link with rel="alternate stylesheet" needs a title, because the title is what a reading app shows when offering the alternative style. - [EPUBCheck CSS-019: empty @font-face rule, how to fix it](https://epubcc.com/epubcheck/css-019/): EPUBCheck CSS-019 is a warning message: “CSS font-face declaration has no attributes.” An @font-face rule is empty, so it declares no font. EPUBCheck warns because the rule does nothing and usually means a font was removed only halfway. - [EPUBCheck CSS-028: font-face declaration used, how to fix it](https://epubcc.com/epubcheck/css-028/): EPUBCheck CSS-028 is a usage message: “Use of Font-face declaration.” The book declares fonts with @font-face. This is a usage note shown only with EPUBCheck's -u option, to record that the book embeds or references fonts; it is not a problem in itself. - [CSS-029: undeclared overlay CSS class, how to fix it](https://epubcc.com/epubcheck/css-029/): EPUBCheck CSS-029 is a usage message: “Found CSS class name "…" but no "…" property was declared in the package document.” The CSS uses a media overlay highlighting class name, but the package document does not declare the matching property. With media overlays, the class that highlights the text being read aloud must be declared in the package metadata (media:active-class or media:playback-active-class); EPUBCheck names both the class and the missing property. - [EPUBCheck CSS-030: overlay styles without CSS, how to fix it](https://epubcc.com/epubcheck/css-030/): EPUBCheck CSS-030 is an error message: “The package document declares media overlays styling class names but no CSS was found in the content document.” The package declares media overlay styling class names, but a chapter with narration has no CSS. EPUB requires every content document with a media overlay to include a stylesheet, linked or embedded, that defines those classes, otherwise the text being read is not highlighted as intended. - [EPUBCheck NAV-001: nav document in EPUB 2, how to fix it](https://epubcc.com/epubcheck/nav-001/): EPUBCheck NAV-001 is an error message: “The nav file is not supported for EPUB v2.” An EPUB 2 publication includes an EPUB 3 navigation document, which EPUB 2 does not support. EPUBCheck validates the book by the version declared in the package document, and in version 2.0 the table of contents is the NCX. - [NAV-003: page breaks without page list, how to fix it](https://epubcc.com/epubcheck/nav-003/): EPUBCheck NAV-003 is an error message: “The Navigation Document must have a page list when content document(s) contain page breaks (epub:type="pagebreak").” The content marks page breaks (epub:type="pagebreak") but the navigation document has no page list. Page-break markers exist so readers can go to a printed page number, and without a page list there is no way to reach them. - [NAV-006: no list of figures or tables, how to fix it](https://epubcc.com/epubcheck/nav-006/): EPUBCheck NAV-006 is a usage message: “Content documents contain "figure" elements but the Navigation Document does not have a listing of figures (epub:type="loi").” The content has figures, tables, audio or video, but the navigation document has no list of them. EPUBCheck shows these usage notes only with -u. NAV-006 is figures without a list of illustrations (epub:type="loi"), NAV-007 tables without a list of tables ("lot"), NAV-005 audio without "loa" and NAV-008 video without "lov". The lists are optional. - [EPUBCheck NAV-010: nav links to a website, how to fix it](https://epubcc.com/epubcheck/nav-010/): EPUBCheck NAV-010 is an error message: “"…" nav must not link to remote resources; found link to "…".” A table of contents, page list or landmarks entry links to a remote resource. Links in these three navs must point to a document inside the EPUB, and EPUBCheck names the nav type and the URL it found. - [EPUBCheck NAV-011: nav entries out of order, how to fix it](https://epubcc.com/epubcheck/nav-011/): EPUBCheck NAV-011 is a warning message: “"…" nav must be in reading order; link target "…" is before the previous link’s target in … order.” The entries of a nav are not in reading order. A link points to a place before the previous entry's target, in spine order or within a document, and EPUBCheck names both. - [EPUBCheck NCX-001: NCX uid does not match OPF, how to fix it](https://epubcc.com/epubcheck/ncx-001/): EPUBCheck NCX-001 is an error message: “NCX identifier ("…") does not match OPF identifier ("…").” The NCX's dtb:uid does not match the package's unique identifier. The NCX is the EPUB 2 table of contents, and its dtb:uid must repeat the identifier the package document names in unique-identifier, or some older reading systems may reject the file. - [EPUBCheck NCX-004: whitespace in NCX uid, how to fix it](https://epubcc.com/epubcheck/ncx-004/): EPUBCheck NCX-004 is a usage message: “NCX identifier ("dtb:uid" metadata) should not contain leading or trailing whitespace.” The NCX's dtb:uid value has spaces or line breaks before or after it. The identifier should match the package's unique identifier exactly, and extra whitespace can make a strict comparison fail. - [EPUBCheck NCX-006: empty label in the NCX, how to fix it](https://epubcc.com/epubcheck/ncx-006/): EPUBCheck NCX-006 is a usage message: “Empty "text" label in the NCX document.” An NCX navigation entry has an empty text label, so the table of contents shows a blank line. The NCX is the EPUB 2 table of contents that older reading systems use. - [MED-003: img in picture not core type, how to fix it](https://epubcc.com/epubcheck/med-003/): EPUBCheck MED-003 is an error message: “Picture "img" elements must reference core media type resources, but found resource "…" of type "…".” An img inside a picture element points to an image in a format that is not a core media type. Inside picture, the img must always reference a core image type (JPEG, PNG, GIF, WebP or SVG) so every reading app can show it; EPUBCheck names the file and its type. - [EPUBCheck MED-004: image header looks damaged, how to fix it](https://epubcc.com/epubcheck/med-004/): EPUBCheck MED-004 is an error message: “Image file header may be corrupted.” An image file's header looks damaged, so the image may not display. EPUBCheck reads the first bytes of each image to check its format and size, and here they do not make sense. - [EPUBCheck MED-005: non-standard overlay audio, how to fix it](https://epubcc.com/epubcheck/med-005/): EPUBCheck MED-005 is an error message: “Media Overlay audio reference … to non-standard audio type … found.” A media overlay points to an audio file that is not a core audio type. Narration in media overlays must use MP3, AAC in an MP4 container, or Opus in an Ogg container; EPUBCheck names the file and its type. - [EPUBCheck MED-008: clipBegin after clipEnd, how to fix it](https://epubcc.com/epubcheck/med-008/): EPUBCheck MED-008 is an error message: “The time specified in the clipBegin attribute must not be after clipEnd.” In a media overlay, a clip's clipBegin time is after its clipEnd time. The end of each audio clip must come after its start, or the reading app cannot play the narration for that phrase. - [EPUBCheck MED-009: zero-length overlay clip, how to fix it](https://epubcc.com/epubcheck/med-009/): EPUBCheck MED-009 is an error message: “The time specified in the clipBegin attribute must not be the same as clipEnd.” In a media overlay, a clip's clipBegin and clipEnd are the same, so the clip has no duration. Nothing would play for that phrase, and EPUBCheck reports it as an error. - [MED_007: picture source without type, how to fix it](https://epubcc.com/epubcheck/med_007/): EPUBCheck MED_007 is an error message: “Picture "source" elements must define a "type" attribute when they reference foreign resources; found resource "…" of type "…".” A source element inside picture references a foreign resource without a type attribute. A reading app uses the type to skip formats it cannot show, so a non-core image format must say what it is; EPUBCheck names the file and its type. - [EPUBCheck MED_010: no media-overlay attribute, how to fix it](https://epubcc.com/epubcheck/med_010/): EPUBCheck MED_010 is an error message: “EPUB Content Documents referenced from a Media Overlay must specify the "media-overlay" attribute.” A content document is used by a media overlay, but its manifest item has no media-overlay attribute. The attribute is how the reading app finds the narration for a chapter, so without it the audio is never played. - [MED_011: chapter in two media overlays, how to fix it](https://epubcc.com/epubcheck/med_011/): EPUBCheck MED_011 is an error message: “EPUB Content Document referenced from multiple Media Overlay Documents.” A content document is referenced from more than one media overlay. The media-overlay attribute names a single SMIL file per chapter, so the narration of one chapter has to be in one overlay. - [EPUBCheck MED_012: media-overlay id mismatch, how to fix it](https://epubcc.com/epubcheck/med_012/): EPUBCheck MED_012 is an error message: “The "media-overlay" attribute does not match the ID of the Media Overlay that refers to this document.” The media-overlay attribute of a chapter names a different overlay from the one that refers to it. The SMIL file that narrates a chapter and the chapter's manifest item must point at each other. - [MED_013: overlay never cites chapter, how to fix it](https://epubcc.com/epubcheck/med_013/): EPUBCheck MED_013 is an error message: “Media Overlay Document referenced from the "media-overlay" attribute does not contain a reference to this Content Document.” A chapter's media-overlay attribute names a SMIL file that never refers to that chapter. The overlay must contain text elements pointing to the chapter it narrates, otherwise the reading app has nothing to synchronise. - [MED_014: fragment in overlay audio URL, how to fix it](https://epubcc.com/epubcheck/med_014/): EPUBCheck MED_014 is an error message: “Media overlay audio file URLs must not have a fragment, but found '#…'.” A media overlay audio URL has a fragment (#part), which is not allowed. The part of the audio file to play is given by clipBegin and clipEnd, not by a fragment in the URL. - [MED_015: overlay out of reading order, how to fix it](https://epubcc.com/epubcheck/med_015/): EPUBCheck MED_015 is a usage message: “Media overlay text references must be in reading order. Text target "…" is before the previous link target in … order.” The text references of a media overlay are not in reading order. A text target comes before the previous one in the document, so narration would jump backwards; EPUBCheck reports it as a usage note with -u. - [MED_016: overlay duration sum mismatch, how to fix it](https://epubcc.com/epubcheck/med_016/): EPUBCheck MED_016 is a warning message: “Media Overlays total duration should be the sum of the durations of all Media Overlays documents.” The total media overlay duration in the package does not match the sum of each overlay's duration. EPUB asks for the total (media:duration without refines) to equal the sum, within one second. - [EPUBCheck MED_017: overlay fragment not an id, how to fix it](https://epubcc.com/epubcheck/med_017/): EPUBCheck MED_017 is a warning message: “URL fragment should indicate an element ID, but found '#…'.” A media overlay text reference uses a fragment that is not an element id. For XHTML chapters, EPUB recommends pointing to an element by its id; other fragment schemes may not be supported by reading apps. EPUBCheck warns and shows the fragment. - [MED_018: bad SVG fragment in overlay, how to fix it](https://epubcc.com/epubcheck/med_018/): EPUBCheck MED_018 is a warning message: “URL fragment should be an SVG fragment identifier, but found '#…'.” A media overlay text reference into an SVG document uses a fragment that is not an SVG fragment identifier. EPUB recommends SVG fragment identifiers there, because reading apps may not support other schemes; EPUBCheck warns and shows the fragment. - [EPUBCheck ACC-009: MathML without alt text, how to fix it](https://epubcc.com/epubcheck/acc-009/): EPUBCheck ACC-009 is a usage message: “MathML should either have an "alttext" attribute or "annotation-xml" child element.” A MathML equation has no text alternative, neither an alttext attribute nor an annotation-xml element. Screen readers that cannot read MathML then have nothing to say for the equation. It is a usage note shown with -u. - [EPUBCheck ACC-011: SVG link without a name, how to fix it](https://epubcc.com/epubcheck/acc-011/): EPUBCheck ACC-011 is a usage message: “SVG hyperlink has no accessible name.” A link inside SVG has no accessible name, so screen readers cannot announce where it goes. It is a usage note shown with -u, and it matters for books that claim accessibility conformance. - [EPUBCheck OBS-001: outdated feature in use, how to fix it](https://epubcc.com/epubcheck/obs-001/): EPUBCheck OBS-001 is a usage message: “Usage of … is outdated.” The EPUB uses a feature that still works but is outdated. EPUBCheck names it: an NCX, font obfuscation, a manifest content fallback, a deprecated element or property, or a prefixed CSS property or value. It is a usage note. - [INF-001: EPUBCheck rule under review, how to fix it](https://epubcc.com/epubcheck/inf-001/): EPUBCheck INF-001 is an info message: “Rule … is under review and its severity may change in a future release. See the discussion at ….” The rule behind a message is under review and its severity may change in a later EPUBCheck release. The note names the rule and links to the public discussion, so you can see why it may change. - [CHK-001: custom message file problem, how to fix it](https://epubcc.com/epubcheck/chk-001/): EPUBCheck CHK-001 is an error message: “The custom message overrides file was not found.” EPUBCheck could not use the custom message file passed with -c (--customMessages). CHK-001 means the file was not found, and CHK-002 to CHK-007 report other problems in it. These messages are about that file, not about the EPUB. - [CHK-008: item skipped after an error, how to fix it](https://epubcc.com/epubcheck/chk-008/): EPUBCheck CHK-008 is an error message: “Error encountered while processing an item "…"; skip other checks for the item.” EPUBCheck hit an unexpected problem while processing one item of the EPUB and skipped the remaining checks for that item. The message names the item; the rest of the book is still checked. ## File deletion timeline - Unfinished upload: 60 minutes after the last piece arrived. - Your original PDF: As soon as the whole book is converted, or 2 hours after its last conversion. - The EPUB: 1 hour after your first download, or 24 hours after it's ready, whichever comes first. - Everything: Immediately, when you press “Delete now”. ## Plans - Free (free): up to 100 pages a month; files up to 100 pages and 20 MB. - Pro (US$9/month): up to 1,500 pages a month; files up to 1,000 pages and 100 MB. - Business (US$29/month): up to 6,000 pages a month; files up to 2,000 pages and 200 MB. ## What EpubCC does NOT claim - It does not promise a perfect conversion. Detected problems are shown to the user as warnings. - Scanned PDFs (OCR) are not supported yet; they will be a separate, later option. - Calibre has not been measured in the benchmark; no numeric comparison with it is claimed. - The benchmark measures extracted text, not chapter detection or how the EPUB looks on a device. - User files are private: never published, deleted automatically on the timeline above, never used for training or benchmarks without explicit permission. - Prices and quotas are current offers, not long-term guarantees. No plan is unlimited. - EpubCC is not affiliated with the W3C or the former IDPF. EPUB is their trademark.