Jira Query Language (JQL): Complete Guide to Syntax, Operators, Functions, and Examples

Finding the right issues in Jira can become challenging as projects grow, teams expand, and workflows become more complex. While Jira’s basic search capabilities work well for simple searches, advanced issue tracking often requires more precise filtering and reporting.

This is where Jira Query Language (JQL) becomes invaluable.

JQL is Jira’s advanced search language that enables users to search, filter, and organize issues based on specific criteria such as project, status, assignee, priority, issue type, dates, labels, and more. Whether you’re a project manager monitoring sprint progress, a scrum master tracking blockers, a developer managing assigned tasks, or a Jira administrator building reports, JQL helps you find exactly what you need.

In this guide, you’ll learn the fundamentals of JQL, understand its syntax, explore common operators and functions, and discover practical examples that can improve your Jira reporting, dashboards, and day-to-day issue management.

1 . What Is Jira Query Language (JQL)?

Jira Query Language (JQL) is Jira’s powerful search language designed to help users locate and filter issues using customized search criteria.

Instead of manually browsing through projects or applying multiple filters, JQL allows you to create precise queries that return exactly the issues you’re looking for.

For example, you can quickly find:

  • Open issues assigned to you

  • High-priority bugs

  • Tickets created during the current sprint

  • Unresolved incidents

  • Issues updated within the last week

  • Advanced Search

  • Saved Filters

  • Dashboards

  • Agile Boards

  • Automation Rules

  • Reporting and Analytics

JQL is widely used across Jira for:

  • Advanced Search
  • Saved Filters
  • Dashboards
  • Agile Boards
  • Automation Rules
  • Reporting and Analytics

By mastering JQL, teams can improve visibility, streamline workflows, and make more informed project decisions.

2 . Understanding the Building Blocks of JQL

Every JQL query consists of several key components. Understanding these building blocks makes it easier to create effective searches.

Fields

Fields are the foundation of every JQL query because they represent the data stored within Jira issues. Each field contains specific information that can be searched, filtered, or reported on. Knowing which fields are available helps you build more accurate and targeted queries.

Fields represent the information stored within Jira issues.

Common fields include:

  • project

  • status

  • assignee

  • priority

  • issuetype

  • reporter

  • created

  • updated

  • resolution

Example:

project = EMP

In this query, “project” is the field being searched.

Operators

Operators determine how Jira compares a field against a value when executing a search. They allow you to define conditions such as equality, exclusion, ranges, or text matching. Choosing the correct operator is essential for returning the desired results.

Operators define how Jira should compare a field with a value.

Common operators include:

  • =

  • !=

  • >

  • <

  • >=

  • <=

  • IN

  • NOT IN

  • IS

  • IS NOT

  • ~

Example:

priority = High

The equals operator instructs Jira to return issues where the priority is High.

Values

Values are the specific pieces of information that Jira uses to match against a field. They can represent statuses, priorities, issue types, users, dates, or other field data. Accurate values ensure your query returns the correct set of issues.

Values are the specific data being searched.

Examples:

  • status = Open

  • priority = Highest

  • issuetype = Bug

Here, Open, Highest, and Bug are values.

Keywords

Keywords help combine multiple conditions into a single query and control how Jira evaluates those conditions. They make it possible to create more complex searches that include multiple criteria. Understanding keywords is important for building advanced and flexible JQL filters.

Keywords connect multiple search conditions.

The most commonly used keywords are:

  • AND

  • OR

  • NOT

Example:

project = EMP
AND status = Open

This query returns only issues that satisfy both conditions.

Functions

Functions provide dynamic values that automatically adjust based on the current user, date, or time. They eliminate the need to manually update queries and make saved filters more useful over the long term. Functions are especially valuable for dashboards, reports, and recurring searches.

Functions generate dynamic values and eliminate the need to manually update queries.

Examples:

  • currentUser()

  • startOfWeek()
  • startOfMonth()
  • endOfWeek()
  • now()

Example:

assignee = currentUser()

This automatically displays issues assigned to the currently logged-in user.

 3 . JQL Syntax Structure Explained

Understanding the basic syntax of JQL is essential for creating accurate and efficient searches. Every query follows a structured format that Jira uses to interpret your search criteria. Once you understand how fields, operators, and values work together, building both simple and advanced queries becomes much easier. Learning the syntax also helps reduce errors and improve search accuracy.

