DICCIONARIO · W

WebAssembly

WebAssembly (Wasm) es un formato de código binario de bajo nivel, estándar del W3C, que los navegadores ejecutan de forma segura y casi a velocidad nativa. Permite llevar a la web programas escritos en C, C++, Rust o Go junto a JavaScript, y es la tecnología que hace posibles editores como Figma o Photoshop en el navegador.

Germán Gutiérrez Escrito por Germán Gutiérrez 6 min de lectura
Ficha rápida
Tipo
Formato de instrucciones binario y portable para una máquina virtual
Estándar
Recomendación del W3C desde el 5 de diciembre de 2019
Versión actual
WebAssembly 3.0, publicada el 17 de septiembre de 2025
Extensiones
.wasm (binario) y .wat (formato de texto legible)
Lenguajes de origen
C, C++, Rust, Go, Kotlin, AssemblyScript, Dart y otros
Soporte
Chrome, Firefox, Safari y Edge; también fuera del navegador con WASI

≡En resumen

  • WebAssembly no es un lenguaje que se escriba a mano: es el destino al que se compilan otros lenguajes.
  • Es el cuarto lenguaje nativo de la web, junto a HTML, CSS y JavaScript, según el W3C.
  • No sustituye a JavaScript: lo complementa en las partes que necesitan mucho cálculo.
  • Se ejecuta en un entorno aislado (sandbox) con los mismos permisos de seguridad que la página.
  • Con WASI también se usa fuera del navegador: servidores, edge computing y plugins.

01 ¿Qué es WebAssembly?

WebAssembly nació para resolver un límite de la web: JavaScript es flexible, pero no fue diseñado para tareas de cálculo intensivo como videojuegos 3D, edición de vídeo o CAD. Su antecesor fue asm.js, un subconjunto optimizable de JavaScript impulsado por Mozilla; WebAssembly tomó esa idea y la convirtió en un formato binario estándar acordado por todos los navegadores.

02 Cómo funciona WebAssembly

  1. 1

    Escribes el código

    En un lenguaje compilado como C, C++ o Rust, o en AssemblyScript si prefieres una sintaxis parecida a TypeScript.

  2. 2

    Lo compilas a .wasm

    Con herramientas como Emscripten (C/C++), wasm-pack (Rust) o el compilador de Go. El resultado es un módulo binario compacto.

  3. 3

    El navegador lo descarga

    El archivo .wasm pesa poco y se decodifica y valida más rápido que el JavaScript equivalente.

  4. 4

    Se compila a código máquina

    El motor del navegador lo traduce a instrucciones del procesador y puede guardar en caché el resultado.

  5. 5

    JavaScript lo llama

    La página importa el módulo y llama a sus funciones; Wasm y JavaScript intercambian datos a través de memoria compartida.

Ejemplo · Cargar un módulo desde JavaScript

Con la API estándar basta una línea para descargar, compilar e instanciar un módulo:

const { instance } = await WebAssembly.instantiateStreaming(fetch('/motor.wasm'));

Después llamas a sus funciones exportadas como a cualquier función: instance.exports.aplicarFiltro(ancho, alto);

03 Historia y versiones de WebAssembly

Fecha Hito
2015 Se anuncia el proyecto, con participación de los equipos de Chrome, Firefox, Safari y Edge.
Marzo de 2017 Se publica el MVP (versión 1.0) y llega a los principales navegadores.
5 de diciembre de 2019 El W3C lo publica como Recomendación: cuarto lenguaje nativo de la web tras HTML, CSS y JavaScript.
25 de enero de 2024 Sale WASI 0.2, que introduce el modelo de componentes para usar Wasm fuera del navegador.
Diciembre de 2024 WebAssembly 2.0 pasa a ser estándar del W3C (SIMD, tipos de referencia, operaciones de memoria en bloque).
17 de septiembre de 2025 Se publica WebAssembly 3.0.
Fechas clave de WebAssembly
01

