Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to calculate Jira cycle time from In Progress to Done without complex JQL?

Mary Doherty
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
February 23, 2026

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?

9 answers

1 vote
Tuncay Senturk _Snapbytes_
Community Champion
February 24, 2026

Hi @Mary Doherty 

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.

1 vote
Rahul_RVS
Atlassian Partner
February 23, 2026

Hi @Mary Doherty 

If you would like to try out a mktplace app for this requirement, pls explore

Time in Status Reports 

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.

More details here.

Disclaimer : I am part of the app team for this add-on 

 

TIS.png

TIS - Cycle Time report.PNG

 

0 votes
Iryna Krutko
February 24, 2026

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.

jira cycle time 2 (1).png

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.

jira cycle time 1 (1).png

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!

0 votes
Danut M [StonikByte]
Atlassian Partner
February 24, 2026

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. 

image.png

In addition, on its Data tab it offers  report with all the issues and their cycle time, which you can easily export in CVS.

image.png

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

0 votes
Bartek Szajkowski _ Orbiscend OU
Atlassian Partner
February 24, 2026

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.

ex. finding issues that spent more than 2 weeks in "In Progress"

issue > timeInStatus("project = ABC", "In Progress", "2w")

ex. finding issues that spent at least 2 weeks and 3 days in "Blocked"

issue >= timeInStatus("project = ABC", "Blocked", "2w 3d")

 

24_02 F1.png

 

 

Time in Status Field and timeExpression Function

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.

ex. find issues that spent more than 8 hours in any status:

"Time in All Statuses.time" > timeExpression("8h")

 

 

 

Hope my prompt can give you more option to solve your request.

Greeting
Bartek from Orbiscend OU

 

 

0 votes
Petru Simion _Simitech Ltd__
Atlassian Partner
February 23, 2026

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.


🔹 Define Cycle Time Using Status Groups

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.


📌 Example – How the Lead Time Group Is Configured

Screenshot from 2026-02-19 23-32-20.png

🔎 Why Per-Issue-Type Configuration Matters

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.


🌍 Global and User-Level Groups

Status Groups can be created in two scopes:

🌍 Global Groups

  • Created by Jira admins

  • Available company-wide

  • Ideal for standardized KPIs like official Cycle Time or Lead Time

👤 User Groups

  • Created by individual users

  • Private and flexible

  • Useful for experimentation or personal analysis

This gives organizations centralized control while still allowing individual flexibility.


🗓 Accurate Business-Time Calculation with Calendars

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.


📊 How the Result Looks in a Report

Once your group (for example Lead Time) is set up, it appears as a calculated column in the reporting table.


📌 Example – Lead Time Displayed in the Report

Screenshot from 2026-02-19 23-33-03_.png

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

0 votes
Anastasiia Maliei SaaSJet
Atlassian Partner
February 23, 2026

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.

How it works:

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.

Frame 1321314398 (1).png

View and Analyze:

After these simple settings, you will see your metric directly on the Grid-Table:

  1. Sorting: You can sort the column by ascending or descending order to instantly see which tasks have the largest or smallest cycle time.

  2. Averages: The average time will be displayed at the top of the column for the entire list.

Frame 1321314397.png

If you have any questions or need help with the setup, feel free to reach out!

0 votes
Birkan Yildiz _OBSS_
Atlassian Partner
February 23, 2026

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.

image-20260223-160309.png
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.

image-20260223-160343.png
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

0 votes
Iryna Komarnitska_SaaSJet_
Atlassian Partner
February 23, 2026

Hi @Mary Doherty ,

Jira can show cycle time without any JQL, but there’s an important limitation:

  1. Built-in Jira reports can visualize cycle time and let you drill into issues

  2. 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.

Control Chart (best native choice)

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 → ReportsControl 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.Знімок екрана 2026-02-23 о 18.02.29.png

Time in Status App by SaaSJet Team

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.

Знімок екрана 2026-02-23 о 14.05.35.png

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!

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
PREMIUM
PERMISSIONS LEVEL
Product Admin Site Admin
TAGS
AUG Leaders

Atlassian Community Events