
Todo empezó con una molestia
A finales de 2023 necesitaba quitar el audio de una grabación de pantalla antes de enviársela a un cliente. La grabación había captado mi parte de una llamada telefónica que estaba ocurriendo de fondo, y tenía que eliminarla antes de compartir el video.
Busqué una solución rápida y encontré decenas de webs que prometían quitar el audio de un video. Todas querían que subiera el archivo a su servidor. Un archivo que contenía el audio de una conversación telefónica privada. A un servidor desconocido. Gestionado por una empresa desconocida. Con una política de retención de datos también desconocida.
Cerré todas las pestañas y abrí mi terminal. Un comando de FFmpeg después, el audio había desaparecido. Pero la experiencia se me quedó grabada. No todo el mundo conoce FFmpeg. No todo el mundo lo tiene instalado. Y el hecho de que la solución evidente para la mayoría pasara por subir contenido potencialmente sensible a servidores aleatorios me incomodó profundamente como desarrollador que se toma la privacidad en serio.
"En el momento en que entendí que la solución 'fácil' para la mayoría consistía en subir audio privado a servidores ajenos, supe que tenía que construir algo mejor."
La decisión de arquitectura que lo definió todo
La pregunta técnica central era sencilla: ¿podía ejecutar FFmpeg dentro de un navegador? Si la respuesta era sí, entonces todo el modelo de subir archivos a un servidor dejaba de tener sentido. Los usuarios podrían procesar sus videos localmente y sus archivos nunca saldrían del dispositivo.
La respuesta resultó ser sí, gracias a FFmpeg.wasm. Es una versión de FFmpeg portada a WebAssembly, el mismo framework multimedia que impulsa prácticamente todas las herramientas de video profesionales que existen. Alguien había hecho el increíble trabajo de compilar esta herramienta escrita en C para que pudiera funcionar dentro del sandbox de un navegador.
La primera vez que logré ejecutar FFmpeg.wasm en un prototipo, vi cómo quitaba una pista de audio de un archivo de video completamente dentro de una pestaña del navegador. Sin petición de red. Sin servidor. El archivo pasaba del disco del usuario a la memoria del navegador, WebAssembly lo procesaba y luego salía de nuevo como descarga. Recuerdo pensar: así deberían funcionar todas las herramientas de video online.

