Issue Export Reporter

Paste a Jira or Linear CSV issue export to see status breakdowns, lead and cycle-time percentiles, velocity per sprint, and an arrivals-vs-departures burndown. Runs locally in your browser.

Try:
Report

About this tool

Issue Export Reporter turns a pasted issue-tracker CSV export into the flow metrics teams usually need for a sprint review, operations readout, or lightweight delivery retro. It recognizes common Jira exports (Issue key, Status, Created, Resolved, Story Points, repeated Sprint columns) and Linear exports (ID, Status, Created, Started, Completed, Estimate, Cycle Name) without a network connection or API token.

The output can be a combined summary or a focused status, lead/cycle-time, velocity, burndown, or per-issue report. Median-first percentiles are configurable, finished and cancelled statuses are explicit, and non-standard exports can be mapped with field=header pairs when the auto-detected headers are not enough.

Worked example

Paste this tiny Jira-style export:

Issue key,Summary,Status,Story Points,Created,Resolved,Sprint
GIZ-1,Login page,Done,3,05/Jan/24 9:00 AM,08/Jan/24 5:00 PM,Sprint 1
GIZ-2,Fix crash,Done,2,05/Jan/24 9:00 AM,06/Jan/24 9:00 AM,Sprint 1
GIZ-3,Docs,In Progress,1,06/Jan/24 9:00 AM,,Sprint 1

With Report set to summary, the report includes:

Overview
issues: 3
completed: 2
open: 1

Lead time
all: n=2 p50=1.0 days p85=3.3 days p95=3.3 days

Velocity
Sprint 1: 2 issues, 5 points

Switch Output format to json for a structured object, csv for spreadsheet rows, or markdown for pipe tables that can be pasted into notes.

Useful controls

Limits and edge cases

FAQ

Can this connect to Jira, Linear, or a private tracker URL?

No. This is an offline CSV reporter. Export the issues from your tracker, paste the CSV here, and the metrics are computed locally without network access, accounts, or API tokens.

What is the difference between lead time and cycle time?

Lead time starts at the issue's created timestamp and ends at its resolved or completed timestamp. Cycle time starts at a detected Started / In Progress column when the export has one. If the CSV has no start timestamp, cycle-time rows are omitted rather than guessed from status names.

How should I handle custom status names?

Use Statuses that count as done and Statuses that count as cancelled. Both fields are comma-separated and matched case-insensitively, so values such as Released, Merged, Won't Do, or Duplicate can match your team's workflow without editing the CSV.

Why are my percentile values different from a dashboard?

This tool uses the nearest-rank method over the issues visible in the pasted CSV. Some dashboards interpolate percentiles, exclude outliers, use working calendars, or read transition history that is not present in an export. Check the input rows, business_days, and the done/cancelled status lists when reconciling numbers.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool issue-export-reporter "Issue key,Status,Created,Resolved,Story Points,Sprint
GIZ-1,Done,05/Jan/24 9:00 AM,08/Jan/24 5:00 PM,3,Sprint 1"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/issue-export-reporter/?data=Issue%20key%2CStatus%2CCreated%2CResolved%2CStory%20Points%2CSprint%0AGIZ-1%2CDone%2C05%2FJan%2F24%209%3A00%20AM%2C08%2FJan%2F24%205%3A00%20PM%2C3%2CSprint%201&report=summary&format=text&delimiter=auto&columns=status%3DState%2C%20resolved%3DDone%20At%2C%20points%3DEstimate&done_statuses=done%2Cclosed%2Cresolved%2Ccompleted%2Cshipped%2Creleased%2Cmerged&cancelled_statuses=cancelled%2Ccanceled%2Cwon%27t%20do%2Cduplicate%2Crejected%2Cinvalid&group_by=none&period=auto&unit=days&business_days=true&percentiles=50%2C85%2C95

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.