Memoria de 64 bits

Wasm 3.0 amplía el espacio de direcciones más allá de los 4 GB de la versión anterior.

02

Recolección de basura

Tipos struct y array gestionados por el motor, clave para compilar Java, Kotlin o Dart sin llevar su propio recolector.

03

Excepciones y llamadas de cola

Manejo nativo de excepciones y tail calls, útiles para lenguajes funcionales.

04

Varias memorias

Un módulo puede declarar y usar varias memorias a la vez.

04 Para qué sirve WebAssembly: casos reales

3x

Mejora del tiempo de carga de Figma al pasar a WebAssembly (2017)

Fuente: Blog de Figma, «WebAssembly cut Figma's load time by 3x»

99 %

Navegadores en uso compatibles con WebAssembly 1.0 (marzo de 2024)

Fuente: Wikipedia (WebAssembly), con datos de Can I use

01

Diseño y edición

Figma mejoró más de tres veces su carga con Wasm, y Adobe llevó Photoshop a la web compilando su código C++ con Emscripten.

02

Videojuegos y 3D

Motores como Unity publican juegos para navegador compilando su código a WebAssembly.

03

Multimedia

Códecs de audio y vídeo, compresión de imágenes o edición de vídeo en el navegador.

04

Ciencia y datos

Pyodide ejecuta Python en el navegador; también se usa para simulaciones, criptografía y cálculo.

05

Reutilizar código existente

Una empresa con una librería de cálculo en C++ la lleva a su aplicación web sin reescribirla en JavaScript.

Para la mayoría de webs corporativas o tiendas online no hace falta WebAssembly: su rendimiento depende más de imágenes, scripts de terceros y servidor que del cálculo en el navegador. Si tu problema es que la web tarda en cargar, empieza por la velocidad de carga web. Wasm brilla en aplicaciones con mucha lógica en el cliente.

05 WebAssembly vs JavaScript

Aspecto WebAssembly JavaScript
Formato Binario compilado (.wasm) Texto interpretado y compilado al vuelo
Cómo se escribe Se genera desde C, C++, Rust, Go… Se escribe directamente
Rendimiento Cercano al nativo y predecible Muy bueno, pero variable en cálculo intensivo
Acceso al DOM Indirecto, a través de JavaScript Directo
Mejor para Cálculo, gráficos, códecs, portar software existente Interfaz, lógica de la página, APIs del navegador
Diferencias entre WebAssembly y JavaScript

06 WebAssembly fuera del navegador: WASI

WASI (WebAssembly System Interface) es la interfaz estándar que permite ejecutar módulos Wasm en servidores y otros entornos con acceso controlado a archivos, reloj o red. Con WASI 0.2 llegó el modelo de componentes, que permite combinar módulos escritos en distintos lenguajes de programación. Motores como Wasmtime ejecutan estos módulos, y plataformas de edge computing los usan para funciones que arrancan en milisegundos.

  • ✓Funciones serverless y en el edge con arranque muy rápido.
  • ✓Sistemas de plugins seguros, porque el módulo solo accede a lo que se le permite.
  • ✓Código portable: el mismo binario funciona en distintos sistemas operativos y procesadores.
  • ✓Aislamiento de código de terceros dentro de una aplicación.
Ejemplo · ¿Lo necesita tu proyecto?

Si tu aplicación web procesa imágenes, planos, audio o grandes volúmenes de datos en el navegador, o si ya tienes lógica en C++ o Rust que quieres reutilizar, WebAssembly es una opción seria. Si estás decidiendo entre app nativa, híbrida o PWA, ten en cuenta que Wasm permite que una web app haga tareas que antes exigían una aplicación instalada.

Preguntas frecuentes sobre WebAssembly

Es un formato de código binario de bajo nivel, estándar del W3C, que los navegadores ejecutan de forma segura y casi a velocidad nativa. Se genera compilando lenguajes como C, C++ o Rust.