At its core, every JQL query follows a simple structure:

Field Operator Value

Example:

Status = Open

Let’s break it down:

 Component   Example 

 Field 

 Status 

 Operator 

 = 

 Value 

 Open 

As queries become more advanced, additional clauses and functions can be combined to create powerful searches.

Example:

Project = EMP
AND priority = High

This query contains two clauses connected using the AND keyword.

4 . Writing Your First JQL Query 

Getting started with JQL is easier than many users expect. By learning a few basic queries, you can quickly search for issues based on projects, statuses, priorities, and issue types. These beginner-friendly examples demonstrate the core concepts of JQL and provide a foundation for more advanced searches. Practice using them in Jira’s Advanced Search to become comfortable with the syntax.

Find All Issues in a Project

This query is useful when you want to view every issue associated with a specific Jira project. It provides a broad overview of project activity and can serve as a starting point for adding additional filters. Project-based searches are among the most commonly used JQL queries.

project = EMP

Returns all issues from the EMP project.

Find Open Issues

Tracking open issues helps teams monitor ongoing work and identify tasks that still require attention. This query excludes completed items and focuses only on active issues. It is commonly used in dashboards and daily stand-up meetings.

status != Done

Returns all issues that are not completed.

Find High-Priority Issues

High-priority issues often require immediate action and closer monitoring. This query helps teams quickly identify important tasks that could impact project timelines or customer satisfaction. It is especially useful for managers and support teams.

priority = High

Returns all issues marked as High priority.

Find Bugs

Bug tracking is a critical part of software development and quality assurance. This query filters issues to display only those categorized as bugs. Teams can use it to monitor defects, prioritize fixes, and improve product quality.

issuetype = Bug

Returns all issues classified as bugs. 

 5 . Using Multiple Conditions In JQL

In real-world Jira environments, a single condition is often not enough to find the exact issues you need. JQL allows you to combine multiple conditions using logical keywords such as AND, OR, and NOT. These operators help refine search results and create more targeted filters. Understanding how they work is essential for building effective queries.

Using AND

The AND keyword is used when all specified conditions must be true for an issue to appear in the results. It helps narrow down searches and improve precision. This is one of the most frequently used logical operators in JQL.

Example:

project = EMP
AND status = Open

This returns open issues within the EMP project.

Using OR

The OR keyword allows issues to match any one of the specified conditions. It is useful when searching across multiple projects, statuses, or priorities. OR broadens the search results compared to AND.

Example:

project = EMP
OR project = DEV

This returns issues from either project.

Using NOT

The NOT keyword excludes issues that match a particular condition. It is commonly used to remove completed, closed, or irrelevant issues from search results. This helps keep reports and dashboards focused on active work.

Example:

NOT status = Done

This excludes completed issues. 

6 . How to Create Advanced JQL Queries

Advanced JQL queries allow users to combine multiple fields, operators, and functions to create highly specific searches. These queries are particularly useful for reporting, sprint planning, workload management, and issue tracking. By leveraging advanced filters, teams can gain deeper insights into project performance and operational efficiency. The following examples demonstrate some practical use cases.

Example 1: Show Bugs Assigned to You

This query helps developers focus on defects that require their attention. By combining issue type and assignee filters, it creates a personalized bug list. It is especially useful for daily task management.

issuetype = Bug
AND assignee = currentUser()

Useful for developers reviewing their active bug workload.

Example 2: Show Unresolved High-Priority Issues

Critical issues often need immediate attention from project teams. This query identifies high-priority tickets that remain unresolved. It can be used in dashboards to highlight urgent work.

priority IN (High, Highest)
AND resolution IS EMPTY

Useful for identifying critical issues requiring attention.

Example 3: Show Recently Created Issues

Monitoring newly created issues helps teams stay informed about incoming work. This query dynamically retrieves issues created within the last seven days. It is useful for workload analysis and trend monitoring.

created >= -7d

Returns issues created within the last seven days.

Example 4: Show Overdue Issues

Overdue tasks can indicate project risks or resource constraints. This query identifies issues that have passed their due date but remain unresolved. Teams can use it to improve accountability and deadline management.

duedate < now()
AND resolution IS EMPTY

