How to convert a jira xml export to json
- Step 1Export the JIRA project as XML — Go to Project Settings →’ Export →’ Export issues as XML (or navigate to Issues →’ Export XML from a filtered issue list). A JIRA admin can export the full instance via Administration →’ Backup Manager.
- Step 2Upload the XML file — Drop the exported .xml file into the converter. Large JIRA exports with 100,000+ issues may take a few seconds to parse — the tool shows a progress indicator during processing.
- Step 3Filter by issue type or status after conversion — Use the JSON Key Filter or a JSON path expression to extract only Bug or Story types, or filter by status to isolate Done issues for velocity calculations or historical analysis.
- Step 4Load into your analytics tool or migration target — Save the JSON and read it with pd.read_json() for pandas analysis, import it into BigQuery using bq load, or iterate it in a migration script that creates issues in Linear, GitHub Issues, or Shortcut via their APIs.
Frequently asked questions
How are JIRA custom fields mapped to JSON keys?+
Custom fields in JIRA XML appear as <customfield customfieldId="cf_10001" key="story-points"> elements containing <customfieldvalue> children. The converter maps each to an entry in the customFields object using the key attribute as the JSON property name, so you get { customFields: { 'story-points': 5 } } rather than numeric IDs.
My JIRA export is over 100 MB. Will the browser handle it?+
Browsers can parse XML files up to 50–80 MB in the main thread before becoming slow. For larger exports, use a Node.js script with fast-xml-parser to convert the file locally, or narrow the export scope using JIRA's JQL date filters to create smaller date-range exports that can be processed in batches.
Is sprint and team data transmitted to JAD Apps?+
No. JIRA XML parsing runs entirely in your browser. Sprint contents, velocity data, estimation figures, and internal comments in the export are never transmitted to JAD Apps servers.
Privacy first
Conversion runs locally in your browser. No file is uploaded — only metadata counters are saved for signed-in dashboard stats.