Jira Query Language: A Practical Guide to Smarter Searches
Struggling to find the right Jira issues? Learn jira query language to build smarter searches, filters, and dashboards. Read now to work faster!
Finding one issue in a busy Jira project can feel like searching for a needle in a crowded workshop. A simple keyword search often returns too much, while a vague filter hides the work you actually need. That creates delays, missed blockers, and dashboards nobody trusts.
The problem grows when teams manage several projects, custom fields, sprints, priorities, and changing ownership. You may know exactly what you need, yet struggle to express it clearly in Jira.
Jira Query Language gives you a practical way to build precise searches. With a few fields, operators, functions, and logical rules, you can create filters for daily work, reporting, triage, and planning.
What Is Jira Query Language?
Jira Query Language, or JQL, is Jira’s search syntax for finding issues that match specific conditions. It lets you combine fields such as project, status, assignee, priority, labels, and dates into targeted queries.
A basic JQL query looks like this:
project = PAYMENTS AND status = "In Progress"
This query finds issues in the PAYMENTS project with the status “In Progress.” You can make the search more specific by adding conditions, sorting results, or using functions.

How JQL Works
JQL follows a field-and-condition pattern. You identify what to inspect, define how it should match, and provide a value.
- Field: The issue attribute you want to check, such as
project or priority.
- Operator: The comparison rule, such as
=, !=, IN, or ~.
- Value: The project key, status, person, label, or other value you want to match.
- Function: A dynamic rule such as
currentUser(), openSprints(), or startOfDay().
For example:
assignee = currentUser() AND priority IN (High, Highest)
This finds high-priority issues assigned to the person running the search. The function keeps the query useful for every team member.
Common JQL Fields
| Field |
Typical purpose |
project |
Find issues inside one or more projects. |
status |
Filter work by its current workflow stage. |
assignee |
Find work assigned to a person or group. |
reporter |
Find issues created by a particular person. |
priority |
Separate urgent work from routine work. |
issuetype |
Filter bugs, stories, tasks, epics, or other issue types. |
labels |
Find issues tagged with a specific label. |
created |
Search for issues created during a time period. |
updated |
Find issues changed recently or left untouched. |
sprint |
Search for work connected with a sprint. |
Why Precise Queries Matter
A well-written query turns a large issue list into a useful work view. For example, a support lead can find urgent unresolved customer problems without opening every project.
JQL also helps you reuse the same logic. A saved filter can power a board gadget, a dashboard chart, a sprint report, or a recurring review.
Here’s why: a clear query creates a shared definition of work. When everyone uses the same conditions, planning discussions rely on the same results.
JQL Syntax: Fields, Operators, and Values
Before building complex searches, learn the basic grammar. JQL becomes easier when you treat each condition as a small sentence.
Equality and Inequality Operators
Use = when a field must match a value exactly. Use != when you want to exclude a value.
project = MARKETING
status = Done
priority != Low
Text values containing spaces usually need quotation marks:
status = "In Progress"
Project keys often work without quotation marks. Status names, labels, and custom values may need them when they contain spaces or special characters.
Membership Operators
Use IN when a field can match several values. Use NOT IN when you want to exclude several values.
priority IN (Highest, High)
status NOT IN (Done, Closed)
This is cleaner than writing several conditions with repeated operators. For example, three priority conditions can become one readable list.
Text Search Operators
Use ~ for text-style matching. It can help you search words in fields such as summaries, descriptions, or comments, depending on your Jira configuration.
summary ~ "payment error"
Use !~ to exclude matching text:
summary !~ "internal test"
Text searches can return broader results than exact equality. Check a few results before saving the query for team-wide use.
Logical Operators
AND requires every condition to match. OR allows either condition to match.
project = MOBILE AND status = "In Progress"
priority = Highest OR labels = escalation
Use parentheses when mixing AND and OR:
project = MOBILE AND (priority = Highest OR labels = escalation)
Without parentheses, a query may produce a wider result than you intended. The safest habit is to group related alternatives visibly.
Ordering Results
Add ORDER BY when result order matters:
project = MOBILE ORDER BY priority DESC
You can sort by several fields:
project = MOBILE ORDER BY priority DESC, created ASC
This places urgent issues first, then shows older issues before newer ones at the same priority.
Practical JQL Examples for Everyday Work
The fastest way to learn JQL is to connect each pattern with a real task. Start with a simple query, check the results, and add one condition at a time.
Find Your Open Work
To find unresolved issues assigned to you, use:
assignee = currentUser() AND resolution = Unresolved
This works well for a personal work queue. The currentUser() function avoids hard-coding a person’s name.
Find High-Priority Unresolved Issues
For a daily risk review, try:
priority IN (Highest, High) AND resolution = Unresolved ORDER BY updated DESC
This brings urgent unfinished work into view and places recently changed issues first.
Find Recently Created Issues
Use date functions to find new work:
created >= -7d ORDER BY created DESC
This returns issues created during the last seven days. For a daily review, replace -7d with -1d.
Find Stale Issues
Stale work often signals unclear ownership or a blocked decision:
resolution = Unresolved AND updated <= -14d
You can narrow it further:
project = PLATFORM AND resolution = Unresolved AND updated <= -14d
For example, a delivery manager might review these issues every Friday and assign a clear next action.
Find Work in the Current Sprint
To view issues in active sprints, use:
sprint IN openSprints()
Combine this with a project or assignee:
project = CHECKOUT AND sprint IN openSprints() AND assignee = currentUser()
This creates a focused personal view of current sprint work.
Find Unassigned Issues
Unassigned work can disappear during planning. Search for it directly:
assignee IS EMPTY AND resolution = Unresolved
For a particular project:
project = SUPPORT AND assignee IS EMPTY AND status != Done
Someone can then decide whether to assign, prioritize, defer, or close each issue.
Find Bugs Created Recently
A quality team might use:
issuetype = Bug AND created >= -30d ORDER BY priority DESC
Add a component, project, or label when the result set is too broad.
Using Dates, Functions, and Sprint Filters
Date filtering makes JQL useful for planning and operational reviews. Jira supports relative dates, fixed dates, and functions.
Relative Date Searches
Relative dates adjust automatically as time passes. Common examples include:
-1d for the previous day.
-7d for the previous seven days.
-30d for the previous thirty days.
startOfWeek() for the beginning of the current week.
startOfMonth() for the beginning of the current month.
For example:
updated >= startOfWeek()
This keeps a weekly activity view current without manual date changes.
Due-Date Queries
To find overdue work, use:
duedate < now() AND resolution = Unresolved
To find work due soon:
duedate <= 7d AND duedate >= now() AND resolution = Unresolved
Check your Jira date syntax if a query behaves differently in your environment. Date handling can vary by field configuration.
Assignee and Reporter Functions
Functions reduce maintenance when people change roles or teams. The most common example is:
assignee = currentUser()
You can also combine identity conditions:
reporter = currentUser() OR assignee = currentUser()
This helps a team member monitor issues they created and issues they need to complete.
Sprint Functions
Sprint functions are helpful when sprint names change regularly. For example:
sprint IN openSprints()
For a review of unfinished work from completed sprints, Jira may support functions such as closedSprints(), depending on your edition and configuration.
Test sprint queries in your own project before adding them to a shared dashboard. Sprint history and permissions can affect the results.
Building Better Filters and Reports
A query becomes more valuable when you turn it into a repeatable view. The key is to design for a specific decision.
Start With a Question
Write the question before writing the JQL. Examples include:
- Which urgent issues still need owners?
- What changed during the last seven days?
- Which sprint items have missed their due dates?
- Which bugs are waiting for verification?
Each question points toward different fields. “Which urgent issues need owners?” requires priority, assignment, and resolution conditions.
Keep Queries Narrow Enough to Act On
A dashboard showing 800 issues usually creates noise. A review showing 12 overdue, high-priority issues gives a team something concrete to discuss.
Suppose a support manager starts with:
project = SUPPORT
That may show every issue. A more useful review could be:
project = SUPPORT AND priority IN (Highest, High) AND resolution = Unresolved AND assignee IS EMPTY
The second query connects directly to an action: assign urgent unresolved work.
Use Clear Names and Descriptions
A saved filter should explain its purpose. “Unresolved high-priority support issues without owners” is clearer than “Support Filter 2.”
Add a short description that explains the intended review frequency and owner. This prevents a useful query from becoming mysterious after its creator changes teams.
Validate Results Before Sharing
Review several returned issues manually. Check whether each result belongs there and whether an expected issue is missing.
Change one condition at a time when debugging. If you add five conditions together, finding the problem becomes much harder.
Control Permissions Carefully
A saved filter may be private, shared with a project, or shared with selected people. Choose the narrowest permission that supports the workflow.
Check visibility before adding a filter to a dashboard. A chart can appear empty when viewers lack permission to see the matching issues.
Common JQL Mistakes and How to Fix Them
Most JQL problems come from field names, value spelling, logical grouping, or assumptions about Jira configuration.
Using a Status Name That Does Not Exist
Status names are configured by each Jira environment. “In Review” may exist in one project and be absent in another.
Open the available field values in the search interface, then copy the exact status name. Quotation marks help when the name contains spaces.
Forgetting Empty Values
An empty field requires special syntax. Use:
assignee IS EMPTY
Use IS NOT EMPTY when you need issues with a value:
duedate IS NOT EMPTY
Writing assignee = EMPTY can produce an error or unexpected results.
Mixing AND and OR Without Parentheses
Consider this query:
project = APP AND priority = High OR labels = escalation
The label condition may match issues outside the APP project. Group the alternatives:
project = APP AND (priority = High OR labels = escalation)
Filtering by a Human Name Instead of a Function
A query such as assignee = Alex may become outdated when responsibilities change. Use currentUser() for personal filters.
For team views, a project role, group, or carefully maintained list may be more suitable than a single name.
Expecting JQL to Change Issues
JQL searches and filters issues. It does not update status, assign work, edit fields, or transition issues by itself.
Use Jira workflow actions, automation, or bulk operations for changes. Treat the query as the selection step.
Jira Query Language Solution: ONES.com

