Generador de Códigos QR

19 / 2331 bytes
Corrección de errores
15% recuperable
Versión 2 · 25×25 módulos

Nada de lo que escribes aquí se almacena, registra ni comparte.

Genera un código QR para una URL, un texto o una red Wi-Fi y descárgalo en PNG o SVG. Todo ocurre en tu navegador, así que no se sube nada y el código nunca caduca.

Cómo usarlo

  1. Escribe la URL o el texto que quieres codificar.
  2. Ajusta la corrección de errores, los colores y la zona de silencio si lo necesitas.
  3. Descárgalo en PNG para documentos, o en SVG para imprenta.

Qué hay realmente en el patrón

Un código QR es una cuadrícula de módulos con una estructura fija. Los tres cuadrados grandes de las esquinas son los patrones de localización, que permiten al lector encontrar el código y averiguar su orientación desde cualquier ángulo. En las versiones grandes aparecen patrones de alineación más pequeños para corregir la distorsión de un código fotografiado sobre una superficie curva o inclinada. Las líneas punteadas entre los localizadores son los patrones de temporización, que dan al lector la cuadrícula de módulos. Alrededor de los localizadores está la información de formato, que describe el nivel de corrección de errores y la máscara.

Todo lo demás son datos y corrección de errores intercalados. Hay 40 versiones, de 21 por 21 módulos hasta 177 por 177, y se elige automáticamente la más pequeña en la que cabe tu contenido; por eso el código se vuelve visiblemente más denso a medida que escribes.

El modo de codificación importa más de lo que parece. El contenido numérico ocupa unos 3,3 bits por dígito y el alfanumérico unos 5,5, pero el conjunto alfanumérico solo tiene mayúsculas y unos pocos símbolos. Todo lo demás pasa al modo byte, con 8 bits por carácter, y las letras con tilde o la eñe en UTF-8 ocupan todavía más. Por eso HTTPS://EXAMPLE.COM/PATH produce un código notablemente más sencillo que la misma URL en minúsculas: el esquema y el host no distinguen mayúsculas, así que ponerlos en mayúsculas no cuesta nada, y la diferencia puede ser de una o dos versiones.

Cómo hacer uno que se escanee con fiabilidad

Respeta la zona de silencio. La especificación exige cuatro módulos de espacio libre por todos los lados, y eliminarla para que encaje en un diseño es el motivo más frecuente de que falle un código impreso. Los lectores la usan para poder encontrar el código.

Respeta la polaridad. Módulos oscuros sobre fondo claro es lo que espera cualquier lector; los códigos invertidos los leen unos sí y otros no. Mantén el contraste alto, evita degradados y fondos fotográficos detrás de los módulos y, si le das color, cambia el color oscuro en lugar de aclararlo.

Dimensiónalo según la distancia. La regla práctica es que el código mida aproximadamente una décima parte de la distancia de escaneo: unos 3 cm para un móvil a 30 cm, y mucho más de lo que se suele pensar en un cartel que se lee desde el otro lado de una sala. En impresión, evita que los módulos bajen de unos 0,4 mm y comprueba la pieza impresa real, no la prueba en pantalla.

Si vas a poner un logotipo en el centro, sube antes la corrección de errores a H. Eso reserva alrededor de un 30 % de redundancia, que es lo que cubre la zona tapada, pero el logotipo tiene que seguir alejado de los patrones de localización, y merece la pena escanear el resultado con dos o tres móviles distintos antes de imprimir mil copias.

Formatos de contenido

Un código QR contiene texto, y lo que el lector hace con ese texto depende de convenciones. Una URL se abre. Todo lo demás suele mostrarse como texto plano salvo que coincida con un formato conocido.

La wifi usa WIFI:T:WPA;S:nombredelared;P:contraseña;; con T como WPA, WEP o nopass. Fíjate en que los puntos y coma son obligatorios y en que los caracteres especiales del nombre o la contraseña deben escaparse con una barra invertida. Un teléfono es tel:, un correo es mailto: con la sintaxis de consulta habitual para asunto y cuerpo, y una ubicación es geo: con latitud y longitud. Los contactos usan vCard, que es prolijo pero tiene un soporte muy amplio.

Cualquier cosa que dependa de un esquema propio de una app solo funcionará donde esa app esté instalada, por eso una URL https normal que redirige suele ser más robusta que un esquema personalizado ingenioso.

