
You’ve opened the Jira issue. The ticket has been sitting in “In Review” for six days. No one flagged it. No alert fired. Sprint velocity looks fine.
This is the gap that Time in Status reporting is designed to close and it’s also where most Jira users hit a wall with JQL.
Jira Query Language (JQL) is powerful. But it has a hard limitation: it cannot directly calculate the total time an issue has spent in a specific status. You can filter by status. You can query the transition history. But summing up cumulative dwell time across multiple status entries? That’s outside what native JQL can do.
This article covers both sides of that equation: what JQL genuinely does well for Time in Status analysis, and where you need a purpose-built plugin to get the numbers that actually matter.
Time in Status for Jira is simple in concept: it is the precise duration an issue spends in a single step of your workflow, whether that step is In Progress, Waiting for Review, or Blocked.
It’s the foundational metric behind three of the most important flow measurements in Jira:
Want to understand the difference between Cycle Time and Lead Time in Jira and how they impact your workflow? Read our full guide on Cycle Time vs Lead Time to get actionable insights.
While JQL can’t directly calculate Time in Status metrics, it can help filter and organize issues to support analysis. For more detailed reporting, many teams use Jira add-ons that provide calculated fields and enhanced visualization options.
Such as Jira Time in Status Reports by RVS Softek, are often used to supplement JQL for detailed reports, providing the necessary calculated fields and advanced reporting capabilities that native JQL lacks.
Before talking about limitations, it’s worth being precise about what JQL handles well. Several query patterns are genuinely useful for Time in Status analysis, but they just don’t give you calculated durations.
The most direct use case: find everything currently sitting in a specific stage.
status = "In Progress"
Simple, but important. If you’re trying to spot what’s sitting in a stage right now, this is your starting point.
JQL’s “status changed” operator lets you query historical transitions, not just the current state.
status changed FROM "To Do" TO "In Progress" DURING ("2024-01-01", "2024-12-31")
This is useful for understanding when work entered a stage, not how long it stayed there. The distinction matters.
Jira’s built-in date functions (‘startOfMonth()’, ‘startOfWeek()’) let you scope queries to time ranges without hardcoding dates.
status = "Done" AND resolved >= startOfMonth()
status CHANGED DURING (startOfMonth(), endOfMonth())
Useful for regular reporting cadences, monthly, weekly, and sprint-scoped.
assignee = "john.doe" AND status = "In Progress"
Combined with transition history, this lets you narrow down which team member’s issues are sitting in which stage. It’s a starting point for workload analysis, not a complete picture.
status CHANGED DURING (startOfMonth(), endOfMonth())
Useful for identifying which issues had any movement, and by elimination, which ones were completely stalled.
project = "MyProject" AND status WAS "Code Review" BEFORE "2024-12-01" AND assignee IN ("johndoe", "janedoe")
Multi-clause JQL lets you cross-reference project, status history, assignee, and time range. This is where JQL gets genuinely powerful for pre-filtering analysis work.

While Jira Query Language (JQL) is a powerful tool for querying data within Jira, it comes with certain limitations, especially when it comes to tracking time spent in different statuses:
To tackle these challenges, many Jira users turn to third-party plugins or integrations that can automatically track time in statuses and offer ready-to-use reports, saving time and effort in the process.
To overcome the limitations of native JQL and effectively track time spent in different statuses, several powerful solutions are available to generate detailed Time in Status Jira reports.
Here are the most efficient options to generate comprehensive time-tracking reports in Jira:
The Time in Status Reports plugin for Jira provides a comprehensive way to track how long issues spend in different statuses throughout their lifecycle. With detailed reports and visualizations, teams can easily identify bottlenecks, optimize workflows, and assess individual performance.
In addition to the Time in Status Report tool by RVS Softek, there are several other Jira planning add-ons available that help further streamline project management. These plugins offer various ways to analyze and manage your Jira data, including:
The images below show that the app is extremely feature-rich to meet a variety of use cases. Also, the app supports a dark theme too.

Jira’s automation rules can help track time in status Jira:
Create custom fields like “Time in Progress” to store time spent in a status.
Use triggers and actions to calculate and update time spent in a status.
Example Rule:
Another option could be to write your own custom solution using Jira Rest API's. However, this could be a lengthy and time taking project.

RVS Time in Status Report is the dedicated time tracking add-on for Jira Query Language (JQL) that teams need for deep workflow analysis. While native JQL excels at filtering issues, it lacks the capability to directly calculate and filter issues based on the total time spent in a specific status over its lifespan.
This tool seamlessly integrates with Jira, transforming basic historical data into JQL-queryable time metrics in real-time. By supplying the necessary calculated fields (like total time in In Progress or Waiting for Review), RVS Time in Status Report unlocks powerful new filtering and reporting capabilities.
Here are steps and examples to create effective JQL queries for Time in Status Jira analysis:
You can filter issues currently in a specific status to analyze trends or identify stuck items:
status = "In Progress"
This query returns all issues currently in the "In Progress" status.
JQL allows you to query issues that have been in or transitioned through certain statuses:
Status changed FROM "To Do" TO "In Progress" DURING ("2023-01-01", "2023-12-31")
This query finds issues that transitioned from "To Do" to "In Progress" during the specified time period.
Combine status filters with date functions to focus on recent activities:
status = "Done" AND resolved >= startOfMonth()
This query finds issues resolved in the current month.
Narrow down results to a specific individual for accountability or workload analysis:
assignee = john.doe AND status = "In Progress"
This query identifies issues assigned to John Doe in the "In Progress" status.
status CHANGED DURING (startOfMonth(), endOfMonth())
This identifies all issues that transitioned through any status in the current month.
Combine custom date fields for granular control:
"In Progress Start Time" >= startOfWeek(-1) AND "In Progress Start Time" <= endOfWeek(-1)
This query identifies issues that were entered "In Progress" last week.
Combine multiple JQL clauses to refine your queries further:
project = "MyProject" AND status WAS "Code Review" BEFORE "2023-12-01" AND assignee IN ("johndoe", "janedoe")
This query retrieves issues from "MyProject" that were in "Code Review" before December 2023 and assigned to specific users.
While native JQL has limitations, various solutions, including plugins, automation, and external analysis, enable detailed and actionable reporting. And by leveraging Jira time in the status report by RVSSoftek, teams can gain deeper insights into their processes and drive continuous improvement.
Whether you’re a project manager aiming to optimize workflows or a team lead monitoring performance, mastering time-in-status reporting with JQL and its enhancements is a valuable skill. Start with basic queries, explore advanced plugins like Time in status report, and integrate automation to unlock the full potential of Jira for your team.
Ready to improve your workflow? Book your RVS demo today.