
Streamline report generation by learning to use JQL to conduct advanced searches within Jira. Then, boost productivity by saving and reusing queries.

JQL (Jira Query Language) is Atlassian's native query syntax for finding issues in Jira by combining fields, operators, and values into precise search strings. Instead of scrolling through a Jira dashboard for hours, you write one query and get exactly the issues you need.
This guide covers how Jira search works, how to build a JQL query, and the syntax you need to save and share filters across your team.
Jira ships with two search modes: basic and advanced. Basic search is the friendlier of the two and lives in the search bar at the top right of the Jira dashboard. Use it to look up:
A specific issue: Locate issues by their key, like JobKey-11.
Text: Find issues based on keywords in the summary, description, and comments.
Smart Query: Type "my open bugs" and Jira returns bugs assigned to you.
The search bar's drop-down menu also lets you filter by:
Issues
Boards
Projects
Filters
Plans
Assignees
That covers Jira's basic search. It works for quick lookups, but the moment you need multiple conditions, you'll want the advanced side.
Advanced search runs on Jira Query Language (JQL). JQL lets you assemble criteria that basic search can't touch: date ranges, custom fields, negations, functions, and combinations of all of them.
To open the advanced search:
1. Open the Jira project related to the search. 1. Select "Issues" from the navigation sidebar. 1. Click "Advanced Issue Search". 1. In the search window, click "JQL" to switch to Jira Query Language mode. 1. Define the search criteria. 1. Click the "Search" button to the right of the search window.
JQL queries can be saved as filters and shared with the rest of the team, so nobody has to rebuild the same query twice.
Once you've run a JQL query:
1. Click the "Save as" filter to open the Save Filter window. 1. Name the filter. 1. Enable the "Sync Filter" toggle so it appears on the dashboard and on Jira Software boards. 1. Define who can access the filter. 1. Click "Save".
A JQL query is a string of components that describe the issues you want. Every query has at least three parts — a field, an operator, and one or more values or functions — and can be modified by keywords.
Here's how each piece fits together, with examples.
Fields tell JQL where to look. Common ones include:
Priority: Finds issues at a given priority level.
priority = High
priority = 10000
Description: Finds issues whose description contains a specific word or phrase.
description ~ "Please see screenshot"
IssueType: Returns issues of a specific type.
issueType = Bug
issueType = Improvement
Labels: A custom field for tagging issues into your own categories.
labels = "labelName"
DueDate: Finds issues by their due date.
due = "2011/01/15"
FixVersion: Finds issues assigned to a fix version by name or ID.
fixVersion in ("3.14", "4.2")
Operators define how a field relates to a value. The common ones:
Equals (=): Returns results that match the value.
assignee = "Nancy Lewis"
Not equals (!=): Returns issues where the field does not match. Note: != skips issues where the field has no value at all.
assignee != "Nancy Lewis"
Greater than (>) or less than (<): Finds issues where the value is above or below the one you specify.
votes > 10
priority < High
Greater than or equals (>=) and less than or equals (<=): Include matches on the value itself.
votes >= 10
priority <= Normal
Contains (~): Matches text within a field. Works only on text fields like Summary or Description.
summary ~ "word string"
description ~ "specific phrase"
Values follow the operator and define the data you want. For high-priority issues:
priority = High
"High" is the value being retrieved.
Keywords change the logic of a query so you can combine or negate clauses:
AND: Returns issues that match both clauses.
project = LearnJQL AND status = "In Progress"
OR: Returns issues that match either clause.
project = LearnJQL OR status = "In Progress"
NOT: Negates a clause or a full query, returning issues that don't match.
not assignee = jsmith
not (reporter = jsmith or reporter = lewis)
JQL functions are words followed by parentheses that may contain values or fields. They perform a calculation on Jira data or on what's inside the parentheses.
To find issues assigned to you and due before the end of today:
assignee = currentUser() AND due < endOfDay()
To push that out to end of tomorrow, pass an offset:
assignee = currentUser() AND due < endOfDay("+1")
A few queries showing how the components come together:
To pull bugs reported by a specific team member on a specific project:
reporter = nlewis AND project = LearnJQL
AND ensures both conditions are met — issues Nancy Lewis reported inside the LearnJQL project.
To find issues in several projects marked with one of several priorities:
priority in (Blocker, Critical) AND project in (LearnJQL, JQLlessons, StudyJQL)
The "in" operator matches any of the values inside the parentheses — issues with Critical or Blocker priority across any of the three listed projects.
To identify unassigned issues created in the last 24 hours:
assignee is empty AND created >= "-1d"
"Is empty" returns issues with a blank assignee field. Relative dates like "-1d" evaluate one day before the query runs.
Tempo's tools plug into Jira and widen the data JQL can reach, so your advanced queries pull in more than what native Jira exposes.
Tempo Timesheets, for example, layers custom dashboards and automated reports on top of your Jira search results, adding time and resource-tracking data to the pool your queries can filter on.

Timesheets
The #1 time-tracking app for Jira. Timesheets seamlessly integrates with Jira and your existing workflows to help you track time for accounting, CapEx tracking, client billing, compliance, and more.
Start a Free TrialCouldn't find what you need?Go to our documentation
JQL syntax is similar to SQL, but the resemblance ends there. Developers use SQL, which stands for Structured Query Language, to store and process information within a relational database.
JQL was created by Atlassian for technical and nontechnical users to find, analyze, and report on data within the Jira project management application.
Several third-party plugins and boosters in the Atlassian Marketplace can expand JQL’s search capabilities.

Streamline report generation by learning to use JQL to conduct advanced searches within Jira. Then, boost productivity by saving and reusing queries.

Learn to create, share, and manage Jira filters to improve workflow, generate insights, and provide transparency to project teams and stakeholders.

Search and filter Jira data without JQL. The Custom Charts simple search gadget lets any team member self-serve reports from a dashboard.

How to easily tailor your Custom Charts for Jira & Confluence to different audiences using the accompanying gadget/macro, Simple Search.

Jira swimlanes are a great way of dividing up and categorizing the issues on your Jira agile board. Find out how to use them and quick filters.

Build a customizable interactive Jira Dashboard with Simple Search, directly in your Jira Dashboards.

Projectrak Jira Project Tracking stores crucial data, which presented visually allows better insights for the whole team.

Build a workload management dashboard in Jira with Custom Charts. See assignee load, WIP, and time in status on one screen to rebalance work fast.
