ToolActToolAct

Decodificador QR

Escanea y decodifica imágenes de códigos QR en línea. Soporta arrastrar y soltar, pegar del portapapeles. Todo se procesa en tu navegador.

Subir imagen de código QR

Arrastra y suelta una imagen de código QR aquí

Soporta PNG, JPG, GIF, BMP, WebP y otros formatos de imagen comunes

También puedes pegar una imagen del portapapeles con Ctrl+V

¿Qué es la decodificación de código QR?

El decodificador de códigos QR lee una imagen con un QR y extrae los datos almacenados en él. El resultado puede ser una URL, texto plano, configuración Wi-Fi, tarjeta de contacto, referencia de pago u otra cadena codificada. Es útil para inspeccionar un QR antes de abrirlo, recuperar texto desde una captura, copiar datos de un documento o ayudar a resolver por qué un código no se escanea bien en el móvil. El contenido decodificado no es seguro por definición: los enlaces deben revisarse antes de visitarlos, porque un QR puede apuntar a phishing, recursos caducados o redirecciones inesperadas. La imagen se procesa localmente.

Cómo usar

Cómo usarlo

  1. Haz clic en el área de carga para seleccionar una imagen de código QR o arrastra y suelta una
  2. También puedes pegar una imagen desde el portapapeles con Ctrl+V (Cmd+V en Mac)
  3. La herramienta detectará y decodificará automáticamente el contenido del código QR
  4. El resultado decodificado aparece abajo con detección automática del tipo de contenido (URL o texto)
  5. Haz clic en el botón 'Copiar resultado' para copiar el contenido decodificado al portapapeles

Consejos de decodificación

  • Usa una imagen nítida con el código QR completo visible y suficiente margen en blanco alrededor para una detección fiable.
  • Trata los enlaces decodificados con precaución. Previsualiza el texto y verifica el dominio antes de abrir URLs de códigos QR desconocidos.

Casos de uso

Decodificar códigos QR desde imágenes subidas o pegadasArrastra una imagen, selecciona un archivo o pega una imagen del portapapeles y la herramienta la dibuja en un canvas oculto antes de leerla. Esto es útil cuando tienes una captura de pantalla, foto o imagen QR guardada pero no tienes un escáner de móvil a mano.
Separar URLs de resultados de texto planoTras la decodificación, el contenido se clasifica como URL cuando puede ser analizado por el constructor de URL del navegador; de lo contrario se trata como texto. Los resultados de URL obtienen una acción de abrir en nueva pestaña, mientras que todos los resultados pueden copiarse con su conteo de caracteres visible.
Verificar la legibilidad del QR durante el trabajo de diseñoComo el decodificador trabaja directamente desde los píxeles de la imagen, ayuda a verificar si un código QR generado o diseñado aún se escanea después de cambiar el tamaño, alterar colores, tomar capturas o comprimir. Las lecturas fallidas producen un error claro de 'sin QR' o 'error de decodificación' en lugar de salida silenciosa, lo que facilita comparar dos variantes de diseño lado a lado durante una revisión de marca.
Leer payloads largos de Wi-Fi o vCardLos strings Wi-Fi decodificados muestran el SSID, contraseña y tipo de seguridad de la imagen sin necesidad de cámara del móvil, lo que es útil al verificar una tarjeta de red de invitados impresa. Los resultados de vCard pueden copiarse y pegarse en un formulario de contactos para importación manual.
Inspeccionar códigos QR antes de abrir el enlaceLee siempre la URL decodificada antes de escanear la imagen directamente con el móvil, ya que los códigos QR pueden ocultar enlaces acortados, páginas de phishing o redirecciones caducadas. Un resultado de texto plano decodificado sin acción de clic es una vista previa más segura que un redireccionamiento con un toque, y los navegadores modernos basados en Chromium exponen la API BarcodeDetector que es rápida pero no maneja bien Micro-QR o códigos dañados, por lo que la página recurre a una biblioteca JS cuando BarcodeDetector no está disponible, mientras que la corrección de errores Reed-Solomon en nivel M, Q o H aún puede rescatar una foto borrosa pero los códigos de alta densidad o bajo contraste frecuentemente fallan y necesitan una nueva captura con más luz y menos inclinación. Los códigos Micro-QR, que solo tienen un marcador de posición en una esquina, son una familia completamente diferente y generalmente requieren un escáner dedicado.

