Todo lo que necesitas para generar códigos QR en ZPL: sintaxis ^BQ, parámetros, corrección de errores, tamaño y ejemplos copy-paste — gratis, sin registro.
TL;DR
Los códigos QR en ZPL se generan con el comando ^BQ. Sintaxis básica: ^FOx,y ^BQ orientación,modelo,magnificación ^FD <ECC><modo>,datos ^FS. Usa siempre modelo 2 (el modelo 1 es legado). El payload de ^FD empieza con dos letras: la primera es el nivel de corrección de errores (H, Q, M, L) y la segunda es el modo de entrada (A = codificación automática, M = segmentos manuales). HA, es el default seguro para envíos/exterior (recuperación H + automático). La magnificación (1-10) controla el tamaño del módulo — empieza con 5 en una etiqueta 4×6 pulgadas a 203 dpi. Añade ^CI28 dentro del formato para habilitar UTF-8 en el payload.
Prueba nuestras herramientas ZPL gratuitas ahora
Gratis, funciona en el navegador — Resultados instantáneos
Un código QR en ZPL es un código de barras bidimensional generado por el comando ^BQ — una de las simbologías más potentes que soportan las impresoras Zebra. Un solo QR puede almacenar hasta 4,296 caracteres alfanuméricos o 7,089 dígitos numéricos, soporta corrección Reed–Solomon (sigue siendo legible aunque esté dañado o sucio parcialmente) y se lee con cualquier cámara de smartphone o escáner industrial. Por eso es la elección universal para URLs de tracking, tarjetas vCard, identificadores GS1, credenciales WiFi, tickets de transporte y cualquier payload que supere los 20 caracteres óptimos para 1D.
En ZPL, el QR vive dentro de un formato ^XA..^XZ como cualquier otro campo. Lo posicionas con ^FO o ^FT, lo declaras con ^BQ y en ^FD antepones dos caracteres antes de la coma y los datos: el primero es el nivel de corrección de errores (H, Q, M o L) y el segundo es el modo de entrada (A = selección de codificación automática, M = segmentos manuales). Para la mayoría de los casos de producción escribes ^FDHA,datos^FS — alta recuperación, codificación automática. No hay paso ^BY separado porque el tamaño del módulo se controla directamente con el parámetro de magnificación — valores típicos son 4 a 8 en una etiqueta 4×6 pulgadas a 203 dpi. El parámetro de modelo siempre debe ser 2 (modelo 1 es legado y no se recomienda para diseños nuevos).
La declaración mínima de QR toma 3 parámetros después de ^BQ — orientación, modelo y magnificación. El nivel de corrección de errores y el modo de entrada van dentro de ^FD como un prefijo de 2 caracteres seguido de coma (ver Formato del Field Data abajo). Estructura canónica:
^XA
^CI28 ; UTF-8 para datos internacionales
^FO50,50 ; Posición X=50, Y=50
^BQ orientación,modelo,magnificación ; orientación N/R/I/B, modelo 2, magnif. 1-10
^FD <ECC><modo>,<payload>^FS ; ECC = H/Q/M/L, modo = A (auto) o M (manual)
^XZ
; Línea típica de producción: alta recuperación + codificación automática
; ^FDHA,https://zplpdf.com^FS| Parámetro | Descripción | Valores válidos | Default |
|---|---|---|---|
| orientación | Rotación del símbolo QR en la etiqueta. Usa N para etiquetas de envío, R cuando apilas contenido verticalmente. | N, R, I, B | N |
| modelo | Modelo de QR. Usa siempre 2 en diseños nuevos. El modelo 1 es la especificación legado de 1994 y los escáneres modernos solo apuntan al modelo 2. | 1, 2 | 2 |
| magnificación | Multiplicador del módulo (dot). Cada unidad añade ~5 dots por módulo a 203 dpi. Valor mayor = QR más grande y más fácil de escanear, pero ocupa más espacio. | 1–10 | según dpi |
| override ECC | Override opcional del nivel de corrección de errores en el propio comando ^BQ. En la práctica este slot se deja vacío y el nivel se elige con el primer carácter de ^FD (H/Q/M/L) — ver Formato del Field Data. | H, Q, M, L | vacío (usa prefijo ^FD) |
| máscara | Máscara opcional que mejora la legibilidad del escáner cuando el payload produce regiones uniformes. Casi nunca necesita ajustarse manualmente. | 0–7 | 7 |
El payload de ^FD para ^BQ siempre empieza con dos caracteres antes de la coma: el primero es el nivel de corrección de errores (H, Q, M o L) y el segundo es el modo de entrada (A para selección de codificación automática, M para segmentos manuales donde etiquetas cada segmento con prefijos N/A/B/K). Las cuatro tarjetas abajo muestran las combinaciones que usarás en producción. Elegir la correcta es la decisión más importante — la mayoría de bugs en producción vienen de leer mal estos dos caracteres.
~30% recuperación de daño y selección de codificación automática. La opción más segura para envíos, freight y etiquetas exteriores donde el QR pueda rozarse.
^FO50,50^BQN,2,6^FDHA,https://zplpdf.com/track/A-7782^FS~15% recuperación — el mejor balance entre capacidad y recuperabilidad para etiquetas interiores limpias (oficina, retail, e-commerce).
^FO50,50^BQN,2,6^FDMA,SKU:COF-ORG-250^FS~7% recuperación, la codificación más densa. Úsala solo cuando el payload es largo y la etiqueta se imprime en interior a alta resolución.
^FO50,50^BQN,2,6^FDLA,<url-larga-con-muchos-params>^FSEl modo manual te permite etiquetar la codificación por segmento con prefijos N (numérico), A (alfanumérico), B (byte) o K (Kanji) dentro de los datos. Úsalo solo cuando el modo automático produce una codificación subóptima.
^FO50,50^BQN,2,6^FDHM,N0123456789AABC1234^FSLa corrección Reed–Solomon permite que el QR siga siendo legible aunque parte del símbolo esté ausente o dañada. El compromiso es la capacidad: niveles más altos añaden más redundancia y dejan menos espacio para datos. El nivel se selecciona con el primer carácter del prefijo en ^FD — HA para H + auto, MA para M + auto, etc. No hay default implícito — siempre declaras el nivel explícitamente. Para envíos y exterior, HA es el punto de partida recomendado; para etiquetas interiores limpias MA ahorra espacio.
| Nivel | Recuperación | Cuándo usarlo |
|---|---|---|
| L | ~7% | Capacidad máxima, etiquetas interiores limpias, posters de marketing con impresión de alta resolución. |
| M | ~15% | Default genérico. Buen balance para oficina, retail, etiquetas e-commerce. |
| Q | ~25% | Etiquetas térmicas expuestas a desgaste (almacén, freight) y ambientes ligeramente sucios. |
| H | ~30% | Etiquetas exteriores, cadena de frío, donde el QR pueda rayarse, mancharse o romperse parcialmente. Se selecciona con el prefijo HA, |
El tamaño del QR en ZPL se controla con el parámetro de magnificación (1–10) — no hay paso ^BY para QR. Cada unidad multiplica el módulo (el cuadradito más pequeño del QR) por 4 dots a 203 dpi y 6 dots a 300 dpi. El tamaño total del símbolo depende de la magnificación y de la longitud del payload (más datos → más módulos → código más grande).
Cada ejemplo es un bloque ^XA..^XZ completo. Pégalo en el visor ZPLPDF para ver exactamente qué imprimirá tu impresora.
El caso 90%: un QR que abre una URL de tracking cuando se escanea con cualquier cámara de smartphone. HA, ofrece alta corrección de errores (~30% recuperación) más selección de codificación automática — el default seguro para cualquier etiqueta de envío o e-commerce.
^XA
^CI28
^FO50,50
^BQN,2,6
^FDHA,https://zplpdf.com/track/A-7782^FS
^XZGuarda un contacto completo (nombre, teléfono, email, organización) para que al escanear se añada a la agenda del smartphone. Usa MA, (recuperación media + auto) y magnificación 7 para mantener legibles ~250 caracteres.
^XA
^CI28
^FO50,50
^BQN,2,7
^FDMA,BEGIN:VCARD\nVERSION:3.0\nN:Pérez;Juana\nFN:Juana Pérez\nORG:ZPLPDF Inc.\nTEL:+34-555-0142\nEMAIL:juana@zplpdf.com\nEND:VCARD^FS
^XZCodifica (01) GTIN + (17) vencimiento + (10) lote en un único QR siguiendo GS1 Digital Link. Habitual en trazabilidad farmacéutica — HA, da la alta recuperación que el estándar espera.
^XA
^CI28
^FO50,50
^BQN,2,6
^FDHA,https://id.gs1.org/01/07640123456789/17/270930/10/B25C-0481^FS
^XZAl escanear el QR el dispositivo se conecta automáticamente a la red WiFi. Útil en packaging o badges de evento. MA, (medio + auto) basta para etiquetas interiores limpias.
^XA
^CI28
^FO50,50
^BQN,2,6
^FDMA,WIFI:T:WPA;S:Office-Guest;P:Bienvenido2026;;^FS
^XZCuando la etiqueta pueda rayarse, mancharse o romperse parcialmente (cadena de frío, freight, logística agresiva), sube la magnificación y mantén el prefijo HA, para que el QR sobreviva al daño parcial.
^XA
^CI28
^FO50,50
^BQN,2,8
^FDHA,FREIGHT-A-7782^FS
^XZLos caracteres no ASCII (中文, ñ, ç, é) requieren ^CI28 dentro del formato para que la impresora trate el payload como UTF-8. MA, (medio + auto) procesa los segmentos byte de forma transparente; sin ^CI28 aparecerán ? en los datos.
^XA
^CI28
^FO50,50
^BQN,2,6
^FDMA,Pedido cliente #A-7782\nNombre: Juana Pérez^FS
^XZEl QR imprime pero ningún escáner lo lee.
→ Magnificación demasiado baja para el payload — los módulos quedan más pequeños que el mínimo del escáner.
✓ Aumenta la magnificación en 2 (ej. 5 → 7) y verifica que el módulo mida al menos 0.4 mm de ancho.
El escáner lee pero los caracteres UTF-8 aparecen como ?.
→ Falta ^CI28 antes de ^BQ — la codepage por defecto elimina bytes no ASCII.
✓ Añade ^CI28 justo después de ^XA. El modo de entrada automático HA,/MA, gestionará entonces los bytes UTF-8 correctamente.
El QR se ve cuadrado y las cámaras de smartphone lo rechazan.
→ Se usó el modelo 1 (legado) en lugar del 2 en ^BQ.
✓ Usa ^BQN,2,<mag> — siempre 2 en el slot de modelo en diseños nuevos.
URL larga imprime pero falla al escanear etiquetas parcialmente gastadas.
→ Se eligió un nivel ECC bajo (LA, o MA,), por lo que el QR no resiste al daño parcial.
✓ Usa HA, (recuperación alta, ~30% tolerancia al daño) en cualquier etiqueta que pueda terminar rozada en campo.
Exceso de espacio blanco alrededor del QR fuerza etiquetas demasiado grandes.
→ Zona de silencio demasiado amplia porque ^FO explícito hereda ^BY de un barcode 1D anterior.
✓ Resetea ^BY entre simbologías o posiciona el QR con su propio ^FO fuera de cualquier bloque ^BY previo.
El QR codifica bien en el visor pero falla en un escáner Datalogic / Honeywell.
→ Los escáneres industriales requieren tamaño mínimo de módulo y zona de silencio de 4 módulos.
✓ Aumenta la magnificación a ≥6 y deja al menos 4 módulos de margen alrededor del símbolo.
Pega cualquier ejemplo de esta página en nuestro visor ZPL gratuito online para ver el QR renderizado exactamente como lo producirá tu impresora.