Cómo funciona la conversión de archivos en el navegador

Cuando escuchas «tu archivo nunca sale de tu navegador», puede sonar a eslogan de marketing. No lo es. Es una descripción técnica precisa de cómo los navegadores modernos procesan archivos usando APIs web. Esto es exactamente lo que ocurre.

📂

File API

Lee archivos de tu disco a la memoria del navegador sin enviarlos a ningún lugar.

⚙️

WebAssembly

Ejecuta código compilado a velocidad nativa (C/C++/Rust) dentro del sandbox del navegador.

🖼️

Canvas API

Dibuja, transforma y codifica imágenes íntegramente en el navegador.

🧵

Web Workers

Ejecuta el procesamiento intensivo en un hilo de fondo para que la interfaz siga respondiendo.

Paso 1: leer el archivo — la File API

Cuando seleccionas o sueltas un archivo, la File API del navegador le da acceso a JavaScript como objeto File. El navegador lo lee en memoria usando un FileReader o file.arrayBuffer().

Esta es una lectura local. No se realiza ninguna solicitud de red. Los datos del archivo entran en la memoria del navegador (RAM), exactamente como si abrieras el archivo en una aplicación de escritorio.

Punto clave: un archivo leído mediante la File API no es diferente a una aplicación de escritorio abriendo un archivo desde el disco. Los datos nunca tocan la red.

Paso 2: procesamiento — WebAssembly, Canvas y JavaScript

Una vez que el archivo está en memoria, se ejecuta la lógica de conversión. Distintos tipos de conversión usan diferentes tecnologías del navegador:

Operaciones PDF (unir, dividir, rotar) — pdf-lib vía JavaScript

pdf-lib es una biblioteca JavaScript pura que analiza, crea y modifica archivos PDF. Operaciones como unir dos PDFs o rotar páginas ocurren como transformaciones de arrays en memoria.

Renderizado PDF (PDF a imágenes) — pdfjs-dist vía WebAssembly

PDF.js (el renderizador PDF de código abierto de Mozilla) se compila a WebAssembly y renderiza páginas PDF en elementos canvas HTML. Sin servidor. Sin plugin.

Operaciones de imagen (comprimir, redimensionar, convertir) — Canvas API

La Canvas API le da a JavaScript acceso directo a un buffer de píxeles. canvas.toBlob() codifica los datos de píxeles como JPEG o WebP usando el códec integrado del navegador.

Paso 3: mantener la interfaz responsiva — Web Workers

JavaScript es de un solo hilo por defecto. Procesar un PDF de 50 MB en el hilo principal congelaría tu pestaña del navegador. El trabajo computacionalmente intensivo se delega a un Web Worker.

Los Web Workers están aislados: no pueden acceder al DOM, a las cookies ni a la red a menos que les des permiso explícitamente.

Paso 4: descargar el resultado

Una vez completado el procesamiento, el resultado es un Blob en memoria. El navegador crea una URL temporal (URL.createObjectURL) y activa una descarga. El archivo va directamente de la memoria del navegador a tu disco local.

¿Y los límites de rendimiento?

El procesamiento en el navegador está limitado por la RAM y la CPU disponibles en tu dispositivo. Los navegadores modernos pueden manejar cómodamente archivos de hasta varios cientos de megabytes.

  • Un PDF de 100 páginas suele tener entre 5 y 15 MB — procesado en segundos
  • Una foto de 20 MP ocupa unos 60 MB sin comprimir en memoria — se maneja fácilmente
  • Un lote de 50 imágenes se procesa secuencialmente, cada una rápidamente

La garantía del sandbox

Los módulos WebAssembly operan dentro del sandbox de seguridad del navegador. El código no puede acceder a tu sistema de archivos más allá de lo que concedas explícitamente, ni hacer solicitudes de red a menos que las inicie el JavaScript de la página.

Puedes verificar que no se realiza ninguna solicitud de red durante una conversión abriendo las DevTools (F12), cambiando a la pestaña Red y observando mientras ejecutas una conversión.

Transparencia de código abierto

Las bibliotecas principales utilizadas por converteo.app son de código abierto y auditables:

  • pdf-lib — licencia MIT, auditable en GitHub
  • PDF.js — Apache 2.0, desarrollado por Mozilla
  • libheif/libde265 — decodificación HEIC, LGPL

Preguntas frecuentes

¿El navegador necesita descargar la biblioteca de conversión?

Sí — una vez. Los módulos JavaScript y WebAssembly se descargan cuando visitas por primera vez la página de la herramienta. Esta descarga es el código de la biblioteca, no tu archivo.

¿Qué ocurre con mi archivo cuando cierro la pestaña?

El navegador libera la memoria usada por tu archivo. No queda ningún rastro del archivo original ni de su versión convertida.

¿Podría el JavaScript del sitio subir secretamente mi archivo?

Para converteo.app, puedes abrir la pestaña Red y verificar en tiempo real que no se produce ninguna subida de archivos. También puedes usar uBlock Origin para bloquear todas las solicitudes salientes — la conversión seguirá funcionando.

¿Es seguro WebAssembly?

WebAssembly se ejecuta dentro del mismo sandbox de seguridad que JavaScript. No puede acceder al sistema de archivos, a la red ni al sistema operativo directamente. Ha sido estandarizado por el W3C desde 2019.