Cómo funcionan las herramientas de archivos en el navegador (y por qué no se sube nada)

Las herramientas de archivos en el navegador hacen el trabajo dentro de la página y no en un servidor. Tu archivo lo lee el File API del disco, lo procesa un motor WebAssembly como qpdf o FFmpeg que se ejecuta en la pestaña, y se escribe de vuelta como descarga. No existe ningún paso de subida, así que no se envía nada.

La arquitectura tiene tres partes. Las APIs de File y Blob mueven bytes entre tu disco y la página sin un viaje de ida y vuelta por la red. WebAssembly ejecuta motores que originalmente se escribieron para el escritorio, y por eso los resultados coinciden con una herramienta de escritorio en lugar de con una aproximación web simplificada. Canvas, Web Workers y MediaRecorder cubren las tareas que necesitan dibujo, procesamiento en segundo plano o una cámara. El intercambio es que la primera ejecución descarga el motor, y todo tiene que caber en la memoria de una pestaña.

La página de inicio de Aihangsoft en tema oscuro, con el encabezado Todas las herramientas de imagen, PDF y vídeo, justo en tu navegador
La insignia encima del titular es toda la premisa del sitio: el trabajo ocurre en el navegador, así que no hay ningún paso de subida en el que confiar o desconfiar.

La mayoría de la gente conoce esta idea por una línea de privacidad en una página de herramientas: los archivos nunca salen de tu dispositivo. Esa frase es verdadera o no lo es, y lo decide la arquitectura y no la intención. Esta guía explica qué puede ejecutar realmente hoy un navegador, por qué desaparece el paso de subida cuando se construye así y los costes que conlleva.

Compresor de imágenes

Un ejemplo concreto. Canvas y OxiPNG se ejecutan en la pestaña, los tamaños antes y después se muestran uno junto al otro, y el archivo nunca se sube.

Prueba una herramienta local

Dos arquitecturas: el viaje de ida y vuelta al servidor y la pestaña local

La mayoría de los convertidores online siguen la misma forma. Tu navegador envía el archivo a un servidor con una subida HTTP, el servidor ejecuta una herramienta como ImageMagick o un FFmpeg sin interfaz, y vuelve un enlace de descarga. El trabajo es real y a menudo rápido, pero el archivo tiene que salir de tu máquina para que ocurra, y se queda en esa máquina todo el tiempo que el operador lo conserve.

Una herramienta en el navegador mantiene los mismos pasos y elimina el servidor. Leer el archivo, ejecutar el motor y escribir el resultado ocurren en la pestaña. Eso no es una pequeña variación del modelo de subida. Elimina toda una clase de problemas, porque no hay transferencia que interceptar, ni cola en la que esperar, ni ventana de retención que leer.

PasoHerramienta basada en servidorHerramienta en el navegador
Leer el archivoCopiado en su almacenamientoLeído por el File API, se queda en local
ProcesamientoSu CPU, normalmente en colaTu CPU, dentro de la pestaña
ResultadoUn enlace de descarga que caducaUna descarga Blob, lista de inmediato
Quién puede leer el archivoCualquiera con acceso a su almacenamientoSolo tú

Qué ejecuta realmente el navegador

Un breve recorrido por la pila técnica, porque estas capacidades son lo que hace posible la promesa de privacidad, y no una capa de marketing añadida por encima.

WebAssembly lleva los motores de escritorio a la pestaña

WebAssembly es un formato binario compacto que se ejecuta a una velocidad cercana a la nativa dentro de una máquina virtual aislada. Los motores escritos en C, C++ o Rust se compilan a él y se envían como archivos normales: qpdf para el cifrado de PDF, FFmpeg para vídeo y audio, Tesseract para el reconocimiento óptico de caracteres, pdf-lib para construir y editar PDF, y OxiPNG para la optimización sin pérdida de PNG. PDF.js se encarga del renderizado de PDF y la extracción de texto. Como son los mismos motores que se usan en el escritorio, la salida no es una aproximación web: un vídeo codificado por la compilación de FFmpeg en tu pestaña es la salida de FFmpeg.