Principio técnico

La decodificación de códigos QR es un pipeline de procesamiento de imágenes de múltiples etapas que localiza el código en una fotografía o captura de pantalla, corrige la distorsión de perspectiva, umbraliza la imagen a blanco y negro, lee la cuadrícula de módulos, aplica corrección de errores y decodifica los datos según el modo de codificación. Esta herramienta usa la biblioteca jsQR, que implementa el pipeline completo en JavaScript ejecutándose en el hilo principal del navegador. La primera etapa es localizar los tres patrones de búsqueda: los distintivos marcadores cuadrado-dentro-de-cuadrado-dentro-de-cuadrado de 7x7 en las esquinas superior izquierda, superior derecha e inferior izquierda de cada código QR. jsQR escanea la imagen en busca de secuencias de píxeles blancos y negros alternantes que coincidan con la proporción 1:1:3:1:1 característica de la sección transversal de un patrón de búsqueda, independientemente de la rotación. Una vez localizados los tres patrones de búsqueda, sus centroides definen el cuadrilátero delimitador del código. La corrección de perspectiva transforma el cuadrilátero en una cuadrícula cuadrada usando una matriz de homografía calculada a partir de los cuatro puntos de esquina. Esto es esencial porque los códigos QR rara vez se fotografían de frente; la corrección endereza el código para que cada módulo (el cuadrado blanco o negro que representa un bit) caiga en una cuadrícula regular. El tamaño del módulo se determina por las dimensiones del patrón de búsqueda y el número de versión, que se lee de las tiras de información de formato adyacentes a los patrones de búsqueda. La binarización de la imagen convierte los valores de píxeles en escala de grises a blanco y negro puros. jsQR utiliza un enfoque de umbralización local: en lugar de un único umbral global (que falla bajo iluminación irregular o sombras), calcula umbrales para pequeñas regiones de la imagen, haciéndolo robusto frente a gradientes y viñeteado comunes en fotos de smartphones. La corrección de errores utiliza códigos Reed-Solomon según lo especificado en ISO/IEC 18004:2015. Los códigos QR soportan cuatro niveles de corrección de errores: L (~7% de recuperación), M (~15%), Q (~25%) y H (~30%). Las palabras de datos y las palabras de corrección de errores se intercalan en bloques; jsQR realiza el cálculo de síndromes y aplica el algoritmo de Berlekamp-Massey para localizar y corregir errores dentro de la capacidad nominal del código. Si el daño excede el nivel de corrección, la decodificación falla en lugar de devolver datos corruptos. Finalmente, el flujo de bits decodificado se interpreta según el indicador de modo de codificación en los primeros cuatro bits: numérico (0001, 10 bits por 3 dígitos), alfanumérico (0010, 11 bits por 2 caracteres), byte (0100, 8 bits por carácter, típicamente UTF-8 o Latin-1), kanji (1000, 13 bits por carácter usando Shift JIS) o ECI (0111, Extended Channel Interpretation para especificar conjuntos de caracteres). La herramienta muestra la cadena decodificada y detecta automáticamente si es una URL (intentando el análisis con new URL()) o texto plano.

  • Detección de patrones de búsqueda: jsQR escanea filas en busca de secuencias alternantes de píxeles blancos/negros que coincidan con la proporción 1:1:3:1:1 — tres de estos patrones en ángulos aproximadamente rectos entre sí confirman la presencia y orientación de un código QR independientemente de la rotación.
  • Corrección de perspectiva: una matriz de homografía calculada a partir de los cuatro puntos de esquina detectados proyecta el cuadrilátero inclinado sobre una cuadrícula cuadrada — este paso es esencial porque las fotos del mundo real rara vez capturan códigos QR de frente.
  • Binarización adaptativa: la umbralización local divide la imagen en pequeñas regiones y calcula umbrales por región, haciendo que el decodificador sea robusto frente a iluminación irregular, sombras y gradientes que harían fallar un umbral global.
  • Corrección de errores Reed-Solomon (ISO/IEC 18004): cuatro niveles (L/M/Q/H) proporcionan un 7-30% de recuperación de datos — el algoritmo de Berlekamp-Massey localiza las posiciones de error y el algoritmo de Forney calcula las magnitudes de corrección; si el daño excede el nivel, la decodificación falla limpiamente.
  • Detección del modo de codificación: los primeros cuatro bits de datos indican el modo — numérico (0001, eficiente para dígitos), alfanumérico (0010, para A-Z 0-9 y símbolos), byte (0100, para datos UTF-8/Latin-1 arbitrarios), kanji (1000, para Shift JIS) y ECI (0111, para especificación de conjunto de caracteres).
  • Versión y cuadrícula de módulos: las versiones de código QR van desde 1 (21x21 módulos) hasta 40 (177x177), con cada versión añadiendo 4 módulos por lado — la versión se lee de las tiras de información de formato cerca de los patrones de búsqueda, y el recuento de módulos determina la densidad de la cuadrícula de muestreo.
  • Ejecución local en el navegador: la imagen se dibuja en un elemento Canvas oculto, getImageData() extrae el búfer de píxeles RGBA crudo, y jsQR lo procesa completamente en el hilo principal del navegador — no se suben datos de imagen a ningún servidor y el canvas se recolecta como basura después de completar la decodificación.

