Apps Part of Trackwell

Trackwell Query Filter

Filter an exported issue list with a JQL-style query: status, assignee, dates, ORDER BY.

A Trackwell project file (.trackwell.json), a Trackwell CSV export or a Jira CSV export.

Used instead of the pasted text when given.

More options

Fields: project, key, type, status, statusCategory, priority, severity, assignee, reporter, labels, component, fixVersion, sprint, parent, epic, created, updated, resolved, due, resolution, text, summary, storyPoints and custom fields by name. Operators: = != > >= < <= ~ !~ IN, NOT IN, IS EMPTY. Values: words, "quoted text", 2026-11-24, -7d, me, today(), openSprints().

A person’s name or id in the issue list. Used by assignee = me.

Relative dates (-7d, today()) count from this day. Empty = today.

Try an example: · ·

More about this tool

How it works

Runs a query such as “project = WEB AND status != Done AND assignee = me ORDER BY priority” over an exported issue list (Trackwell project, Trackwell CSV or Jira CSV) and returns the matching issues as a table and CSV. Same query language as the list view in Trackwell.

  • The query is parsed into AND/OR/NOT clauses (NOT binds tightest, then AND, then OR; brackets group). Field names and keywords are case-insensitive; text comparisons ignore case.
  • Status, type, priority, people, components, versions and sprints match their name or their id. = and IN match any value; != and NOT IN match when no value is equal (empty fields match !=); ~ means “contains”.
  • Priority and severity compare by urgency (priority > Medium = High and Highest). Dates compare by day when the value is a date; -7d, +2w and today() count from the “Today is” date.
  • ORDER BY sorts by one or more fields; ascending is the default, and for priority and severity ascending means the most urgent first. Without ORDER BY the backlog rank is used.
  • CSV files are read with the same mapping as the Jira CSV import tool; the matches are exported again as CSV with Jira-compatible columns (RFC 4180, formula cells guarded).

Jira is a trademark of Atlassian. TQL is Trackwell’s own query language and supports a subset of the ideas of JQL.

Sources

Part of Trackwell

How to filter an issue list with a small query language

Run Jira-style queries such as assignee = me AND status != Done ORDER BY priority over a Trackwell project or a Jira CSV export, and get the matching issues as a table and CSV.

What it is for

Issue trackers grow quickly, and the question is almost never “show me everything”. It is “what is still open for me”, “which bugs are urgent” or “what was created this week”. This tool answers such questions with a short query over an issue list. It reads a Trackwell project (.trackwell.json), a Trackwell archive, a Trackwell CSV export or a CSV export from Jira, and returns the matching issues as a table and as a CSV download.

The language is the same one the Trackwell app uses in its List view and in saved filters, and both run the same code — a filter you test here returns the same issues in the app.

It cannot change issues, and it only knows what the file contains: a Jira export without the Sprint column cannot answer sprint IN openSprints().

Worked example

The first example uses the Software team (scrum) template on 2026-11-24 with the query:

statusCategory != Done ORDER BY priority, created

The tool returns:

13 of 24 issues in Website relaunch match the query.

The table starts with the two High issues — WEB-14 Request payment provider sandbox keys (in progress, due 2026-11-25) and WEB-16 Contrast of the price label is too low (backlog, no assignee) — followed by the Medium issues in the order they were created, starting with the epics WEB-1 and WEB-2.

The second example sets Who is “me” to Linus Kaur and asks assignee = me AND resolution IS EMPTY ORDER BY priority. Three issues match: WEB-2 Checkout, WEB-12 Payment step and WEB-18 Payment error messages.

The third example runs over the sample Jira CSV: type IN (Bug, Story) AND sprint IN openSprints() AND created >= -14d ORDER BY created DESC finds one of eight issues, APP-4 Crash when the camera permission is denied (priority Highest, imported from Jira’s Blocker).

How to read the result

  • Matches / Issues in the list — how many issues passed the query out of all issues in the file.
  • To do / In progress / Done — the matches per status category. Every status belongs to one of the three, so statusCategory works even when teams name their statuses differently.
  • Matching issues — key, type, summary, status, priority, assignee, created, due date and story points, in the order of ORDER BY (without it: by key).
  • Query — the query exactly as it was run.

Tips and common mistakes

  • Combine conditions with AND, OR and NOT, and group them with brackets: (type = Bug OR type = Incident) AND priority >= High. AND binds stronger than OR.
  • priority >= High means High or more urgent; severities compare the same way.
  • Text needs quotes when it has spaces: status = "In review". Names and values are not case-sensitive.
  • ~ searches inside text (summary ~ login, text ~ "sandbox"); text covers summary, description and comments.
  • Relative dates count from Today is: created >= -7d is the last seven days, due < +2d is due within two days. Set the date when you compare runs, otherwise “today” moves.
  • != and NOT IN also match issues where the field is empty. Add AND assignee IS NOT EMPTY if you want only issues that have a value.
  • A typo gives a message with the position of the problem, for example an unknown field or a missing closing bracket.

FAQ

Is this the same as JQL in Jira?

It is close but not identical: the common fields, operators and functions work the same way, but Jira-only functions and history operators such as WAS or CHANGED are not supported.

Can I filter a Jira export directly?

Yes. Paste or upload the CSV export; it is read with the same mapping as the Jira import tool.

Does the query change my file?

No. The tool only reads the issue list and returns the matches.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://trackwelljqlfilter.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://trackwelljqlfilter.usefulweb.app/mcp · tool name trackwell_jql_filter
Example request
curl -s -X POST https://trackwelljqlfilter.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{…see OpenAPI examples…}'
Feedback · ideas & bug reports welcome