Value Proposition
ONES.com brings project management and knowledge management together through ONES Project and ONES Wiki. If your team needs precise work views beyond Jira, ONES Project offers a Jira alternative with compatible workflows and broad deployment options.
ONES Project and ONES Wiki are sold separately, so you can choose the capability that fits your operating model.
Core Capabilities
- Search feels fragmented across projects: ONES Project provides Jira-compatible workflows, helping teams carry familiar planning and tracking patterns into a unified project environment. The result is less retraining during adoption.
- Teams depend on many plugins for routine reporting: Built-in reporting gives teams native visibility into progress, workload, and delivery trends. This can reduce plugin dependence.
- Standard fields cannot represent the work: Custom workflows and custom fields let teams reflect approval stages, risk categories, service levels, or product areas. Queries become more relevant to actual operations.
- Sprint work needs a consistent structure: Sprint management supports iteration planning and review. Teams can connect selected work with sprint goals and delivery checkpoints.
- Repeated actions consume planning time: Automation can handle defined workflow events and routine updates. This gives people more time for decisions that require judgment.
- Teams want a Jira alternative with familiar habits: Jira-compatible workflows reduce the disruption of moving from established issue-tracking practices. Teams can preserve recognizable patterns while evaluating a different platform.
- Restricted environments limit deployment choices: ONES.com supports Cloud, On-Premise, Private Cloud, and Air-gapped deployments. Teams can select an operating model that matches security and infrastructure requirements.
- Self-hosted teams fear missing features: ONES.com maintains feature parity between cloud and self-hosted versions. This helps avoid choosing between deployment control and core functionality.
- Project knowledge sits separately from delivery work: ONES Wiki provides a knowledge base capability that can complement ONES Project. Teams can connect planning context with team guidance in a more organized workspace.
Application Scenarios
Product delivery team: A product group can use sprint planning, custom fields, workflow stages, and reporting to track work from idea review through release. A saved view can highlight high-priority unfinished issues for the weekly product meeting.
Regulated engineering environment: An engineering organization with strict network controls can evaluate an air-gapped or on-premise deployment. The team retains project tracking features while keeping the platform within its required environment.
Growing service team: A service organization can create custom fields for severity, response target, and customer segment. Automation can route recurring work, while reporting shows aging issues and unresolved urgent requests.
Common Challenges With JQL
Challenge: Results Include Too Many Issues
Solution: Add conditions tied to a decision. Narrow by project, status, priority, date, assignee, or issue type. Then sort results by urgency or age.
Challenge: A Query Works for One Person
Solution: Replace personal names with functions such as currentUser() when the filter should adapt to each viewer. Check permissions before sharing the filter widely.
Challenge: The Query Breaks After Workflow Changes
Solution: Review saved filters after status, field, or project changes. Use clear names and assign an owner for regular maintenance.
Challenge: Team Members Interpret Results Differently
Solution: Add a description explaining what the filter includes and excludes. Use a consistent definition of unresolved, urgent, overdue, or ready for review.
Challenge: Complex Logic Becomes Hard to Debug
Solution: Build the query in stages. Test each condition separately, then combine conditions with parentheses and comments in the filter description.
FAQs
Is JQL difficult to learn?
JQL is approachable when you begin with simple field comparisons. Learn =, IN, AND, OR, and date filters first. Then add functions and grouped logic. A practical route is building one query for personal work, one for overdue issues, and one for sprint review.
What is the difference between JQL and basic Jira search?
Basic search uses forms and menus to select conditions. JQL gives you more control over combinations, functions, sorting, and reusable logic. You can start in basic search, switch to advanced search, and inspect the generated query when your Jira configuration supports that option.
Can JQL search across several projects?
Yes. Use a project list such as project IN (APP, WEB, MOBILE). You can then add shared conditions, such as resolution = Unresolved. Make sure your account has permission to view the selected projects, or the result may appear incomplete.
Why does my JQL query return no results?
Check the project key, field spelling, status value, quotation marks, date range, and permissions. Empty fields require IS EMPTY or IS NOT EMPTY. Remove the newest condition temporarily, then add it again after confirming the earlier conditions return expected issues.
Can JQL update or automate issues?
JQL selects issues; it does not perform changes alone. Jira automation, workflow transitions, and bulk actions can use a query as their selection rule. For example, a scheduled automation could find unresolved issues untouched for fourteen days and notify the responsible team.
How should I organize saved filters?
Give each filter a descriptive name, add a short explanation, and identify an owner. Share filters only with the people who need them. Review important filters after workflow or field changes. This keeps dashboards and recurring reviews dependable.
Conclusion
Jira Query Language helps you turn broad issue lists into focused answers. Start with the question, choose the relevant fields, add clear operators, group mixed logic, and test the results.
When a search feels overwhelming, narrow it around a decision. When a filter becomes unreliable, check field values, permissions, empty conditions, and workflow changes.
The best part? A small set of well-designed queries can support personal planning, sprint reviews, escalation checks, and delivery reporting.
With disciplined query design and a suitable project platform, you can spend less time hunting through issues and more time acting on the work that matters.