# Funciones del navegador

Al abrir esta página, se prueban unas 60 funciones de la plataforma web en tu navegador actual y cada una se marca como admitida o no. No aparece ninguna solicitud de permisos y no se envía nada a ningún lado.

## Respuesta corta

Esta página ejecuta 61 pruebas de funciones en tu propio navegador, en nueve grupos: JavaScript, CSS, gráficos, multimedia, almacenamiento, red, API de dispositivos, interfaz y seguridad, y marca cada una como admitida, admitida en parte o ausente. Una prueba confirma que la función está presente, mediante un objeto, un método, `CSS.supports()` o `canPlayType()`; no demuestra que funcione sin errores.

### Cómo se obtiene

Cada fila es una comprobación de detección de funciones que se ejecuta al cargar la página, la técnica que MDN recomienda en lugar de leer el User-Agent. JavaScript y las API web se prueban buscando el objeto o el método; CSS, preguntándole a `CSS.supports()` si entiende una declaración o un selector; los gráficos, creando un canvas nuevo para cada tipo de contexto; y lo multimedia, con `canPlayType()`, cuya respuesta «probably» cuenta como Sí y «maybe» como Parcial. La lista se puede copiar como texto plano.

### Ejemplo práctico

`CSS.supports("container-type: inline-size")` devuelve `true` en un navegador que implementa las consultas de contenedor, así que esa fila dice Sí. Para el video AV1, la página pregunta `canPlayType('video/mp4; codecs="av01.0.05M.08"')`; un navegador que responde «maybe» aparece como Parcial, porque aun así podría fallar al decodificar ese perfil.

### Límites

- Una función puede existir y estar desactivada por una política, un permiso o el hardware.
- Algunas API solo aparecen en páginas seguras (HTTPS) o después de una acción del usuario.
- Los resultados describen este navegador en este dispositivo hoy; otro dispositivo u otra versión pueden dar resultados distintos.

### Fuentes

