Comandos ZPL Más Comunes
Referencia completa de más de 40 comandos para programación de impresoras Zebra con ejemplos prácticos
Prueba nuestras herramientas ZPL gratuitas ahora
Gratis, sin registro — Resultados instantáneos
Referencia de Comandos ZPL
ZPL (Zebra Programming Language) utiliza comandos que comienzan con ^ (caret) o ~ (tilde). Los comandos con ^ se usan dentro del formato de etiqueta, entre ^XA y ^XZ. Los comandos con ~ se usan para configuración de la impresora y se pueden enviar fuera de un formato. Cada comando tiene parámetros opcionales separados por comas. Esta guía cubre los comandos más utilizados en etiquetas de envío, inventario, retail y logística.
Categorías de comandos
Comandos de formato de etiqueta
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^XA | Inicio de formato de etiqueta. Todo código ZPL debe comenzar con este comando. | ^XA ... ^XZ | Sin parámetros |
| ^XZ | Fin de formato de etiqueta. Cierra el bloque iniciado con ^XA y envía la etiqueta a imprimir. | ^XA ^FO50,50 ^FDHola^FS ^XZ | Sin parámetros |
| ^FO | Origen de campo. Define la posición X,Y donde se colocará el siguiente elemento (texto, código de barras, gráfico). | ^FO100,200 | x,y - Coordenadas en puntos (dots). 203 dpi = 8 dots/mm |
| ^FT | Tipografía de campo. Similar a ^FO pero posiciona desde la línea base del texto, útil para alinear textos de diferente tamaño. | ^FT100,200 | x,y - Coordenadas desde línea base del texto |
| ^FS | Separador de campo. Indica el fin de un campo individual. Cada campo (texto, código de barras, gráfico) debe terminar con ^FS. | ^FO50,50^FDTexto^FS | Sin parámetros |
| ^CI | Cambiar codificación internacional. Permite usar caracteres especiales como acentos (á, é, ñ) y símbolos. | ^CI28 | código - 28 = UTF-8, 13 = Latin-1. Usar ^CI28 para español y portugués |
| ^CF | Fuente predeterminada. Establece la fuente, orientación y tamaño por defecto para toda la etiqueta. | ^CF0,30,30 | fuente,alto,ancho - Fuente 0 es la fuente interna estándar |
| ^FW | Orientación predeterminada de campos. Establece la rotación por defecto para texto y códigos de barras. | ^FWR | N=Normal, R=90°, I=180°, B=270° |
Comandos de texto
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^A | Selección de fuente y tamaño. Define qué fuente usar y su tamaño para el siguiente campo de texto. | ^A0N,30,30 | f,o,h,w - f=Fuente (0-9,A-Z), o=Orientación (N,R,I,B), h=Alto, w=Ancho |
| ^FD | Datos de campo. El texto o dato que se imprimirá. Siempre va después de ^FO y ^A, y antes de ^FS. | ^FO50,50^A0N,30,30^FDMi texto^FS | texto - Contenido a imprimir (máx. 3072 caracteres) |
| ^FB | Bloque de campo multilínea. Crea un área de texto con ancho fijo que ajusta el texto automáticamente en varias líneas. | ^FB400,3,0,L,0^FDTexto largo que se ajusta automáticamente^FS | ancho,max_líneas,espaciado,alineación(L/C/R/J),sangría |
| ^FH | Indicador hexadecimal. Permite insertar caracteres especiales usando su código hex precedido por _ (guión bajo). | ^FH^FDPrecio: _c2_a250.00^FS | indicador - Por defecto usa _ como prefijo hex |
| ^FN | Número de campo para plantillas. Crea campos numerados que se pueden rellenar después, útil para etiquetas con datos variables. | ^FO50,50^A0N,30,30^FN1^FS | número - Número de campo (1-999) para reemplazo por ^FN en el siguiente formato |
| ^SN | Serialización numérica. Incrementa automáticamente un número en cada etiqueta impresa, ideal para números de serie o lotes. | ^FO50,50^A0N,30,30^SN001,1,Y^FS | inicio,incremento,rellenar_ceros(Y/N) |
Comandos de códigos de barras
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^BY | Configuración base de código de barras. Define el ancho de módulo, ratio y alto por defecto. Debe ir ANTES del comando de código de barras. | ^BY2,3,100 | ancho_módulo(1-10),ratio(2.0-3.0),alto - El ancho controla la resolución |
| ^BC | Code 128 — El más usado en logística y envíos. Codifica números, letras y caracteres especiales. Estándar en paquetería. | ^FO50,50^BY2^BCN,100,Y,N,N^FD123456789^FS | o,alto,interpretación(Y/N),arriba(Y/N),checksum(Y/N) |
| ^BQ | Código QR. Codifica URLs, texto largo o datos binarios. Muy usado en etiquetas de seguimiento y marketing. | ^FO50,50^BQN,2,5^FDQA,https://ejemplo.com^FS | o,modelo(1/2),magnificación(1-10). Prefijo datos: QA=auto, QM=manual |
| ^BE | EAN-13 — Estándar mundial para productos de retail. Requiere exactamente 12 dígitos (el 13° es checksum automático). | ^FO50,50^BY2^BEN,100,Y,N^FD750123456789^FS | o,alto,interpretación(Y/N),arriba(Y/N) |
| ^BU | UPC-A — Estándar en retail de Estados Unidos y Canadá. Requiere exactamente 11 dígitos (el 12° es checksum). | ^FO50,50^BY2^BUN,100,Y,N^FD12345678901^FS | o,alto,interpretación(Y/N),arriba(Y/N) |
| ^B3 | Code 39 — Muy usado en inventarios y manufactura. Solo codifica letras mayúsculas, números y algunos símbolos. | ^FO50,50^BY2^B3N,N,100,Y,N^FDABC123^FS | o,checksum(Y/N),alto,interpretación(Y/N),arriba(Y/N) |
| ^BX | DataMatrix — Código 2D compacto usado en manufactura, electrónica y farmacéutica. Almacena mucha información en poco espacio. | ^FO50,50^BXN,5,200^FDSN:ABC123456^FS | o,alto,calidad(0-200). 200=máxima corrección de errores |
| ^B7 | PDF417 — Código 2D de alta capacidad. Usado en licencias de conducir, boletos aéreos y documentos de identidad. | ^FO50,50^B7N,5,2,3,10,N^FDDatos extensos aquí^FS | o,alto,seguridad(0-8),columnas,filas,truncado(Y/N) |
| ^BO | Aztec — Código 2D compacto sin zona de silencio. Usado en boletos de transporte y aplicaciones donde el espacio es limitado. | ^FO50,50^BON,5,N^FDDatos Aztec^FS | o,magnificación,ECL(Y/N). No requiere zona blanca alrededor |
Comandos gráficos y líneas
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^GB | Dibujar caja o rectángulo. Crea bordes, separadores y marcos para organizar visualmente la etiqueta. | ^FO50,50^GB400,200,3^FS | ancho,alto,grosor_línea,color(B/W),redondeo(0-8) |
| ^GC | Dibujar círculo. Crea un círculo con diámetro y grosor de línea especificados. | ^FO50,50^GC100,3,B^FS | diámetro,grosor_línea,color(B/W) |
| ^GD | Dibujar línea diagonal. Crea una línea desde la esquina superior-izquierda a la inferior-derecha (o viceversa). | ^FO50,50^GD200,100,3,B,L^FS | ancho,alto,grosor,color(B/W),dirección(L/R) |
| ^GE | Dibujar elipse. Crea una elipse con ancho, alto y grosor de borde especificados. | ^FO50,50^GE200,100,3,B^FS | ancho,alto,grosor_línea,color(B/W) |
| ^GF | Campo gráfico. Inserta una imagen en formato comprimido (hex o Z64). Se usa para logos, firmas y gráficos personalizados. | ^GFA,datos_comprimidos... | formato(A=ASCII hex),bytes_datos,bytes_por_fila,filas,datos |
Configuración de etiqueta
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^LH | Origen de etiqueta (Label Home). Desplaza el punto de referencia (0,0) de toda la etiqueta. Útil para ajustar márgenes. | ^LH30,20 | x,y - Nuevo origen en puntos |
| ^LL | Largo de etiqueta. Define la longitud total de la etiqueta en puntos. Necesario si la impresora no detecta el largo automáticamente. | ^LL800 | largo - En puntos. 203dpi: 800pts ≈ 100mm |
| ^PW | Ancho de impresión. Define el ancho máximo de impresión. Útil para centrar contenido en etiquetas angostas. | ^PW812 | ancho - En puntos. 4" a 203dpi = 812 puntos |
| ^LT | Ajuste superior de etiqueta (Label Top). Desplaza toda la imagen hacia arriba o abajo para calibrar la posición vertical. | ^LT10 | desplazamiento - Positivo=abajo, negativo=arriba (-120 a 120) |
| ^LS | Desplazamiento lateral (Label Shift). Mueve toda la imagen hacia la izquierda o derecha para calibración horizontal. | ^LS-20 | desplazamiento - Positivo=derecha, negativo=izquierda |
| ^MN | Tipo de medio (Media Tracking). Configura cómo la impresora detecta las etiquetas: por marca negra, espacio o continuo. | ^MNY | N=Continuo, Y=Espacio/Gap, M=Marca negra, W=Web sensing |
| ^MM | Modo de impresión. Controla si la impresora corta, despega o rebobina las etiquetas después de imprimir. | ^MMT | T=Tear-off, P=Peel-off, R=Rewind, C=Cutter, A=Applicator |
Comandos de impresión
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ^PQ | Cantidad de impresión. Define cuántas copias imprimir de la etiqueta actual. Soporta pausa entre grupos. | ^PQ3,0,1,Y | cantidad,pausa_entre_grupos,copias_por_grupo,override(Y/N) |
| ^PR | Velocidad de impresión. Controla velocidades de impresión, retroceso y alimentación. Menor velocidad = mejor calidad. | ^PR4,4,4 | impresión(1-14),retroceso,alimentación - Velocidad en pulgadas/segundo |
| ^PM | Imagen espejo. Invierte toda la imagen horizontalmente. Útil para impresión en materiales transparentes. | ^PMY | Y=Espejo activado, N=Normal |
| ^PO | Orientación de impresión. Rota toda la etiqueta 180° para impresoras que alimentan desde abajo. | ^POI | N=Normal, I=Invertido (180°) |
Comandos de configuración de impresora (~)
| Comando | Descripción | Ejemplo | Parámetros |
|---|---|---|---|
| ~SD | Configurar oscuridad (Set Darkness). Ajusta la intensidad de impresión. Valores altos = más oscuro, más consumo de ribbon. | ~SD15 | valor (0-30) - Recomendado: 10-20 para thermal transfer |
| ~JA | Cancelar todos los trabajos. Detiene la impresión actual y limpia el buffer de la impresora. | ~JA | Sin parámetros |
| ~HS | Estado del host. Solicita información de estado de la impresora: papel, ribbon, errores activos. | ~HS | Sin parámetros - Retorna 3 líneas de estado |
| ~DG | Descargar gráfico. Almacena una imagen en la memoria de la impresora para uso repetido sin reenviar datos. | ~DGR:LOGO.GRF,bytes,ancho,datos | nombre,bytes_totales,bytes_por_fila,datos_hex |
Preguntas frecuentes sobre comandos ZPL
¿Cuáles son los comandos ZPL esenciales para principiantes?
Los 6 comandos imprescindibles son: ^XA (inicio de etiqueta), ^XZ (fin), ^FO (posición X,Y), ^A (fuente y tamaño), ^FD (texto a imprimir) y ^FS (fin de campo). Con estos 6 comandos puedes crear etiquetas básicas de texto. Para etiquetas de envío, agrega ^BY (configurar código de barras) y ^BC (Code 128).
¿Cuál es la diferencia entre ^FO y ^FT en ZPL?
^FO (Field Origin) posiciona desde la esquina superior izquierda del elemento. ^FT (Field Typeset) posiciona desde la línea base del texto. Para la mayoría de los casos ^FO es más intuitivo. Usa ^FT cuando necesites alinear textos de diferente tamaño en la misma línea base, ya que ^FT mantiene la alineación vertical independientemente del tamaño de fuente.
¿Cómo imprimir acentos y la letra ñ en ZPL?
Usa el comando ^CI28 al inicio de tu etiqueta para activar la codificación UTF-8. Ejemplo: ^XA ^CI28 ^FO50,50 ^A0N,30,30 ^FDSeñor García — Ñoño^FS ^XZ. Sin ^CI28, los caracteres especiales como á, é, ñ, ü aparecerán como símbolos incorrectos.
¿Cómo imprimir múltiples copias de la misma etiqueta?
Usa el comando ^PQ antes de ^XZ. Ejemplo: ^PQ5 imprime 5 copias. Para serialización (números incrementales), usa ^SN dentro del campo: ^FO50,50 ^A0N,30,30 ^SN001,1,Y^FS imprimirá 001, 002, 003... en cada copia sucesiva.
¿Los comandos ZPL funcionan en impresoras que no son Zebra?
No directamente. ZPL es nativo de impresoras Zebra. Algunas marcas como TSC y SATO tienen modos de compatibilidad parcial, pero no es 100% confiable. Para impresoras Elgin, Xprinter, Brother u otras marcas, la solución recomendada es convertir el código ZPL a PDF usando ZPLPDF y luego imprimir el PDF desde cualquier impresora.
¿Qué código de barras debo usar para etiquetas de envío?
Code 128 (^BC) es el estándar en logística y paquetería a nivel mundial. Para etiquetas de marketplace como Mercado Libre, Amazon o Shopee, el código ya viene en la etiqueta ZPL que generan. Si necesitas crear tu propio código de barras de envío, usa ^BY2 ^BCN,100,Y para un Code 128 legible con interpretación humana visible debajo.
¿Cómo ajusto el tamaño y calidad de impresión en ZPL?
Para la resolución de códigos de barras, ajusta el primer parámetro de ^BY (ancho de módulo): ^BY2 para estándar, ^BY3 para más grueso. Para la oscuridad general, usa ~SD seguido de un valor de 0-30 (recomendado 15). Para la velocidad (menor = mejor calidad), usa ^PR seguido de la velocidad en pulgadas/segundo: ^PR4 es un buen balance calidad/velocidad.
Valida tu código ZPL
Usa nuestro validador para verificar que tu código ZPL sea correcto antes de enviar a la impresora.