Canvas y el flujo de trabajo de imagen

Las imágenes son la única categoría que no necesita WebAssembly. La API de Canvas expone la misma superficie de dibujo que usa un editor de imágenes nativo. createImageBitmap descodifica un archivo, un canvas contiene los píxeles y toBlob codifica el resultado de vuelta a PNG, JPEG, WebP o AVIF. Recortar, redimensionar, poner marca de agua y convertir formatos son todas operaciones de píxeles sobre esa superficie. La Compresor de imágenes lo combina con OxiPNG para la salida PNG, que recomprime el archivo sin pérdida en lugar de tirar la calidad.

Los Web Workers mantienen viva la interfaz

El trabajo pesado en el hilo principal congela la página, así que las tareas largas se ejecutan en un Web Worker, un hilo en segundo plano sin acceso al DOM. Las herramientas de vídeo entregan el trabajo a FFmpeg dentro de un worker y reciben de vuelta líneas de registro y eventos de progreso, y por eso la barra de progreso sigue moviéndose mientras el codificador está ocupado. Tesseract sigue el mismo patrón. Cabe destacar que la configuración de OCR de aquí usa una compilación del motor de un solo hilo, así que no necesita las cabeceras de SharedArrayBuffer que muchas herramientas WebAssembly requieren del servidor.

File y Blob mueven los bytes

El File API es lo que sustituye a la subida. Cuando sueltas un archivo en la página, JavaScript recibe un objeto File, y file.arrayBuffer() lee sus bytes en memoria cuando se piden. El resultado es un Blob, que puede convertirse en una URL local temporal o entregarse directamente a una descarga. Los bytes viajan del disco a la memoria y de vuelta, y no hay ninguna ruta de código en ese bucle que hable con la red. Esto también explica por qué una herramienta en el navegador no tiene límite de tamaño de subida impuesto por un servidor, solo el límite de memoria del dispositivo.

Por qué el procesamiento local significa que no se sube nada

La afirmación es fácil de enunciar y fácil de verificar. Subir es una petición de red que lleva tu archivo, y una herramienta en el navegador nunca la hace, porque no hay nada al otro lado que la necesite. Las únicas peticiones que hace una página como esta son para su propio código y sus recursos: el HTML, la hoja de estilos, el motor en el primer uso y la fuente.

No tienes que fiarte de eso. Abre las herramientas de desarrollador del navegador, cambia al panel de red, límpialo, luego procesa un archivo y observa. Las peticiones que aparecen llevan código y recursos. Ninguna de ellas lleva tu documento, y si te desconectas de la red después de que el motor se haya cargado, el procesamiento sigue funcionando. Hay una guía más larga, paso a paso, sobre comprobar si una herramienta sube tu archivo si quieres el procedimiento completo.

Petición que verásQué conlleva
La página, su CSS y su JavaScriptCódigo del sitio, no tu archivo
El motor, en el primer usoUna herramienta compilada, almacenada en caché después
Fuentes webUna tipografía
Script de analíticaUna vista de página, no los bytes del archivo

La última fila importa porque es la fuente habitual de falsas alarmas. La analítica se carga en la página e informa de que se vio una página, no del contenido de tu documento. Este sitio carga Google Tag Manager, y por eso el panel de red muestra un script de Google. Esa petición informa de una vista de página, y no es una transferencia de archivo.

Qué pagas por ello