Códigos estáticos y dinámicos

El código que se genera aquí es estático: tu contenido se codifica directamente en los módulos. Funciona para siempre, funciona sin conexión, no depende de ningún servicio y no informa a nadie de nada. Tampoco se puede cambiar: si la URL a la que apunta se traslada, todas las copias impresas quedan inservibles.

Un código dinámico lo resuelve codificando una URL corta de redirección de un proveedor, que la reenvía al destino que indiques en cada momento y cuenta los escaneos por el camino. Es realmente útil para una campaña cuyo destino va a cambiar, y conviene tener claro lo que cuesta: el proveedor ve cada escaneo, el código deja de funcionar si la cuenta caduca o el servicio cierra, y muchos generadores gratuitos crean códigos dinámicos sin decirlo.

Si quieres esa flexibilidad, la forma honesta de tenerla es un código estático que apunte a una URL corta en un dominio que controles, con la redirección en el servidor. Conservas la posibilidad de cambiar el destino y nadie más se interpone en el camino.

Cómo la corrección de errores permite leer un código dañado

Los códigos QR usan codificación Reed-Solomon, la misma familia de códigos correctores de errores que protegía los datos en los CD y que se emplea en las comunicaciones con el espacio profundo. La idea es tratar los datos como coeficientes de un polinomio y transmitir puntos adicionales de esa curva, de modo que mientras sobrevivan suficientes puntos, el original se puede reconstruir con exactitud.

Hay cuatro niveles disponibles. L recupera alrededor del 7% de las palabras de código, M cerca del 15%, Q cerca del 25% y H cerca del 30%, y la redundancia se reparte por todo el símbolo en lugar de concentrarse, por eso el daño en una esquina rara vez importa. Los niveles más altos no hacen que un código se lea mejor en buenas condiciones; hacen que sobreviva a condiciones peores, a costa de un patrón más denso para el mismo contenido.

M es el valor predeterminado sensato para una pantalla o una impresión limpia. H es para códigos que se imprimirán sobre superficies curvas, quedarán a la intemperie o estarán parcialmente cubiertos por un logotipo. Subir el nivel aumenta la cantidad de módulos, así que un código de nivel H con una URL larga puede quedar notablemente más fino que su equivalente en nivel M, algo que juega en tu contra cuando el tamaño impreso es fijo.

La capacidad y por qué conviene acortar el contenido

La capacidad depende de la versión, del nivel de corrección de errores y del modo de codificación en conjunto. En la versión 10 - una cuadrícula de 57 por 57 - con corrección de nivel M, un código guarda aproximadamente 271 caracteres alfanuméricos o 213 bytes. En la versión máxima, la 40, las cifras llegan a los miles, pero un símbolo tan grande es poco práctico de imprimir y lento de escanear.

El modo de codificación es la palanca que casi todos pasan por alto. El contenido numérico se empaqueta a unos 3,3 bits por dígito, el alfanumérico a 5,5, y todo lo demás cae a 8 bits por carácter. El conjunto alfanumérico son letras mayúsculas, dígitos y nueve símbolos, así que HTTPS://EXAMPLE.COM/PATH se codifica mucho más eficientemente que la forma en minúsculas, y como el esquema y el host no distinguen mayúsculas de minúsculas, pasarlos a mayúsculas no cuesta nada.

Acortar la URL es la otra palanca, y actúa antes que todo lo anterior: menos caracteres significan una versión más baja, módulos más grandes al mismo tamaño impreso y un código que se lee desde más lejos y con peor luz.

El quishing y lo que debería mostrar un lector

Un código QR es opaco para quien lo escanea. En eso se basa por completo lo que hoy se llama quishing: calcomanías pegadas sobre códigos legítimos en parquímetros y mesas de restaurante, códigos en correos que esquivan los analizadores de enlaces por ser imágenes, y códigos en carteles que llevan a páginas de pago muy convincentes.

Las defensas son de lo más comunes. Conviene elegir un lector que muestre la URL antes de abrirla, y toda cámara de teléfono actual lo hace. Mira el dominio y no la página, porque clonar una página de pago es trivial. Desconfía de un código físico que parezca aplicado encima de otra cosa, que es justo como se ve de cerca una calcomanía sobre un código impreso.

