Skip to main content
Validación HTML

Valor X incorrecto para el atributo “href” en el elemento “link”: Carácter ilegal en la consulta

Acerca de este problema HTML

Las URLs utilizadas en atributos HTML deben seguir el URL Living Standard, que define un conjunto específico de caracteres permitidos en cada parte de una URL. El componente de consulta de una URL —todo lo que viene después del ?— permite la mayoría de los caracteres ASCII imprimibles, pero ciertos caracteres aún se consideran ilegales y deben estar codificados por porcentaje. Cuando el validador W3C encuentra uno de estos caracteres prohibidos en el href de un elemento <link>, genera este error.

Los caracteres comunes que desencadenan este problema incluyen:

Carácter Codificado por porcentaje

| | (pipe) | %7C | | [ (corchete izquierdo) | %5B | | ] (corchete derecho) | %5D | | { (llave izquierda) | %7B | | } (llave derecha) | %7D | | ^ (caret) | %5E | | ` (acento grave) | %60 | | (espacio) | %20 |

Por qué esto importa

Aunque muchos navegadores modernos son permisivos y corregirán silenciosamente las URLs mal formadas, depender de este comportamiento es arriesgado. Las URLs inválidas pueden causar problemas de varias maneras:

  • Comportamiento inconsistente del navegador: No todos los agentes de usuario manejan los caracteres ilegales de la misma manera, lo que puede llevar a hojas de estilo rotas o recursos que no cargan.
  • Problemas de interoperabilidad: Los proxies, CDNs y otros intermediarios pueden rechazar o alterar URLs con caracteres ilegales.
  • Cumplimiento de estándares: El HTML válido requiere URLs válidas en los atributos. Un carácter ilegal en el href hace que todo el documento no sea conforme.
  • Confiabilidad de copiado y compartido: Las URLs mal formadas tienen más probabilidades de romperse cuando se comparten entre sistemas, correos electrónicos o documentación.

Cómo solucionarlo

Identifica los caracteres ilegales en la cadena de consulta de tu URL y reemplaza cada uno con su equivalente codificado por porcentaje. Si estás generando URLs programáticamente, usa una función de codificación de URL adecuada (por ejemplo, encodeURIComponent() en JavaScript, urlencode() en PHP, o urllib.parse.quote() en Python) para asegurar que todos los caracteres especiales estén codificados correctamente.

Ejemplos

❌ Carácter pipe ilegal en la cadena de consulta

Este es un patrón común visto con URLs de Google Fonts que usan | para separar familias de fuentes:

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans|Roboto">

✅ Carácter pipe codificado por porcentaje

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans%7CRoboto">

❌ Corchetes en la cadena de consulta

Algunas APIs o frameworks usan notación de corchetes en parámetros de consulta:

<link rel="stylesheet" href="https://example.com/styles?themes[]=dark&themes[]=compact">

✅ Corchetes codificados por porcentaje

<link rel="stylesheet" href="https://example.com/styles?themes%5B%5D=dark&themes%5B%5D=compact">

❌ Carácter de espacio en la cadena de consulta

<link rel="stylesheet" href="https://example.com/css?file=my styles.css">

✅ Carácter de espacio codificado por porcentaje

<link rel="stylesheet" href="https://example.com/css?file=my%20styles.css">

Ten en cuenta que para Google Fonts específicamente, la API moderna (v2) usa un formato de URL diferente que evita completamente el carácter pipe. Cuando sea posible, considera actualizar a la última versión de una API en lugar de simplemente codificar la URL antigua.

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.