ABR Offline Converter
Conversor de archivos que funciona entero en el navegador. Imágenes, vídeo, audio, PDF, fuentes, subtítulos, texto y datos, con 192 páginas de conversión, y un Taller del libro que monta un EPUB completo a partir de capítulos en Markdown. Sin servidores, instalable y usable sin conexión.





- servidores
- 0
- servidores
- páginas de conversión
- 192
- páginas de conversión
- tipos de archivo
- 8
- tipos de archivo
- tests (Vitest)
- 305
- tests (Vitest)
Qué hace
- Imágenes. PNG, JPG, WebP, GIF, BMP, ICO y TIFF entre sí, y AVIF y fotos HEIC del iPhone como entrada. Calidad, ancho y alto con proporción bloqueada, y ajustes distintos para cada archivo si hace falta.
- Vídeo y audio. MP4, WebM, AVI, MKV, MOV y OGV entre sí, vídeo a GIF animado, y sacar el audio de un vídeo a MP3, WAV, OGG, FLAC, AAC, M4A u Opus. Con recorte por inicio y fin.
- PDF. Cada página a PNG, JPG o WebP, o varias imágenes a un PDF en A4, Carta o al tamaño de la imagen.
- Fuentes, subtítulos, texto y datos. TTF, OTF, WOFF y WOFF2; SRT, VTT y ASS; Markdown, HTML, TXT y EPUB; CSV y JSON.
- Comparar antes y después con un deslizador sobre la imagen convertida.
- Por lotes. Sueltas o pegas (Ctrl+V) varios archivos y los descargas todos en un ZIP.
- Taller del libro. Sueltas los capítulos de un libro en Markdown y sale un EPUB con portada, índice, dedicatoria, epígrafe, créditos, numeración automática y tipografía corregida.
- Una página para cada conversión, de
/convertir/jpg-a-pnga/convertir/csv-a-json, en español e inglés. - Instalable y sin conexión, con tema claro u oscuro.
Cómo está hecho
Todo en el navegador
Nuxt 4 genera un sitio estático, y todo el trabajo lo hacen el navegador y WebAssembly. Ningún archivo sale del dispositivo. El motor de vídeo, ffmpeg.wasm, se descarga la primera vez que se usa y queda guardado en la caché de la PWA.
Un worker por tipo de trabajo
Las imágenes se convierten en un Web Worker con OffscreenCanvas, y el vídeo y el audio en otro con ffmpeg. La interfaz no se congela aunque conviertas un vídeo largo.
Codificadores a mano
El canvas del navegador sabe exportar PNG, JPG y WebP, pero no BMP, ICO ni TIFF. Esos tres los escribí yo, byte a byte, con sus tests.
EPUB3 sin pandoc
El Taller del libro genera el XHTML de cada capítulo, el índice navegable (nav y NCX), los metadatos y una portada dibujada en canvas, y lo empaqueta con client-zip.
Problemas que resolví
- HEIC no funcionaba dentro del worker. La librería que decodifica HEIC necesita
document, que no existe en un worker. La decodificación pasó al hilo principal y el resto sigue en el worker. - Las páginas por conversión no se generaban. Un
await setLocaleal principio de los componentes rompía el prerender de Nitro: fallaban unas 400 rutas que en desarrollo iban bien. Con un cambio de idioma síncrono se generan las 811. - CSV del mundo real. Saltos de línea al final, archivos de una sola columna y JSON con claves distintas en cada fila. Ahora se aprovechan todas las columnas y solo paran la conversión los errores de verdad.
- ffmpeg acumulaba listeners. Cada conversión añadía otro listener de progreso. Ahora se guarda la referencia y se quita al acabar.
- Un EPUB que valga para cualquier lector.
mimetypeprimero y sin comprimir, NCX para lectores antiguos, portada marcada como tal y comillas latinas anidadas sin tocar el código y respetando los apóstrofos.