xml.etree.ElementTree.ParseError: unclosed token: line 1, column 0: what it means and how to fix it

TL;DR: Validate locally, fix the first real error, validate again (no upload).

Troubleshoot xml.etree.ElementTree.ParseError: unclosed token: line 1, column 0 and fix invalid XML locally (no upload).

What the error means

xml.etree.ElementTree.ParseError: unclosed token: line 1, column 0 means the XML parser found invalid markup. Most XML issues are fixable by correcting the first broken tag/character and re-validating.

Most common real-world causes

  • Mismatched tags (opening/closing tags do not match).
  • Unescaped reserved characters (especially & in text).
  • Multiple root elements (XML must have exactly one root).
  • Invalid characters (control chars, bad Unicode) inside the file.
  • Wrong encoding or a stray BOM/prolog mismatch.
  • Cut/truncated XML (missing closing tags).

Fast debugging steps

  • Validate the first error first. Fixing the first broken tag usually resolves many downstream errors.
  • Search around the reported line/column for mismatched tags or a raw '&' that should be '&'.
  • Confirm the XML starts with a single root and ends with the matching closing tag.
  • If the file comes from a feed/export, try a smaller sample to isolate the first invalid record.

Code example (python)

import xml.etree.ElementTree as ET

try:
    root = ET.fromstring(xml_text)
    print(root.tag)
except ET.ParseError as e:
    # e.position is (line, column) for many errors
    print('ParseError:', e)
    print('position:', getattr(e, 'position', None))

Fix without uploading data

If the XML contains sensitive data, validate and convert locally. No Upload Tools runs 100% in your browser.

  • XML to JSON to trigger strict parsing and see the first parser error.
  • JSON Validator to validate output if you post-process to JSON.

Workflow: validate -> fix the first error -> validate again -> export/convert.

FAQ

Why do I get different errors in different tools? XML parsers differ. Always fix the first error in the raw input and re-check.

Should I regex-fix XML? Avoid blind regex edits. Validate after each change so you know what you fixed.

Privacy & Security
All processing happens locally in your browser. Files are never uploaded.

Quick fix checklist

  • Reproduce the error on a minimal input.
  • Check type/format and field mapping.
  • Apply the smallest safe fix.
  • Validate on production-like payload.

Next pages to check

Closest crawled pages without impressions yet. Added to speed first-impression conversion.

neighbor python go json cannot unmarshal string into field payload user type string runbneighbor csharp csharp stj could not be converted system string token checklists data imneighbor csharp csharp stj could not be converted system string token checklists multi tneighbor csharp csharp stj could not be converted system string token workflows api gateneighbor csharp csharp stj could not be converted system string token workflows edge funneighbor csharp csharp stj could not be converted system string token workflows enterprineighbor csharp csharp stj could not be converted system string token workflows multi teneighbor csharp csharp stj could not be converted system string token workflows webhooksneighbor csharp go json cannot unmarshal bool into field token type string runbooks edgeneighbor csharp go json cannot unmarshal bool into field token type string workflows ananeighbor csharp go json cannot unmarshal bool into field token type string workflows apineighbor csharp go json cannot unmarshal bool into field token type string workflows entneighbor csharp go json cannot unmarshal number into field token type string runbooks muneighbor csharp go json cannot unmarshal number into field token type string troubleshooneighbor csharp go json cannot unmarshal number into field token type string workflows aneighbor csharp go json cannot unmarshal number into field token type string workflows dneighbor csharp go json cannot unmarshal number into field token type string workflows eneighbor csharp go json cannot unmarshal number into field token type string workflows m