Para quien publica códigos, la contraparte útil es apuntarlos a un dominio que la gente reconozca como tuyo en lugar de un acortador, para que la vista previa signifique algo. Un código que lleva a un dominio corto cualquiera es indistinguible del de un atacante.

Medir escaneos sin ceder el control del código

Los códigos dinámicos de un proveedor son la forma habitual de contar escaneos y cambiar el destino, y el costo es real: el proveedor ve cada escaneo, el código deja de funcionar si la cuenta caduca, y algunos generadores gratuitos producen códigos dinámicos sin decirlo, lo que significa que el código que imprimiste depende de un servicio que nunca elegiste.

La versión que sí controlas es un código estático que apunta a una ruta corta de tu propio dominio, con la redirección en tu propio servidor. Cambiar el destino es un cambio de configuración, las métricas quedan en tus propios registros y nadie más está en el camino. Una ruta distinta por campaña te da los conteos por ubicación que suelen ser la razón para comprar códigos dinámicos.

En cualquiera de los dos casos, el código en sí nunca reporta nada. Los escaneos se cuentan cuando se solicita el destino, lo que significa que un código impreso en un cartel, fotografiado pero nunca abierto, es invisible, y quien copia la URL a mano se contabiliza igual que quien usó un lector.

Una lista de verificación antes de mandar a imprenta

Prueba la pieza real, no el arte. Imprime el código en su tamaño final, sobre el material previsto, y escanéalo con al menos tres teléfonos, incluido un Android antiguo. Pruébalo con la iluminación en la que va a vivir: un código en una pared oscura dentro de un bar con poca luz es un problema distinto del mismo código sobre un escritorio.

Comprueba que la zona tranquila sobreviva al diseño. Cuatro módulos de espacio libre en cada lado es un requisito de la especificación, y el motivo más frecuente de que falle un código impreso es que un diseñador mete texto o un borde dentro de ese margen para que la composición funcione.

Confirma el destino antes de la tirada y mantenlo funcionando después. Un código sobrevive a la campaña que lo creó: la URL a la que apunta debería redirigir en lugar de devolver 404 cuando se retire la página de destino, porque un código impreso no se puede editar y sus copias circulan durante años.

Preguntas frecuentes

¿Este código dejará de funcionar más adelante?
No. Los datos van codificados directamente en el patrón, así que el código funciona para siempre y no depende de ningún servicio que siga activo. Muchos generadores gratuitos producen un código que apunta a su propia URL de redirección, lo que les permite rastrear los escaneos y puede dejar de funcionar si la cuenta caduca o si pasan a exigir un plan de pago. Aquí nada redirige a ninguna parte.
¿Qué cambia el nivel de corrección de errores?
Define cuánto del código puede estar dañado o tapado y aun así leerse: en torno al 7% en L, 15% en M, 25% en Q y 30% en H. Los niveles altos requieren un código más denso para los mismos datos. Usa H si piensas poner un logo en el centro, y L si el código va a estar limpio y lo quieres lo más simple posible.
¿Por qué mi código se vuelve más denso al añadir texto?
Los códigos QR tienen 40 versiones, de 21x21 hasta 177x177 módulos. Se elige automáticamente la versión más pequeña en la que quepan tus datos, así que más contenido significa una rejilla más densa. Acortar la URL suele ser la mejor forma de mantener el código fácil de escanear.
¿Descargo PNG o SVG?
PNG para diapositivas, documentos y cualquier sitio donde se espere una imagen normal. SVG para imprenta y formatos grandes, ya que es vectorial y se mantiene nítido a cualquier tamaño.
¿Por qué dejar una zona de silencio alrededor del código?
La especificación exige cuatro módulos de espacio libre en cada lado. Los lectores la usan para localizar el código, y quitarla es uno de los motivos más habituales de que un código impreso no se lea.
¿Funciona con texto no latino?
Sí. El contenido se codifica en UTF-8, así que el japonés, el chino, el coreano y los emoji sobreviven al viaje de ida y vuelta. Algunos generadores los estropean en silencio porque codifican los bytes como Latin-1.

Última actualización:

Informar de un problema

Incluye los pasos, el resultado esperado y el real. Elimina secretos y datos personales.

Herramientas relacionadas