EPUB FACTORY
Sobre EPUB / Fundamentos
Fundamentos

¿Qué hay dentro de un archivo EPUB?
descomprímelo y mira la maquinaria

Un archivo EPUB es en realidad un ZIP. Cambia la extensión y cualquiera puede abrirlo y verlo. Este artículo recorre qué hay realmente ahí dentro cuando lo desempaquetas y qué hace cada archivo. Una vez conoces la maquinaria, puedes adivinar dónde mirar cuando algo no se muestra.
En este artículo
  1. Descomprimir un EPUB
  2. La forma general
  3. mimetype ── el archivo más extraño
  4. container.xml ── la señal
  5. content.opf ── el corazón del libro
  6. nav.xhtml ── el índice
  7. Texto, CSS e imágenes
  8. Por qué construirlo a mano es difícil

Descomprimir un EPUB

Empieza por hacerlo. Si tienes un EPUB a mano, esto es todo lo que hace falta.

1Copia el archivo EPUB (para no dañar el original)
2Cambia la extensión de .epub a .zip
3Descomprímelo como siempre

Ya está. Sin software especial. Un EPUB es un ZIP, así que se desempaqueta sin siquiera un aviso.

Al revés no funciona

Podrías pensar «si se descomprime, entonces comprimir una carpeta y renombrarla a .epub hace un EPUB». No es tan simple, por las reglas sobre cómo debe comprimirse que se describen en la siguiente sección.

La forma general

Desempaquetado, suele verse así.

La carpeta desempaquetada
├── mimetype       marca esta caja como EPUB
├── META-INF/
│  └── container.xml  señaliza dónde está el libro en sí
└── OEBPS/       la carpeta que contiene el libro
  ├── content.opf   datos del libro, lista de contenidos, orden de lectura
  ├── nav.xhtml    índice
  ├── text/
  │  ├── p001.xhtml  el texto (un archivo por página)
  │  └── p002.xhtml
  ├── image/
  │  └── cover.jpg   la portada y otras imágenes
  └── style/
    └── book.css   aspecto

OEBPS — ese nombre de carpeta, y cómo se reparten las cosas dentro de ella, varían según la herramienta que lo construyó. Podría ser item o xhtml en su lugar, y no pasa nada.

Lo que no puedes cambiar, ni de nombre ni de posición, es mimetype al principio y META-INF/container.xml . Esos dos son fijos y todo lo demás es libre: ese es el paso uno para entender la estructura.

mimetype ── el archivo más extraño

Su contenido es una sola línea.

application/epub+zip

Su función es declarar «este ZIP es un EPUB». Pero viene con reglas estrictas que ningún otro archivo tiene.

Una aplicación de lectura puede decidir «esto es un EPUB» leyendo solo los primeros bytes del archivo. Por eso la posición y la forma están fijadas.

Aquí es donde caen primero los EPUB hechos a mano

Comprime una carpeta con una herramienta corriente y no puedes elegir el orden de los archivos, y el mimetype se comprime junto con todo lo demás. El resultado: lo renombras a .epub y las aplicaciones de lectura no lo abren.

Cumplir la condición de «el primero, sin comprimir» implica ejecutar la compresión en dos pasos separados. Eso es lo primerísimo que hace una herramienta de construcción de EPUB.

container.xml ── la señal

META-INF/container.xml tiene este aspecto.

<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="OEBPS/content.opf"
      media-type="application/oebps-package+xml"/>
  </rootfiles>
</container>

Hace exactamente una cosa: dice «los datos del libro están en OEBPS/content.opf ».

Gracias a esa señal los nombres de carpeta pueden ser libres. Una aplicación de lectura mira primero META-INF/container.xml y va adonde apunte.

content.opf ── el corazón del libro

Este es el archivo más importante de un EPUB. Se divide en tres partes.

ParteQué hace
metadataTítulo, autor, idioma: los datos propios del libro
manifestUna lista de todos los archivos incluidos
spineEl orden en que se pasan las páginas

metadata ── los datos del libro