El procesamiento local no es gratis, y la versión honesta del argumento merece exponerse claramente. Aparecen tres costes, y un cuarto punto explica dónde se detiene el navegador.

  • La primera ejecución descarga. Cada motor se obtiene una vez: unos 30 MB para el núcleo de FFmpeg detrás de las herramientas de vídeo y audio, unos 6.7 MB para el motor de OCR y los datos de inglés, unos 1.3 MB para el motor de PDF y unos 1.4 MB para el worker de PDF.js usado para las vistas previas de página. Nada de eso es tu archivo, y todo se almacena en caché, pero un arranque en frío con una conexión lenta es un arranque lento.
  • La memoria es el techo. Todo lo que el motor lee y escribe vive en una sola pestaña. Una herramienta de escritorio transmite un archivo grande desde el disco, mientras que una pestaña del navegador lo mantiene, así que un vídeo o un PDF enorme puede agotar la memoria antes de terminar. Algunas herramientas indican un tope duro por esta razón, como el límite de 50 MB de la herramienta de desbloqueo de PDF.
  • Un servidor puede ser más rápido. La codificación de vídeo depende de la CPU, y una máquina dedicada con más núcleos y una caché más caliente superará a una pestaña de portátil. La compilación para navegador también depende de la codificación por software en lugar de un codificador por hardware, así que no obtiene la aceleración por GPU que una compilación nativa puede usar.
  • Algunas tareas todavía necesitan un servidor. La eliminación de fondos, el borrado de objetos y la mejora generativa de imágenes dependen de modelos grandes que ningún presupuesto razonable de descarga cubre. Esos tres los gestiona Cloud AI y sí suben la imagen. Todo lo demás en el sitio es local.

Para un documento de unos pocos megabytes o un clip de un minuto, ninguno de estos costes se nota, y el intercambio compra privacidad y ausencia de cuotas. Para una grabación 4K de dos horas, una herramienta de escritorio o una tarea de servidor es la mejor opción, y la respuesta honesta es decirlo.

El mismo patrón en todo el conjunto de herramientas

El página de inicio agrupa las herramientas en cinco secciones, y la arquitectura es la misma en cada una. El trabajo con PDF se ejecuta con qpdf, pdf-lib y PDF.js. Por ejemplo Combinar PDF combina archivos con pdf-lib, mientras que PDF a texto extrae texto con PDF.js y recurre a Tesseract solo para páginas escaneadas. El trabajo de imagen se ejecuta con Canvas y OxiPNG. El vídeo y el audio se ejecutan con FFmpeg, con Compresor de vídeo y las herramientas de audio compartiendo un solo motor. El OCR se ejecuta con Tesseract. Las tres herramientas Cloud AI son la excepción, y el sitio las etiqueta como tales en lugar de difuminar la línea.

La conclusión práctica es que puedes razonar sobre cualquier herramienta de la misma manera. Si nombra un motor real y lo ejecuta en la pestaña, el archivo se queda donde está. Si necesita un modelo más grande del que un navegador puede descargar, dirá que sube archivos, y debería decirlo en la página y no en una nota al pie.

Una fila de tarjetas de herramientas de imagen en la página de inicio de Aihangsoft, cada tarjeta nombrando lo que hace la herramienta
Las herramientas en el navegador se agrupan por tipo de archivo. Ninguna necesita cuenta, y ninguna envía el archivo a ningún sitio.

Preguntas frecuentes