Helps teams identify tasks that have missed their deadlines.

Example 5: Show Issues Updated This Month

Tracking recently updated issues provides visibility into ongoing project activity. This query retrieves all issues modified since the beginning of the current month. It is commonly used for monthly reporting and performance reviews.

updated >= startOfMonth()

Useful for monthly reporting and activity tracking.

7 . Most Common JQL Operators

Operators define how Jira evaluates relationships between fields and values within a query. They are essential for creating accurate searches and filtering issue data effectively. Different operators support equality checks, exclusions, comparisons, and text searches. Understanding these operators will significantly improve your JQL skills.

 Operator   Purpose   Example 

 = 

 Equal To 

 status = Open 

 != 

 Not Equal To 

 status != Done 

 > 

 Greater Than 

 created > -30d 

 < 

 Less Than 

 duedate < now() 

 >= 

 Greater Than or Equal To 

 updated >= startOfMonth() 

 <= 

 Less Than or Equal To 

 created <= endOfWeek() 

 IN 

 Match Multiple Values 

 project IN (EMP, DEV) 

 NOT IN 

 Exclude Values 

 Status NOT IN (Done, Closed) 

 IS 

 Check Empty Values 

 assignee IS EMPTY 

 IS NOT 

 Check Non-Empty Values 

 assignee IS NOT EMPTY 

 ~ 

 Contains Text 

 summary ~ “login” 

 

8 . Most Useful JQL Functions

Functions make JQL more dynamic by automatically generating values based on users, dates, and time periods. They reduce manual maintenance and ensure queries remain relevant over time. Functions are widely used in dashboards, reports, and saved filters. Learning the most common functions can greatly improve your Jira search capabilities.

currentUser()

This function automatically references the currently logged-in user. It is commonly used to create personalized filters and dashboards. Because it updates dynamically, no manual changes are required when different users run the query.

Returns the currently logged-in user.

assignee = currentUser()

startOfWeek()

This function returns the beginning of the current week based on Jira’s configured settings. It is useful for tracking weekly activity and monitoring sprint progress. Teams often use it in reports and dashboards.

Returns the beginning of the current week.

created >= startOfWeek()

startOfMonth()

This function identifies the first day of the current month. It is commonly used for monthly reporting and performance tracking. Dynamic date functions like this help keep filters current without manual updates.

Returns the first day of the current month.

updated >= startOfMonth()

endOfWeek()

This function returns the final day of the current week. It is useful for identifying upcoming deadlines and planning sprint activities. Teams often combine it with due date fields.

Returns the end of the current week.

duedate <= endOfWeek()

now()

The now() function returns the current date and time. It is frequently used to identify overdue issues or compare deadlines against the present moment. This function is especially valuable for real-time monitoring.

Returns the current date and time.

duedate < now()

9 . 10 Practical JQL Examples Every Jira User Should Know

Practical JQL queries can save time and improve productivity across teams. These examples address common use cases such as workload management, issue tracking, reporting, and project monitoring. By incorporating these queries into your daily workflow, you can quickly access the information you need. They also serve as a foundation for creating more advanced filters.

My Open Tasks

This query displays all active issues assigned to the current user. It helps individuals manage their workload and prioritize tasks effectively.

assignee = currentUser()
AND status != Done

Unassigned Issues

This query identifies issues that have not yet been assigned to a team member. It is useful for workload balancing and task allocation.

assignee IS EMPTY

High-Priority Bugs

This query focuses on critical defects that require immediate attention. It helps teams prioritize bug fixes and reduce project risks.

issuetype = Bug
AND priority = Highest

Issues Created This Week

This query retrieves issues created since the beginning of the current week. It is useful for monitoring incoming work and team activity.

created >= startOfWeek()

Issues Updated Today

This query shows issues that have been modified during the current day. It helps teams track recent activity and progress.

updated >= startOfDay()

Overdue Issues

This query identifies unresolved issues that have passed their due date. It is commonly used to monitor deadlines and project risks.

duedate < now()
AND resolution IS EMPTY

Issues Reported By Me

This query displays issues created by the currently logged-in user. It helps users track the status of their submitted requests.

reporter = currentUser()

Resolved Issues

This query returns issues that have been completed and assigned a resolution. It is useful for reporting and historical analysis.

