JQL Mastery: Writing Powerful Jira Queries Like a Pro

JQL turns Jira into a queryable database of your team’s work

Jira Query Language (JQL) is the engine behind every board, queue, and dashboard gadget. Once you can write JQL fluently, you can find anything in Jira and feed it into reports automatically.

Anatomy of a Query

A JQL clause is field operator value, combined with AND, OR, and ORDER BY:

project = "PLAT" AND status = "In Progress" AND assignee = currentUser()
ORDER BY priority DESC, updated ASC

Operators You’ll Use Daily

Operator Meaning Example
= / != equals / not equals status != Done
IN matches a list priority IN (High, Highest)
~ contains text summary ~ "timeout"
IS EMPTY no value set assignee IS EMPTY
WAS historical value status WAS "Blocked"

Saved JQL filters become the source for dashboards and reports

Functions Make Queries Dynamic

Functions compute values at run time so your filters stay current:

  • currentUser() — the logged-in person
  • startOfWeek(), endOfMonth() — relative dates
  • membersOf("jira-developers") — everyone in a group
  • linkedIssues("BUG-1") — issues linked to a given key

Example — everything updated this week by my team that still isn’t done:

assignee IN membersOf("platform-team")
AND updated >= startOfWeek() AND status != Done
ORDER BY updated DESC

From Query to Saved Filter

  1. Build and test the query in Filters → Advanced search.
  2. Save it and share with a project role or group.
  3. Reuse it for boards, JSM queues, and dashboard gadgets — one filter, many surfaces.

Treat saved filters like code: name them clearly and avoid duplicating logic.

What to Learn Next

  • Dashboards built entirely from saved filters
  • Subscriptions that email filter results on a schedule
  • Automation triggered by JQL conditions

Arivanandhan Chitheshwaran