Skip to main content
Validación HTML

Punto de código prohibido X

Acerca de este problema HTML

La especificación HTML prohíbe explícitamente que ciertos puntos de código Unicode aparezcan en cualquier parte de un documento HTML. Estos incluyen la mayoría de caracteres de control ASCII (como U+0000 NULL, U+0008 BACKSPACE, o U+000B VERTICAL TAB), así como no-caracteres Unicode como U+FFFE, U+FFFF, y el rango U+FDD0 a U+FDEF. Cuando el validador de W3C encuentra uno de estos puntos de código, reporta el error “Punto de código prohibido” seguido del valor específico.

Estos caracteres están prohibidos porque no tienen un significado definido en HTML y pueden causar comportamiento impredecible entre navegadores y plataformas. Algunos pueden ser eliminados silenciosamente, otros pueden producir errores de renderizado, y algunos podrían interferir con el análisis. Los lectores de pantalla y otras tecnologías de asistencia también pueden comportarse erráticamente al encontrar estos caracteres, convirtiendo esto en un problema de accesibilidad también.

Cómo llegan los caracteres prohibidos a tu código

  • Copiar y pegar desde fuentes externas como procesadores de texto, PDFs, o bases de datos que incluyen caracteres de control invisibles.
  • Editores de texto o herramientas de construcción defectuosos que introducen bytes perdidos durante el procesamiento de archivos.
  • Codificación de caracteres incorrecta donde las secuencias de bytes son malinterpretadas, resultando en puntos de código prohibidos.
  • Generación programática de contenido donde las cadenas no son sanitizadas adecuadamente antes de ser insertadas en HTML.

Cómo solucionarlo

  1. Identifica el carácter y su ubicación. El mensaje del validador incluye el punto de código (por ejemplo, U+000B) y el número de línea. Usa un editor de texto que pueda mostrar caracteres invisibles (como VS Code con la configuración “Render Whitespace” o “Render Control Characters” habilitada, o un editor hexadecimal).
  2. Elimina o reemplaza el carácter. En la mayoría de casos, el carácter prohibido no sirve ningún propósito y puede simplemente eliminarse. Si estaba representando un espacio o salto de línea, reemplázalo con el carácter estándar apropiado.
  3. Sanitiza el contenido en la fuente. Si tu HTML es generado dinámicamente, elimina los puntos de código prohibidos de las cadenas antes de mostrarlas. En JavaScript, puedes usar una expresión regular para eliminarlos.
// Remove common forbidden code points
text = text.replace(/[\x00-\x08\x0B\x0E-\x1F\x7F\uFDD0-\uFDEF\uFFFE\uFFFF]/g, '');

Ejemplos

Incorrecto — contiene un carácter de control prohibido

En este ejemplo, un carácter de tabulación vertical (U+000B) está incluido entre “Hello” y “World.” Es invisible en la mayoría de editores pero el validador lo marcará.

<!-- The ␋ below represents U+000B VERTICAL TAB, an invisible forbidden character -->

<p>Hello␋World</p>

Correcto — carácter prohibido eliminado

<p>Hello World</p>

Incorrecto — carácter NULL en un valor de atributo

Un carácter U+0000 NULL puede aparecer dentro de un atributo, a menudo desde salida programática.

<!-- The attribute value contains a U+0000 NULL byte -->

<div title="Some�Text">Content</div>

Correcto — carácter NULL eliminado del atributo

<div title="SomeText">Content</div>

Caracteres de control permitidos

No todos los caracteres de control están prohibidos. Los siguientes están explícitamente permitidos en HTML:

  • U+0009 — Tabulación horizontal (carácter de tabulación regular)
  • U+000A — Salto de línea (nueva línea)
  • U+000D — Retorno de carro
<pre>Line one
Line two    with a tab</pre>

Esto es válido porque usa solo caracteres de espaciado en blanco estándar (U+000A para la nueva línea y U+0009 para la tabulación).

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.