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.
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
- Haz clic en el área de carga para seleccionar una imagen de código QR o arrastra y suelta una
- También puedes pegar una imagen desde el portapapeles con Ctrl+V (Cmd+V en Mac)
- La herramienta detectará y decodificará automáticamente el contenido del código QR
- El resultado decodificado aparece abajo con detección automática del tipo de contenido (URL o texto)
- 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
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ónCó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 resultadosCó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 indicadaTarjeta 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 analizadosPreguntas 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.