Los retos técnicos de los que nadie te avisa
Conseguir que FFmpeg.wasm funcione en una demo es una cosa. Hacer que funcione de forma fiable en todos los navegadores, dispositivos y formatos de archivo que la gente le lanza es algo muy distinto. Estos fueron los problemas que se llevaron la mayor parte de mi tiempo de desarrollo.
La gestión de memoria fue el reto principal. Los navegadores asignan memoria limitada a cada pestaña y, en móvil, esa limitación es todavía mayor. Cuando un usuario carga un video de 500 megabytes, el navegador necesita mantener a la vez el archivo original, el buffer de procesamiento y el archivo de salida. En un teléfono con 3 GB de RAM compartidos entre todas las apps y pestañas abiertas, esa cuenta se vuelve ajustada muy rápido.
Pasé semanas optimizando la forma en que la herramienta maneja archivos en memoria: transmitir por bloques, procesar de manera incremental y liberar memoria tan pronto como se completa cada etapa. El resultado es que la herramienta admite archivos mucho más grandes de lo que permitiría una implementación ingenua, aunque sigue habiendo límites que dependen del dispositivo del usuario.
La compatibilidad entre navegadores fue otro agujero de conejo. WebAssembly está soportado por todos los navegadores importantes, pero los detalles de implementación cambian sutilmente entre unos y otros. Safari en iOS maneja SharedArrayBuffer de forma distinta a Chrome en Android. Firefox tiene sus propias rarezas con la asignación de memoria. Construí una matriz de pruebas con más de 30 combinaciones de navegador y dispositivo y la ejecutaba cada vez que hacía un cambio.
El soporte de formatos también fue más complicado de lo que parecía. FFmpeg soporta prácticamente todos los formatos, pero la compilación para WebAssembly no incluye todos los codecs para mantener un tamaño de descarga razonable. Tuve que encontrar el equilibrio entre soportar formatos comunes —MP4 con H.264, MOV, WebM— y mantener la carga inicial de la página rápida. La mayoría de usuarios nunca se topa con un formato no soportado, pero quienes sí lo hacen reciben un mensaje claro y pueden escribirme para pedir ayuda.
La privacidad es una decisión de arquitectura, no una feature
Quiero dejar algo muy claro: Remove Audio no es privado porque prometamos no mirar tus archivos. Es privado porque tus archivos físicamente no pueden llegar hasta nosotros. No existe un endpoint de servidor que acepte subidas de video. No hay una API que reciba datos del archivo. El código de procesamiento corre dentro del sandbox de tu navegador, y las únicas peticiones de red que hace la página son para cargar la propia herramienta y para analítica y anuncios.
Esta diferencia importa mucho más de lo que suele pensarse. Cuando una empresa dice que tus datos están seguros en sus servidores, tú estás confiando en sus prácticas de seguridad, en sus empleados, en su infraestructura y en sus futuras decisiones sobre retención de datos. Cuando tus datos nunca salen de tu dispositivo, ninguna de esas preguntas de confianza entra en juego.
Elegí deliberadamente esta arquitectura aunque eso signifique renunciar a algunas funciones que sí ofrecen las herramientas basadas en servidor. No puedo procesar videos más grandes de lo que permite la memoria del navegador. No puedo ofrecer procesamiento en segundo plano mientras el usuario cierra la pestaña. No puedo dar una app móvil que procese en background. Son concesiones reales, y creo que merece la pena hacerlas.
"La privacidad no debería depender de la confianza. Si tus archivos nunca salen de tu dispositivo, no hay nada en lo que confiar. Esa es la arquitectura que yo quería."
La realidad de ser desarrollador en solitario
Construir Remove Audio yo solo significa tomar cada decisión, desde el color de un botón hasta los flags de FFmpeg o el texto de la política de privacidad. Eso tiene ventajas: la herramienta se mantiene enfocada, las decisiones son rápidas y no hay comités diluyendo la misión principal. Pero también significa que cada bug report, cada email de soporte y cada despliegue nocturno caen sobre mí.
La parte más dura del desarrollo en solitario no es el código. Es el cambio constante de contexto entre desarrollador, diseñador, redactor técnico, soporte y marketer. Puedo estar metido en una optimización de memoria con WebAssembly y, al mismo tiempo, recibir un correo de alguien cuyo archivo no se descarga en Safari iOS 16 en un modelo concreto de iPad. Ambas cosas necesitan atención. Ninguna puede esperar.
Lo que me hace seguir es el feedback. Cada vez que alguien me escribe para decir que la herramienta le evitó subir un video sensible a una web cualquiera, o que consiguió silenciar 50 clips en una tarde para su calendario de redes, o que incluso su abuelo pudo usarla sin ayuda, recuerdo por qué la construí. Herramientas simples que respetan la privacidad de la gente y que de verdad funcionan. Esa es la misión.
Lo que he aprendido sobre construir herramientas que la gente usa
Después de más de 10 años construyendo herramientas web, siempre vuelvo a lo mismo: las herramientas que se usan son las que no estorban. Nadie quiere pasar tiempo en una herramienta para silenciar videos. La gente quiere silenciar un video y seguir con su día. Cada segundo de fricción, cada paso innecesario y cada elemento de interfaz confuso son una razón para cerrar la pestaña y buscar una alternativa.
Esta filosofía da forma a todo en Remove Audio. Una página. Una acción. Soltar un archivo, pulsar un botón y descargar el resultado. He resistido la tentación de añadir funciones que complicaran la experiencia principal. Sin edición de audio. Sin recorte de video. Sin filtros. No porque esas funciones sean malas, sino porque distraerían de aquello a lo que la gente vino.
La otra gran lección es que la confianza se gana poco a poco y se pierde en un instante. He sido transparente sobre cómo funciona la herramienta, qué datos recoge el sitio —datos de analítica y anuncios, no contenido de video— y cuáles son sus límites. Cuando algo se rompe, lo arreglo y lo explico con honestidad. Cuando un usuario tiene un caso límite que no puedo soportar, se lo digo en vez de hacerle perder el tiempo.
Construir una herramienta en la que la gente confía es una responsabilidad que me tomo muy en serio. Cada video que alguien procesa con Remove Audio puede contener momentos privados, información sensible o contenido profesional del que depende. Ese peso mantiene alta la calidad del código y hace que la arquitectura de privacidad no sea negociable.
Lo que viene ahora
Remove Audio seguirá siendo una herramienta enfocada, centrada en la privacidad y especializada en hacer una sola cosa bien. Tengo una lista de mejoras en marcha: mejor rendimiento en dispositivos modestos, soporte más amplio de formatos y mejores funciones de accesibilidad. Pero la arquitectura principal —procesamiento local sin subir archivos al servidor— no va a cambiar.
También quiero escribir más sobre la parte técnica del procesamiento de video en el navegador. La web actual es mucho más capaz de lo que muchos desarrolladores creen, y pienso que veremos más herramientas que procesen medios sensibles de forma local en vez de exigir subidas a servidores. Si este artículo conectó contigo, estate atento al blog porque vendrán análisis técnicos más profundos.
Y si has llegado hasta aquí, gracias por leer. Tanto si usas Remove Audio de forma habitual como si acabas de caer en este artículo por casualidad, agradezco tu tiempo. Si tienes preguntas sobre la herramienta, la tecnología o cualquier cosa que haya escrito aquí, escríbeme a través de la página de contacto. Leo y respondo personalmente todos los mensajes.
Construir para la privacidad en un mundo de subirlo todo
La web ha normalizado subir contenido personal a servidores remotos incluso para tareas de procesamiento muy simples. Creo que merece la pena cuestionar ese comportamiento por defecto, especialmente en herramientas que trabajan con video y audio. No toda tarea necesita un servidor. No todo archivo tiene que salir de tu dispositivo.
Remove Audio es mi respuesta a esa pregunta: una herramienta que demuestra que puedes ofrecer una buena experiencia de usuario sin tocar jamás los archivos del usuario. WebAssembly lo hizo posible. La terquedad hizo que ocurriera. Y el feedback de usuarios que se preocupan por la privacidad tanto como yo hace que merezca la pena seguir.
Si eres desarrollador y estás pensando en un enfoque parecido para tus propias herramientas, me encantará compartir lo que he aprendido. Y si eres un usuario que solo quiere silenciar un video sin preocuparse por a dónde va el archivo, eso es exactamente para lo que construí esto.