Formatear XML

Formatear XML online — CFDI legible y errores de sintaxis

Pega un XML para indentarlo, minificarlo o comprobar que esté bien formado: el XML de una factura CFDI se vuelve legible en segundos. Si hay un error, ves la línea y la columna del primero, el punto marcado en tu texto y cómo arreglarlo. Los valores nunca se tocan y tu XML no sale del navegador.

Salida
Sangría
  • XML formateado

    <?xml version="1.0" encoding="UTF-8"?> <cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" Version="4.0" Serie="A" Folio="1024" Fecha="2026-10-16T10:30:00" SubTotal="500.00" Moneda="MXN" Total="580.00" TipoDeComprobante="I" Exportacion="01" MetodoPago="PUE" LugarExpedicion="06000"> <cfdi:Emisor Rfc="AAA010101AAA" Nombre="PANADERIA EJEMPLO" RegimenFiscal="601"/> <cfdi:Receptor Rfc="XAXX010101000" Nombre="PUBLICO EN GENERAL" DomicilioFiscalReceptor="06000" RegimenFiscalReceptor="616" UsoCFDI="S01"/> <cfdi:Conceptos> <cfdi:Concepto ClaveProdServ="01010101" Cantidad="10" ClaveUnidad="H87" Descripcion="Pan dulce (conchas)" ValorUnitario="50.00" Importe="500.00" ObjetoImp="02"/> </cfdi:Conceptos> <cfdi:Impuestos TotalImpuestosTrasladados="80.00"> <cfdi:Traslados> <cfdi:Traslado Base="500.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="80.00"/> </cfdi:Traslados> </cfdi:Impuestos> </cfdi:Comprobante>

ResultadoXML bien formado
Elementos8
Niveles de anidamiento4
Atributos33
Declaraciones de espacio de nombres1
Tamaño antes (bytes)920
Tamaño después (bytes)962
Cambio de tamaño4.57%
Líneas13

Solo cambiaron los espacios entre etiquetas: los textos, los valores de los atributos, el CDATA y los comentarios se copian tal cual.

Se calcula en tu dispositivo · fórmulas comprobadas con resultados conocidos · Cómo las probamos

Cómo formatear un XML

  1. Pega el XML en la caja: el de una factura CFDI o Facturae, una petición o respuesta SOAP, un sitemap, un pom.xml de Maven, un layout de Android o un SVG. Se revisa y se formatea mientras pegas.
  2. Elige Formatear para poner cada elemento en su propia línea, con sangría de 2 espacios, 4 espacios o tabulador, o Minificar para quitar los espacios entre etiquetas.
  3. Pulsa Copiar junto al resultado, o Descargar para guardarlo como archivo.
  4. Si el XML no está bien formado, ves el problema, su línea y su columna, la línea misma con un ^ debajo del punto y cómo arreglarlo. En cuanto lo corriges, aparece el XML formateado.

Leer el XML de una factura CFDI

El XML de un CFDI suele llegar en una sola línea, con la mayor parte de los datos en atributos larguísimos. Formateado, cada nodo queda en su nivel: cfdi:Comprobante con la serie, el folio, la fecha, los totales y el método de pago; cfdi:Emisor y cfdi:Receptor con su RFC, régimen fiscal y uso del CFDI; un cfdi:Concepto por partida dentro de cfdi:Conceptos; cfdi:Impuestos; y en el archivo timbrado, cfdi:Complemento con el tfd:TimbreFiscalDigital, donde está el UUID (folio fiscal). Así encuentras rápido el importe de una partida, la clave de producto o servicio o el régimen del receptor.

El ejemplo de la caja es un fragmento simplificado de CFDI 4.0 —sin sello, certificado ni timbre, y sin los impuestos por concepto—, así que no es una factura válida. Tiene 920 bytes en una línea; formateado con 2 espacios queda así:

<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" Version="4.0" Serie="A" Folio="1024" Fecha="2026-10-16T10:30:00" SubTotal="500.00" Moneda="MXN" Total="580.00" TipoDeComprobante="I" Exportacion="01" MetodoPago="PUE" LugarExpedicion="06000">
  <cfdi:Emisor Rfc="AAA010101AAA" Nombre="PANADERIA EJEMPLO" RegimenFiscal="601"/>
  <cfdi:Receptor Rfc="XAXX010101000" Nombre="PUBLICO EN GENERAL" DomicilioFiscalReceptor="06000" RegimenFiscalReceptor="616" UsoCFDI="S01"/>
  <cfdi:Conceptos>
    <cfdi:Concepto ClaveProdServ="01010101" Cantidad="10" ClaveUnidad="H87" Descripcion="Pan dulce (conchas)" ValorUnitario="50.00" Importe="500.00" ObjetoImp="02"/>
  </cfdi:Conceptos>
  <cfdi:Impuestos TotalImpuestosTrasladados="80.00">
    <cfdi:Traslados>
      <cfdi:Traslado Base="500.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="80.00"/>
    </cfdi:Traslados>
  </cfdi:Impuestos>