<metadata>
  <dc:title>Alicia en el país de las maravillas</dc:title>
  <dc:creator>Lewis Carroll</dc:creator>
  <dc:language>es</dc:language>
  <dc:identifier id="uid">urn:uuid:xxxxxxxx</dc:identifier>
  <meta property="dcterms:modified">2026-08-04T00:00:00Z</meta>
</metadata>

El que hay que vigilar es dc:title . Lo que aparece en la estantería de una aplicación de lectura es este valor, no el nombre del archivo. Por muy bien que hayas nombrado el archivo, si esto está vacío la estantería muestra «Untitled».

dc:language también importa. Pon es para español, ja para japonés. Sin él, una aplicación de lectura puede no aplicar las reglas de composición del idioma, algo que se nota sobre todo en japonés.

manifest ── la lista de archivos incluidos

<manifest>
  <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
  <item id="p001" href="text/p001.xhtml" media-type="application/xhtml+xml"/>
  <item id="css" href="style/book.css" media-type="text/css"/>
  <item id="cover" href="image/cover.jpg" media-type="image/jpeg"/>
</manifest>

Todos los archivos del EPUB tienen que registrarse aquí. Añade una imagen y olvida registrarla, y solo eso ya es un error. Al revés —registrada pero no presente— también es un error.

El archivo del índice se marca con properties="nav" , que es como dice «este archivo es el índice».

spine ── el orden de lectura

<spine page-progression-direction="rtl">
  <itemref idref="p001"/>
  <itemref idref="p002"/>
</spine>

manifest es la lista de lo que hay dentro; spine es en qué orden se lee. El orden de aquí se convierte en el orden de páginas.

Y la parte que más importa en un libro japonés es page-progression-direction .

ValorSignificadoLibros que lo usan
rtlAvanza de derecha a izquierdaEscritura vertical, manga
ltrAvanza de izquierda a derechaEscritura horizontal

Déjalo fuera de un libro compuesto en vertical y las páginas pasan al revés. Es de lo primero que hay que comprobar cuando la escritura vertical no funciona.

nav.xhtml ── el índice

EPUB 3 exige siempre el índice como archivo propio. Parece una lista corriente de enlaces en HTML, distinguida por la marca epub:type="toc" .

<nav epub:type="toc">
  <ol>
    <li><a href="text/p001.xhtml">Capítulo 1</a></li>
    <li><a href="text/p002.xhtml">Capítulo 2</a></li>
  </ol>
</nav>

Esto es lo que sale cuando el lector pulsa el botón de índice. Si falta un archivo enlazado, tienes un libro por el que no se puede navegar.

Puede que también encuentres toc.ncx ahí dentro

En el antiguo EPUB 2, un archivo llamado toc.ncx hacía el trabajo del índice. EPUB 3 lo sustituyó por nav.xhtml , pero algunos EPUB incluyen los dos para que las aplicaciones de lectura antiguas sigan funcionando.

Texto, CSS e imágenes

De aquí en adelante es prácticamente igual que una página web.

Cómo repartas el texto es cosa tuya, pero un archivo demasiado grande vuelve lentas a las aplicaciones de lectura, así que repartir por capítulos es lo normal.

Por qué construirlo a mano es difícil

Como has visto, la estructura de un EPUB no es complicada. Texto, imágenes e instrucciones de diseño empaquetados en una caja con una señal y una lista — eso es todo.

Las reglas que hay que obedecer, en cambio, son quisquillosas.

Si falta uno, el libro no abre o lo rechazan al enviarlo a la tienda. Y la causa del error normalmente no se ve en lo que aparece en pantalla.

Por eso en producción real se usa una herramienta que monta la estructura a partir de un manuscrito o de imágenes. Aun así, haber mirado dentro una vez significa que puedes adivinar dónde mirar cuando algo falla — que es el objetivo de este artículo.

La estructura se monta por ti

EPUB FACTORY construye automáticamente cada parte de la estructura descrita aquí. Solo tienes que elegir una carpeta de imágenes o un manuscrito de texto. Sin cuenta y sin instalar nada.

Probar EPUB FACTORY