- [MDN: Implementing feature detection](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Testing/Feature_detection): por qué probar funciones y no navegadores.
- [CSS Conditional Rules Module Level 3](https://www.w3.org/TR/css-conditional-3/): el método CSS.supports().
- [HTML Standard: canPlayType()](https://html.spec.whatwg.org/multipage/media.html#dom-navigator-canplaytype): qué significan «probably» y «maybe».
- [web.dev: Baseline](https://web.dev/baseline): qué funciones admiten todos los navegadores principales.

## Qué hace

Al abrir esta página, un script hace unas 60 comprobaciones pequeñas en tu navegador actual y marca cada función como admitida o no. Los resultados se agrupan en lenguaje JavaScript, CSS, gráficos, multimedia y códecs, almacenamiento, red, API de dispositivos, seguridad e interfaz, y arriba aparece un resumen con la cantidad de funciones admitidas.

Cada comprobación es una pregunta que el navegador puede responder sin hacer nada visible. En JavaScript, eso suele significar ver si algo existe, como `structuredClone` o `Promise.withResolvers`, o si acepta una sintaxis más nueva, como una expresión regular con la bandera `v`. Las filas de CSS pasan por `CSS.supports()`, que indica si el motor de estilos entiende una propiedad, un valor o un selector como `:has()`. Las filas de códecs usan las respuestas del propio navegador a `canPlayType()` y a las comprobaciones de Media Source.

Ninguna comprobación abre una solicitud de permisos, inicia un selector de dispositivos ni envía nada por la red. En las API de hardware, como Web Bluetooth, WebUSB o Web NFC, «admitida» significa que el navegador expone la interfaz, no que haya un dispositivo conectado o autorizado.

## Cómo usarla

1. Abre la página exactamente en el navegador, el perfil y el dispositivo que te interesan. Las comprobaciones arrancan solas.
2. Mira el total del resumen y después revisa cada grupo en busca de filas marcadas como no admitidas.
3. En el grupo Multimedia, fíjate si algún códec aparece como parcial. Eso significa que el navegador respondió «maybe» en lugar de «probably».
4. Pulsa el botón Copiar como texto para llevar toda la lista al portapapeles.
5. Pégala en el reporte de error, el ticket o el chat, y agrega la versión del navegador y el sistema operativo si todavía no están.

Haz la prueba en la misma ventana donde ocurre el problema. Las extensiones, las políticas empresariales y las funciones experimentales (flags) pueden activar o desactivar funciones concretas.

Dos filas describen tanto la página como el navegador: el contexto seguro depende de cómo se cargó la página, y el aislamiento de origen cruzado, de los encabezados que envía el servidor, así que otro sitio puede obtener respuestas distintas en esas dos.

## Casos de uso

- **Tickets de soporte.** Un cliente cuenta que al guardar un archivo grande no pasa nada. Pídele que abra esta página y pegue la lista copiada; si falta la fila del sistema de archivos privado del origen o la de Fetch con streams, el asunto puede quedar resuelto en una sola respuesta.
- **Videos que no se reproducen.** Un clip se reproduce en una laptop y en otra muestra un cuadro negro. Compara las filas de HEVC y AV1 en las dos; un no o un parcial es señal de que conviene ofrecer también una versión en H.264 o VP9.
- **Decidir qué lanzar.** Antes de depender de `:has()`, las consultas de contenedor o el anidamiento de CSS, abre la página en los navegadores más antiguos que todavía usan tus usuarios, incluidos quioscos y smart TV.
- **Navegadores dentro de apps.** Los enlaces que tocas en apps de chat y redes sociales suelen abrirse en una vista web integrada. Si abres esta página de esa forma, verás lo que admite esa vista, que puede ser distinto de lo que admiten Safari o Chrome en el mismo celular (móvil).
- **Proyectos de hardware.** Antes de decirles a tus usuarios que pueden flashear un microcontrolador o configurar un teclado desde una página web, pídeles que revisen las filas de Web Serial, WebUSB y WebHID; algunos navegadores importantes no tienen estas interfaces en absoluto.

## Detección de funciones frente a leer el user agent

La costumbre antigua era leer la cadena del user agent y deducir las capacidades a partir del nombre del navegador. Eso falla de maneras previsibles. Los navegadores basados en Chromium comparten la mayor parte del texto de su user agent. Chrome en un iPhone lleva el token `CriOS`, pero normalmente renderiza con WebKit, así que en la mayoría de estas filas se comporta como Safari. Además, Chrome congeló parte de los datos de versión y de plataforma de su cadena, y cualquiera puede cambiarla en unos pocos clics.

La detección de funciones, en cambio, le pregunta al navegador que está corriendo, y eso también simplifica la mejora progresiva: construyes una base que funcione en todas partes y agregas la opción mejor solo donde la comprobación pasa.

```
if ('share' in navigator) {
  shareButton.hidden = false;    // menú nativo para compartir
} else {
  copyLinkButton.hidden = false; // alternativa simple
}
```

```
@supports (container-type: inline-size) {
  .card-list { container-type: inline-size; }
}
```

Con los códecs funciona igual. Un reproductor puede llamar a `video.canPlayType('video/mp4; codecs="av01.0.05M.08"')` y recurrir a una fuente H.264 cuando la respuesta es una cadena vacía, que es la forma en que el navegador dice que no. Las únicas otras respuestas posibles son «maybe» y «probably».

## Por qué el mismo navegador puede responder distinto

### Hardware y sistema operativo

Muchas filas dependen de algo más que la compilación del navegador. Reproducir HEVC suele requerir un decodificador por hardware o soporte de códecs del sistema operativo, así que la misma versión del navegador puede dar resultados distintos en dos laptops. Safari solo informa AV1 en dispositivos Apple con decodificador AV1 por hardware. WebGPU llegó a unos sistemas operativos antes que a otros, y un navegador puede desactivar WebGL cuando el controlador gráfico está en su lista de bloqueo. Algunas compilaciones de navegadores de código abierto no incluyen códecs con licencia, como H.264 y AAC.

### Contextos seguros

Muchas API solo existen en un contexto seguro: páginas servidas por https, además de direcciones locales como `http://localhost` y `http://127.0.0.1`. Los Service Workers, la API asíncrona del portapapeles, Web Authentication, Web Share, Screen Wake Lock, WebGPU y las API de dispositivos están en este grupo. Si cargas el mismo sitio por http simple en una dirección de la red local, esos objetos no aparecen (no es que estén bloqueados), así que una función que anda en localhost puede desaparecer en un servidor de pruebas. `window.isSecureContext` indica el estado. El aislamiento de origen cruzado, que habilita `SharedArrayBuffer`, además requiere los encabezados de respuesta `Cross-Origin-Opener-Policy` y `Cross-Origin-Embedder-Policy`.

### La lista también es una huella digital

Como los resultados varían según el navegador, la versión, el sistema operativo y el hardware, el patrón completo de respuestas acota qué configuración tiene un visitante. Por eso los scripts de huella digital hacen este mismo tipo de comprobaciones, junto con el renderizado de canvas y las fuentes instaladas. Esta página hace sus comprobaciones en local y no envía nada, e iseeu.cc no guarda registros de direcciones IP ni de consultas, pero cualquier sitio puede ejecutar código equivalente sin mostrarte el resultado. Antes de pegar la lista en un gestor de incidencias público, tómala como cualquier otro dato de tu sistema que compartes.

## Preguntas frecuentes

**¿Esta página me pide permiso para usar la cámara, el Bluetooth o las notificaciones?**

No. Cada comprobación solo pregunta si una API existe o si el navegador dice admitir algo. Nada llama a un método que abra una solicitud de permiso o un selector de dispositivos, y ningún dato sale de tu navegador. La fila de la API de notificaciones, por ejemplo, comprueba que la API esté presente; no te pide permiso para mostrarte notificaciones. Además, iseeu.cc no usa cookies ni guarda registros de direcciones IP o de consultas.

**Aquí dice que mi navegador admite una función, ¿por qué falla en mi sitio?**

Que aparezca como admitida significa que el navegador expone la API o dice entender la sintaxis. El uso real puede fallar igual: tu sitio puede estar cargándose por http simple y perder las API que exigen un contexto seguro, un permiso puede estar denegado, una política puede bloquear un dispositivo o WebGPU puede no encontrar un adaptador gráfico utilizable. Las filas de códecs reflejan lo que el navegador afirma, y un perfil o una resolución poco comunes pueden fallar al decodificarse.

**¿Qué significa «Parcial» en las filas de códecs?**

El método canPlayType nunca responde que sí. Devuelve probably cuando el navegador está bastante seguro de poder reproducir el formato, maybe cuando lo reconoce pero no puede asegurarlo sin probar, y una cadena vacía para decir que no. Esta página muestra maybe como parcial. Toma un resultado parcial como motivo para hacer una prueba real de reproducción con tu propio archivo antes de depender de ese códec.

**¿Por qué a un compañero le salen otros resultados con la misma versión del navegador?**

Varias filas dependen del sistema operativo y del hardware más que de la versión del navegador. HEVC y AV1 suelen depender de decodificadores por hardware, la disponibilidad de WebGPU cambia según la plataforma y el controlador gráfico, y algunas compilaciones vienen sin códecs con licencia. Las extensiones, las políticas empresariales, las funciones experimentales y las ventanas privadas también pueden cambiar respuestas concretas. Comparar lado a lado las dos listas copiadas es la forma más rápida de encontrar la diferencia.

**¿Por qué desaparecen algunas funciones si abro el sitio con http?**

Los navegadores exponen muchas API recientes solo en contextos seguros, es decir, en páginas cargadas por https o desde direcciones locales como localhost. En una página con http simple, objetos como navigator.serviceWorker y navigator.clipboard sencillamente no están definidos. Es a propósito: estas API llegan a dispositivos, credenciales o código que corre mucho tiempo en segundo plano, y una página sin cifrar podría alterarse en el camino. Sirve tus entornos de prueba por https para ver el mismo comportamiento que en producción.

**¿Pueden identificarme con esta lista?**

Por sí sola, una lista de funciones admitidas describe tu navegador, tu sistema operativo y tu hardware, no a ti. Combinada con otras señales, como el tamaño de pantalla, las fuentes instaladas y el resultado del canvas, suma a una huella digital del navegador que puede ayudar a reconocer a un visitante que regresa. Esta página hace las pruebas en local y no envía nada, pero otros sitios pueden hacer las mismas pruebas sin avisarte, así que la exposición está en la combinación, no en esta lista por sí sola.

**¿No es mejor revisar el user agent?**

Para decidir si usar una función, no. Las cadenas de user agent se repiten entre los navegadores basados en Chromium, Chrome les recortó detalle, son fáciles de cambiar y engañan en el iPhone, donde Chrome y Firefox normalmente renderizan con WebKit. Probar la función directamente da la respuesta del navegador que de verdad está corriendo. Aun así, la cadena del user agent sirve en un reporte de error para dejar constancia de la versión exacta del navegador.

**¿Cómo le paso estos resultados a soporte técnico?**

Abre la página en el mismo navegador, perfil y dispositivo donde ocurre el problema, pulsa el botón Copiar como texto y pega la lista en el ticket, el reporte de error o el chat. Agrega la versión del navegador y el sistema operativo si todavía no aparecen. Antes de pegarla en un gestor de incidencias público, tómala como cualquier otro dato de tu sistema que compartes.

La detección muestra lo que el navegador expone o dice admitir. Aun así, cuando un sitio intenta usar una función de verdad, puede encontrarla desactivada por una política, por falta de hardware o por un permiso denegado.

## Herramientas relacionadas

- [Huella digital del navegador](https://iseeu.cc/es/huella-digital-navegador/): Las señales que permiten reconocer tu navegador sin usar cookies.
- [Ver mi user agent](https://iseeu.cc/es/cual-es-mi-user-agent/): Mira y analiza el User-Agent y los Client Hints que envía tu navegador.
- [Test de fuga WebRTC](https://iseeu.cc/es/test-fuga-webrtc/): Comprueba si WebRTC deja ver una dirección IP que tu VPN debería ocultar.
- [¿Cuál es mi IP?](https://iseeu.cc/es/): Tu dirección IP, ubicación, red, encabezados, TLS y pruebas de fugas en una sola página.
- [Convertidor Punycode](https://iseeu.cc/es/convertidor-punycode/): Convierte dominios con ñ, acentos u otros alfabetos a su forma xn-- y al revés.

[Ver todas las herramientas](https://iseeu.cc/es/herramientas/)

Última actualización: 2026-10-11

Página original: https://iseeu.cc/es/funciones-navegador/