Lee el archivo de tu disco en la propia página, ejecuta el código de procesamiento en la pestaña y devuelve el resultado como descarga. El archivo se entrega a JavaScript a través del File API y nunca sale de la máquina, porque ninguna parte del proceso necesita un servidor. Los motores que hacen el trabajo están compilados a WebAssembly y se envían como archivos igual que cualquier otro script: qpdf para el cifrado de PDF, FFmpeg para vídeo y audio, Tesseract para OCR, PDF.js y pdf-lib para leer y escribir PDF, y OxiPNG para la optimización sin pérdida de PNG. En el primer uso la página descarga el motor que necesita, que es código y no tu documento. Después, la pestaña mantiene el motor en memoria y la misma página puede procesar archivo tras archivo sin ninguna actividad de red. Puedes verlo ocurrir en las herramientas de desarrollador del navegador: las peticiones que ves llevan el motor, las fuentes y los recursos de la página, y ninguna de ellas lleva tu archivo.
No del todo, pero está mucho más cerca que JavaScript por sí solo. WebAssembly se ejecuta a una velocidad aproximadamente nativa para la computación, y los motores de aquí son las herramientas reales, no reimplementaciones: qpdf es el mismo qpdf que ejecutarías en un escritorio, y FFmpeg es el mismo FFmpeg compilado para el navegador. La diferencia viene del entorno y no del modelo de ejecución. Un entorno aislado del navegador no puede usar todas las funciones de CPU que espera una compilación nativa, y el trabajo pesado se ejecuta dentro de una pestaña y no de un proceso con acceso directo al disco y a varios núcleos. Los codificadores que dependen de la aceleración por hardware, como un codificador de vídeo por GPU, no forman parte de la compilación de WebAssembly, así que el trabajo de vídeo recurre a la codificación por software. La memoria es otro factor: todo lo que el motor lee y escribe tiene que caber en la pestaña, así que una tarea que una herramienta de escritorio transmitiría desde el disco tiene que mantenerse en memoria aquí.
Los límites son la memoria, la velocidad y la descarga del motor. Todo se ejecuta en una sola pestaña del navegador, así que tanto el archivo como el motor tienen que caber en memoria, y una tarea que una herramienta de escritorio transmitiría desde el disco tiene que mantenerse aquí. No hay ningún servidor al que descargar el trabajo. Los techos prácticos aparecen de forma distinta según la herramienta. La herramienta de desbloqueo de PDF acepta archivos de hasta 50 MB y lo dice, porque qpdf tiene que mantener el documento mientras lo descifra. El vídeo muy largo es más lento que una tarea de servidor y puede quedarse sin memoria antes de terminar, así que recortar primero es el consejo habitual. Los propios motores son grandes en el primer uso: el núcleo de FFmpeg que cargan las herramientas de vídeo y audio es de unos 30 MB, el motor de OCR más el paquete de idioma inglés es de unos 6.7 MB, y el motor de PDF es de unos 1.3 MB. Nada de eso es tu archivo, y todo se almacena en caché para la próxima vez.
Porque el motor que hace el trabajo es código, y ese código tiene que llegar al navegador antes de poder ejecutarse. En el primer uso, la página obtiene su motor por la red y luego lo mantiene en caché en la pestaña, así que los archivos posteriores se procesan sin ninguna descarga. Esa descarga es el precio de hacer el trabajo en local en lugar de en la máquina de otro. Un sitio convertidor paga el mismo coste una vez, en su propio servidor, y tú nunca lo ves. La diferencia es que tú descargas una cantidad fija de código, y es la misma para cada archivo: no crece con tu documento y no es tu documento. Los tamaños sí importan, y por eso este sitio carga los motores a demanda en lugar de por adelantado. Una página que envía un motor de vídeo de 30 MB a alguien que solo quería combinar dos PDF desperdicia su ancho de banda, así que el motor solo se obtiene cuando realmente usas esa herramienta.
Sí, después de que el motor se haya cargado una vez. Una vez que el código está en la pestaña, la ruta de procesamiento no toca nada externo, así que una página que ya ha cargado su motor puede seguir funcionando mientras la red está caída. Es la prueba más sencilla de que tu archivo no se está subiendo. Merece la pena ser preciso sobre las condiciones. El motor tiene que estar cargado antes de que te desconectes, porque obtenerlo es una petición de red normal. Una recarga forzada sin conexión fallará a menos que el navegador o un service worker haya almacenado la página en caché, así que prueba terminando una ejecución, luego desconectándote y procesando otro archivo sin recargar. Algunos idiomas distintos del inglés se obtienen de una fuente de datos remota en el primer uso, así que la herramienta de OCR en un idioma que no sea inglés puede necesitar una ejecución online antes de quedar en caché. Ninguna de estas salvedades afecta a tu documento. Conciernen al código y a los paquetes de datos que la herramienta necesita, que son los mismos para cada visitante.

Ve una herramienta local en acción

Gratis, privado e ilimitado. No necesitas cuenta.

Abrir el compresor de imágenes