Hi everyone,
I’m new to Jira and trying to measure Jira cycle time for our stories - specifically, how long each issue takes from the moment it moves to “In Progress” until it reaches “Done.”
Ideally, I’d like to generate a list of issues showing their individual cycle times, without having to rely on complicated JQL queries or manual calculations.
I’ve been exploring native Jira reports and JQL, but I can’t find a straightforward way to calculate the elapsed time between two specific status transitions.
Is there a built-in method in Jira to compute this kind of time-based metric between statuses? Or do I need a different approach?
For Company-managed projects, Jira has built in solution: Control chart (Board -> Reports -> Control Chart)
It automatically calculates cycle time, showing how long issues stayed between the first "In progress" status and the last "Done" status. It also provides the average cycle time and shows each issue individually. You can configure the statuses, but it's visual and, as far as I know, not exportable to get the exact numbers per issue.
As you see (from the app vendors), there are a bunch of apps on the Marketplace that can provide detailed calculations. I can also recommend SnapMetrics, which our team developed, where you can easily calculate, report and export those calculations. If you need further information, please do not hesitate to ask.
If you would like to try out a mktplace app for this requirement, pls explore
With this app you generate time in each workflow status for multiple issues with multiple filter and grouping options.
With Status grouping feature, can help you define your own cycle time / issue age time and view the averages of the same. Also the app has 20+ reports to meet a variety of use cases.
Disclaimer : I am part of the app team for this add-on
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Mary!
The challenge: You want to measure how long each story takes from the moment it enters "In Progress" until it reaches "Done," and get a list of issues with their individual cycle times - ideally without complex JQL workarounds.
The thing is, native Jira JQL doesn't support time-based calculations between status transitions. There's no built-in formula to compute elapsed time from one status to another.
This is exactly what Agile Cycle Time Charts solves. The app lets you configure a Timer - you define which statuses start the clock (e.g., "In Progress") and which stop it (e.g., "Done"). It then calculates cycle time automatically for every matching issue.
Below the chart, an Issue List displays each work item with its individual cycle time, giving you exactly the story-level breakdown you're after.
Docs: Timer configuration · Issue list
You can also explore an interactive Cycle Time Histogram Chart example - it's a clickable demo where you can adjust settings and see how the chart works in real time.
Let me know if you have any questions about the setup - happy to help!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Mary Doherty,
Welcome to Atlassian Community!
The time between "In Progress" and "Done" is a popular metric known as "Cycle Time." So you need a good method for measuring the cycle time.
This is not available in Jira as a field and you cannot measure it by using JQL.
You could try using the Control Chart report available under your Jira space/project Reports section, but it is not so configurable and does not offer the list of issues along their cycle time.
A better option would be to search on Atlassian Marketplace for an app that can measure cycle time.
In case yo want to try an app, our Great Gadgets allows you to measure cycle time, lead time, or time between statuses in many ways.
In this case I would recommend using the Cycle Time Control Chat gadget. which can display the issues from a filter by their cycle time.
In addition, on its Data tab it offers report with all the issues and their cycle time, which you can easily export in CVS.
Our app also lets you measure cycle time as histogram chart or trend chart. See more details in this community article: https://community.atlassian.com/forums/App-Central-articles/How-to-measure-Cycle-Time-and-Lead-Time-in-Jira-or-Confluence/ba-p/2841286
Hope this helps.
Danut
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello @Mary Doherty
Hope my late answer can give you some another option to consider :)
If you are open for third-party app, I could recommend ARGON ARGON Powerful JQL Search to find a solution with timeInStatus.
The timeInStatus function allows you to find issues that have spent a specific amount of time in a given status. This is useful for tracking how long issues remain in particular workflow states.
issue > timeInStatus("project = ABC", "In Progress", "2w")
issue >= timeInStatus("project = ABC", "Blocked", "2w 3d")
Also you can use timeInStatus Field and timeExpression function.
The Time in Status Field is a custom field that automatically tracks how long issues spend in specific statuses. The timeExpression function converts human-readable time expressions (like "2w 3d 5h") into seconds for use in JQL queries This field will automatically appear on each issue, showing accumulated time — no manual calculation needed.
"Time in All Statuses.time" > timeExpression("8h")
Hope my prompt can give you more option to solve your request.
Greeting
Bartek from Orbiscend OU
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Mary Doherty ,
If you're trying to measure Cycle Time from “In Progress” to “Done” for each Story, you're not missing anything — Jira does not offer a straightforward built-in way to calculate and list that duration per issue.
Jira records status changes in the history, but it doesn’t natively compute the elapsed time between two transitions and display it in a reportable column. The Control Chart only provides averages (and only for Scrum boards), not a detailed issue-by-issue breakdown.
If you want a clean and reliable way to generate a list of issues with their individual cycle times — without complex JQL, automation rules, or manual calculations — you can use Time in Status Reporter for Jira, developed by our team.
The app works by letting you create Status Groups. A group contains the statuses you want to measure, and the system calculates the total time spent in them using the full issue history.
For example, you could create a group called:
Lead Time
And configure it like this:
Story: To Do, Open, In Progress, Backlog
Bug: Open, Backlog, In Progress, Reopen
The app then automatically sums the time each issue spent in those statuses.
In most Jira environments, workflows are not identical across issue types:
Bugs often include a Reopen status
Stories might include To Do
Certain statuses may only exist in one workflow
The app allows you to define different statuses for each issue type within the same group. This is critical because it ensures:
Accurate duration calculations
No missing or double-counted time
No need to standardize workflows artificially
Reliable metrics even as workflows evolve
Without this flexibility, time metrics can easily become misleading.
Status Groups can be created in two scopes:
Created by Jira admins
Available company-wide
Ideal for standardized KPIs like official Cycle Time or Lead Time
Created by individual users
Private and flexible
Useful for experimentation or personal analysis
This gives organizations centralized control while still allowing individual flexibility.
Cycle Time often needs to reflect working hours, not 24/7 elapsed time.
The app includes Calendars, which can also be configured as:
🌍 Global (admin-defined company schedule)
👤 User-level (team or personal schedule)
Calendars allow you to define:
Different working hours for each day of the week
Split shifts (for example 09:00–12:00 and 13:00–17:00)
Weekend exclusions
Public holidays
Why this is important:
If you measure time without a calendar, nights, weekends, and holidays are counted.
With calendars applied, the metric reflects actual business time — which is essential for realistic Cycle Time, SLA tracking, and cross-team comparisons.
Once your group (for example Lead Time) is set up, it appears as a calculated column in the reporting table.
You’ll get a clear list of issues with their calculated duration, which you can filter, export, or aggregate further.
In short, while Jira doesn’t provide a built-in per-issue Cycle Time report between two transitions, this approach lets you define the metric precisely, apply business calendars if needed, and generate accurate, reusable reports — without scripts or complicated queries.
👉 Try Time in Status Reporter for Jira free for 30 days.
Regards,
Petru
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Mary Doherty! Welcome to the Atlassian Community.
It’s a great question, and you’re definitely not alone in this — many teams find that getting a simple, clear list of cycle times can be surprisingly tricky in Jira.
You can try using the Control Chart, but as you’ve noticed, it doesn’t always make it easy to see a simple list of individual cycle times for every issue in a straightforward table format.
If you’re looking for a comprehensive yet simple solution, I can recommend an app Time Metrics Tracker, that my team developed specifically to solve this problem: calculating the exact time between statuses.
You simply create a Time Metric (in your case, "Cycle Time") and configure it in a few clicks:
Set the Start and Stop: Select the From status (In Progress) and To status (Done) to define exactly where the timer starts and stops.
Specific Transitions: You can also add a specific transition if time should count only after a certain action.
Exclude Statuses: Optionally, choose statuses in Exclude statuses — time won’t be counted while issues stay there (perfect for "On Hold" or "Waiting for info").
Work Schedules: You can set up your team's specific working hours so the calculation is accurate and doesn't include weekends or nights.
Visual Alerts: Optionally, you can set up Warning and Critical limits for your metrics to highlight issues that are taking too long.
After these simple settings, you will see your metric directly on the Grid-Table:
Sorting: You can sort the column by ascending or descending order to instantly see which tasks have the largest or smallest cycle time.
Averages: The average time will be displayed at the top of the column for the entire list.
If you have any questions or need help with the setup, feel free to reach out!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hey @Mary Doherty
Native JQL is great for searching, but it cannot calculate the elapsed time between status transitions. Getting a straightforward list of individual issues with their specific cycle times natively usually requires complex automation workarounds or manually exporting data to Excel.
For a simple, out-of-the-box solution, a Marketplace app is your best bet. Full disclosure, I'm on the team that makes Timepiece - Time in Status for Jira, and it does exactly what you are asking for without requiring any complex queries.
You can use its Duration Between Statuses report for this. You simply select "In Progress" as your Start Status and "Done" as your End Status.
The app instantly generates a clean table listing all your issues and showing the exact Cycle Time for each individual ticket. As a bonus, you can apply Custom Calendars so the calculation only counts your actual working hours, completely excluding nights and weekends for a true Cycle Time metric.
One last thing: Timepiece reads your existing Jira history, so it works with all your past and current data right after installation.
You can check it out on the Atlassian Marketplace. Hope this helps!
Best,
Birkan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Mary Doherty ,
Jira can show cycle time without any JQL, but there’s an important limitation:
Built-in Jira reports can visualize cycle time and let you drill into issues
but Jira doesn’t natively give you a simple “table/list of issues + (In Progress → Done) duration” as a first-class report in most setups.
If you’re using Jira Software with a company-managed board, the Control Chart is Jira’s built-in cycle time report.
How it works
It calculates cycle time based on the time issues spend in selected board columns (which map to statuses).
You can set it to count time from your “in progress” column(s) through to done (depending on how your columns are configured).
Where to find it
Your board → Reports → Control Chart
Getting a “list” out of it
The chart plots each issue as a dot (so you do get per-issue cycle time visually).
You can drill into points/time ranges to see the underlying issues, then use the resulting issue view to export / copy into a list.
It’s column-based, not “status transition timestamp A to status transition timestamp B” in a neat table.
If you’re open to using a third-party app, you might want to try Time in Status by SaaSJet (I’m part of the team behind it).
With Time in Status, you can calculate cycle time and other time-based metrics accurately using your work schedules—so you can exclude non-working hours, weekends, and holidays for more realistic results.
You can review the data in tables or charts, and you can also add the reports directly to your Jira Dashboard for ongoing tracking.
Hope you find it useful!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.