resolution IS NOT EMPTY

Issues In Multiple Projects

This query retrieves issues from several projects simultaneously. It is useful for cross-project reporting and portfolio management.

project IN (EMP, DEV, IT)

Recently Updated High-Priority Issues

This query combines priority and update date filters to highlight important issues with recent activity. It is valuable for managers and stakeholders monitoring critical work.

priority IN (High, Highest)
AND updated >= -7d

10 . Why Choose Empyra for JQL and Jira Consulting?

When it comes to maximizing the value of Jira Query Language (JQL), having the right expertise can make a significant difference. Empyra helps organizations optimize Jira environments, improve reporting capabilities, streamline workflows, and implement best practices for Jira administration and governance.

As an Atlassian Platinum Solution Partner, Empyra provides specialized consulting services designed to help teams get more from Jira, Confluence, Jira Service Management, and the broader Atlassian ecosystem. Whether you're struggling with complex JQL queries, dashboard creation, automation rules, custom reporting, or enterprise-scale Jira implementations, Empyra's certified experts can help.

Benefits of Working with Empyra

  • Atlassian Solution Partner expertise
  • Certified Jira consultants and administrators
  • Advanced JQL query development and optimization
  • Custom dashboards and reporting solutions
  • Jira workflow and automation consulting
  • Jira migration, implementation, and administration services
  • Agile and DevOps process optimization
  • Ongoing Atlassian support and managed services

Get Expert Help with JQL

If your team wants to build advanced Jira searches, create powerful dashboards, improve reporting accuracy, or solve complex JQL challenges, Empyra can help you achieve faster results.

Book a Free Consultation for JQL and speak with an Atlassian expert about your Jira requirements, reporting goals, and workflow optimization opportunities.

Conclusion

Jira Query Language (JQL) is one of the most powerful features available in Jira for searching, filtering, and managing issues. By understanding its syntax, operators, functions, and logical conditions, users can create highly targeted searches that improve visibility and productivity. Whether you’re tracking bugs, managing sprints, generating reports, or monitoring team performance, JQL provides the flexibility needed to find exactly the information you need. Start with simple queries, practice regularly, and gradually build more advanced filters to unlock the full potential of Jira.

 

 

Frequently Asked Questions

What is JQL in Jira?

Jira Query Language (JQL) is Jira's advanced search language that enables users to find, filter, and organize issues based on specific criteria. Using JQL, you can search issues by project, status, assignee, priority, issue type, dates, labels, and other fields. It helps teams quickly locate relevant information and create more accurate reports, dashboards, and saved filters.

Where can I use JQL?

JQL can be used throughout Jira wherever advanced issue filtering is supported. Common use cases include Advanced Search, saved filters, dashboards, agile boards, queue management, reports, and automation rules. Many Jira features rely on JQL to display the right set of issues based on user-defined criteria.

What is the syntax of JQL?

The basic syntax of JQL follows a simple structure:Field Operator ValueFor example:status = OpenIn this query, status is the field, = is the operator, and Open is the value. More advanced queries can combine multiple clauses using keywords such as AND, OR, and NOT.

What are JQL functions?

JQL functions are predefined commands that return dynamic values, making queries more flexible and reusable. Functions eliminate the need to manually update filters when dates or users change. Common examples include:currentUser()startOfWeek()startOfMonth()endOfWeek()now()Functions are frequently used in dashboards, reports, and automation rules.

How do I filter issues assigned to me?

To display issues assigned to the currently logged-in user, use the currentUser() function:assignee = currentUser()This dynamic query automatically updates based on the user running it and is commonly used in personal dashboards and task management filters.

Can JQL be used in dashboards?

Yes, JQL is widely used in Jira dashboards. Many dashboard gadgets rely on saved filters created using JQL queries. By using JQL, teams can build dashboards that display issue statistics, filter results, sprint progress, workload distribution, and other project metrics in real time.

What is the difference between Basic Search and Advanced Search?

Basic Search provides a user-friendly interface that allows users to create filters using dropdown menus and predefined options. Advanced Search uses JQL and offers greater flexibility for creating complex queries with multiple conditions, operators, and functions. While Basic Search is suitable for simple filtering, Advanced Search is preferred when precise issue tracking and reporting are required.

 

 

Table of Contents

    Post your Comment