Ejemplos

Código QR de URL

Carga escaneada: https://example.com
Tipo:        URL
Acción:      el escáner abre el enlace en el navegador del sistema tras confirmación

Código QR de texto plano

Carga escaneada: Este es contenido de texto
Tipo:        Texto
Acción:      el escáner copia el texto al portapapeles o lo muestra en una hoja de resultados

Código QR de credenciales WiFi

Carga escaneada: WIFI:T:WPA;S:NetworkName;P:Password;;
Tipo:        WiFi (WPA2)
Acción:      los teléfonos que reconocen el formato preguntan '¿Conectar a NetworkName?' y se unen con la contraseña indicada

Tarjeta de contacto vCard

Carga escaneada: BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nTEL:+1-555-0142\nEMAIL:jane@example.com\nEND:VCARD
Tipo:        Tarjeta de contacto
Acción:      los teléfonos ofrecen crear una nueva entrada en la libreta de direcciones a partir de los campos analizados

Preguntas frecuentes

¿Se sube la imagen para decodificarla?

No. La decodificación corre en tu navegador mediante WebAssembly o JS puro. Los bytes de la imagen se leen localmente; no se envía nada a un servidor.

¿Qué métodos de entrada se admiten?

Subir un archivo, pegar una imagen del portapapeles, o arrastrar y soltar un archivo de imagen. La imagen se procesa en tu navegador y nunca se sube a un servidor.

¿Qué devuelve el decodificador?

El texto bruto decodificado. La página detecta si el resultado es una URL o texto plano y muestra una etiqueta acorde. Si es una URL, se proporciona un botón Abrir URL.

¿Por qué no se decodifica mi QR?

Causas habituales: desenfoque, poco contraste, brillos, inclinación de perspectiva o el código está parcialmente tapado. Recorta más cerca, sube el brillo y mantén el teléfono firme a 90° respecto a la superficie. Los códigos QR con nivel de error L apenas tolera daños; el nivel H aguanta una oclusión considerable.

¿Puede decodificar QR de capturas de pantalla y PDF?

Las capturas suelen decodificarse bien porque tienen contraste perfecto y nada de distorsión de perspectiva. Para PDF, haz primero una captura de la zona del QR y luego sube la imagen.

¿Debería abrir todas las URL que contenga el QR?

No. Los códigos QR son un vector conocido de phishing («quishing») porque la URL queda oculta dentro de la imagen. Inspecciona la URL decodificada antes de abrirla: la página muestra la URL completa para que puedas leer el dominio. Cuidado con los dominios con erratas, las direcciones IP y las URL de acortadores que ocultan el destino real.

¿Puede decodificar varios QR en una imagen?

La página detecta un código QR por imagen. Si tienes una imagen con varios códigos, recorta cada uno por separado y súbelos uno a uno para obtener los resultados más fiables.