Para ejecutar en la web tareas de cálculo intensivo (editores gráficos, videojuegos, códecs, CAD) y para reutilizar en el navegador software escrito en otros lenguajes.

No. Lo complementa: JavaScript sigue controlando la interfaz y el acceso al DOM, y WebAssembly se encarga de las partes que necesitan más rendimiento.

C y C++ (con Emscripten o Clang), Rust, Go, Kotlin, AssemblyScript, Dart y muchos otros; hay decenas de lenguajes con soporte.

Es la abreviatura de WebAssembly y también la extensión de sus archivos binarios (.wasm).

Todos los principales: Chrome, Firefox, Safari y Edge, en escritorio y en móvil. En marzo de 2024 el 99 % de los navegadores en uso soportaba la versión 1.0.

Es la versión publicada el 17 de septiembre de 2025, que añade memoria de 64 bits, varias memorias, recolección de basura, manejo de excepciones y llamadas de cola, entre otras novedades.

Elige un lenguaje con buenas herramientas: Rust con wasm-pack o C/C++ con Emscripten. Compila una función sencilla a .wasm, cárgala desde JavaScript con WebAssembly.instantiateStreaming y mide si mejora el rendimiento frente a la versión en JavaScript.

Fuentes consultadas

Germán Gutiérrez

Sobre el autor

Germán Gutiérrez

Development Manager en appyweb

Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.

Ver perfil en LinkedIn ↗

Términos relacionados

Ver todos los términos →
J JavaScript JavaScript es un lenguaje de programación interpretado o compilado al vuelo, dinámico y basado en prototipos, que los navegadores ejecutan para hacer interactivas las páginas web. Junto a HTML y CSS forma la base de la web: lo usa el 98,9 % de los sitios, y con Node.js también sirve para servidores y aplicaciones. L Lenguaje de programación Un lenguaje de programación es un lenguaje formal, con su propia sintaxis y semántica, que permite escribir instrucciones que un ordenador puede ejecutar tras compilarlas o interpretarlas. Es la herramienta con la que se crean webs, apps, videojuegos o modelos de inteligencia artificial; los más usados hoy son Python, JavaScript, Java, C y C++. N Navegadores Un navegador web (en inglés, browser) es el programa que solicita páginas a los servidores de internet y las interpreta para mostrarlas en pantalla, convirtiendo código HTML, CSS y JavaScript en textos, imágenes y botones con los que interactúas. Chrome, Safari, Edge y Firefox son los más usados; sin navegador no podrías visitar ninguna web. P Programación La programación es el proceso de diseñar, escribir, probar y mantener las instrucciones que un ordenador ejecuta para resolver una tarea, usando un lenguaje de programación. Es la base de toda app, web y sistema de inteligencia artificial, y abarca desde el análisis del problema hasta el mantenimiento del código. N Node.js Node.js es un entorno de ejecución de JavaScript de código abierto y multiplataforma que permite usar JavaScript fuera del navegador, sobre todo en servidores, gracias al motor V8 y a un modelo de entrada/salida asíncrono basado en eventos. Importa porque permite construir APIs, backends y herramientas con el mismo lenguaje que el frontend. S Sandbox Un sandbox es un entorno aislado y controlado en el que algo se ejecuta o se prueba sin afectar al resto del sistema. En informática protege frente a código no fiable; en SEO, «sandbox de Google» es la supuesta penalización temporal a webs nuevas, que Google niega; y Privacy Sandbox fue el proyecto de Chrome para sustituir las cookies de terceros.

Cuéntanos tu proyecto. Te respondemos en 48 h.

Auditoría gratuita de IA, campañas, web y SEO, con prioridades y cifras reales de tu negocio.

✓ Sin compromiso ✓ Respuesta en 48 h laborables ✓ Un consultor senior, no un bot
WA WhatsApp