</cfdi:Comprobante>

Son 8 elementos con 33 atributos en 4 niveles. Como los datos del CFDI van en atributos, la sangría solo añade 42 bytes; minificado vuelve a 920 bytes. Los valores quedan exactamente igual: 0.160000 conserva sus seis decimales y los atributos mantienen su orden.

Guarda y envía el original timbrado

El sello digital del CFDI se calcula sobre la cadena original —los valores de los atributos—, y el formateador no cambia ningún valor. Aun así, el archivo con validez fiscal es el XML original que devolvió el PAC al timbrar: consérvalo y envíalo tal cual, y usa la copia formateada solo para leerla o encontrar un error. En documentos firmados con XMLDSig, como Facturae en España, SAML o muchos mensajes SOAP, la firma cubre el texto exacto, incluidos los espacios entre etiquetas, así que una copia formateada o minificada ya no coincide con su firma.

Bien formado no es lo mismo que válido

Esta página revisa la sintaxis de XML 1.0 y de los espacios de nombres: un único elemento raíz; cada etiqueta abierta cerrada por la que corresponde, en orden y con las mismas mayúsculas; valores de atributos entre comillas y sin atributos repetidos; & y < escritos como &amp; y &lt;; cada prefijo como cfdi: declarado con xmlns:cfdi="…"; y la declaración <?xml … ?>, si la hay, al principio del archivo. No valida contra los esquemas XSD del SAT, no comprueba el sello ni el timbre y no consulta si el CFDI está vigente o cancelado: para eso está el servicio de verificación de CFDI del SAT o el validador de tu proveedor. El error más común en XML armado a mano es el & sin escapar:

  <cfdi:Emisor Nombre="Tacos & Más"/>
                             ^

Aquí aparece & sin escapar en la línea 2, columna 30: el nombre “Tacos & Más” debe escribirse Tacos &amp; Más.

Qué cambia el formateador y qué nunca toca

Solo los elementos que contienen únicamente otros elementos reciben saltos de línea, porque solo ahí los espacios entre etiquetas no significan nada. Todo lo demás se copia carácter por carácter:

Los saltos de línea de Windows (CR LF) se escriben como LF, que es como los lee cualquier analizador de XML.

Límites y consejos

Tu XML se queda en tu dispositivo

La lectura, la revisión y el formato se hacen en tu navegador. Las facturas llevan RFC, nombres, domicilios e importes; nada de eso se sube ni se registra, y tampoco se guarda: al recargar la página, la caja queda vacía.

Preguntas frecuentes

¿Se sube mi XML a un servidor?

No. El formateador es JavaScript que se ejecuta en tu navegador, así que el archivo no sale de tu dispositivo, y la página sigue funcionando sin conexión una vez cargada.

¿Esta página valida mi CFDI?

Comprueba que el XML esté bien formado, la sintaxis que exige cualquier lector de XML. No lo valida contra los esquemas XSD del SAT, no verifica el sello ni el timbre y no consulta su estatus. Para eso usa el servicio de verificación de CFDI del SAT o el validador de tu PAC.

¿Puedo formatear una factura y luego enviarla?

Envía siempre el XML original timbrado: es el que tiene validez fiscal. Usa la versión formateada solo para leerla. En XML firmados con XMLDSig, como Facturae, la firma cubre el texto exacto, espacios incluidos, y una copia formateada ya no la supera.

¿Por qué aparece “& sin escapar”?

En XML el & inicia una referencia como &amp; o &#241;. Un & suelto —en una razón social como “Tacos & Más”, una descripción o una URL con varios parámetros— debe escribirse &amp;.

¿Por qué algunos elementos quedan en una sola línea?

Un elemento que contiene texto —solo o mezclado con etiquetas— se copia tal cual, porque añadir saltos de línea o espacios dentro cambiaría el texto. Solo los elementos que contienen únicamente otros elementos se reparten en varias líneas.

Inserta esta calculadora en tu sitio web

Gratis para cualquier sitio o blog. Pega este código donde quieras que aparezca la calculadora:

Última actualización: 16 de octubre de 2026

Menú

Categorías

Calculadoras financieras15 calculadorasCalculadoras de negocios y compras6 calculadorasCalculadoras de salud y bienestar8 calculadorasCalculadoras de matemáticas y escuela16 calculadorasCalculadoras de fechas y horas9 calculadorasCuentas regresivas para fiestas6 calculadorasHerramientas para el día a día32 calculadorasHerramientas de imagen y PDF18 calculadorasHerramientas de micrófono, cámara y sonido10 calculadorasHerramientas para desarrolladores5 calculadoras

CalcWorthy

Acerca deContactoPolítica de privacidadTérminos de uso

Idioma

Idioma
EspañolSpanishEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian日本語Japanese한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese简体中文Simplified Chinese