Writing Effective Jira Tickets in English: Clear Titles and Descriptions

Write Jira tickets that get picked up fast — clear titles, scannable descriptions, acceptance criteria and reproduction steps — with templates and before/after examples.

A Jira ticket is a piece of writing that someone else has to act on, sometimes weeks later, often without asking you. If the title is vague or the description is a wall of text, the ticket sits in the backlog or bounces back with “what do you actually need?” Good ticket English saves hours of clarification.

This guide shows you how to write titles, descriptions, acceptance criteria, and bug reports that anyone can pick up and run with.


Write the title as a verb phrase

A good Jira title is short, specific, and starts with a verb. The reader should know what the work is from the title alone.

Pattern: <verb> <object> <qualifier>

  • “Add rate limiting to the login endpoint”
  • “Fix null-pointer crash on empty cart checkout”
  • “Migrate payments service to Postgres 16”
  • “Investigate slow query on the orders dashboard”

Choose the verb to signal the type of work:

  • Add / Implement — new functionality
  • Fix — a bug
  • Refactor — restructure without changing behaviour
  • Investigate / Spike — research with an unknown outcome
  • Remove / Deprecate — take something away
  • Update / Bump — version or config change

Weak title: “Login problem” Strong title: “Fix login failing with 500 when email contains a plus sign”

The strong title tells you what breaks, when, and how — before you even open the ticket.


Avoid vague title words

These words make a title meaningless on their own:

  • “issue”, “problem”, “bug” (with no detail)
  • “stuff”, “things”
  • “improve”, “enhance” (with no specifics)
  • “various”, “miscellaneous”

Vague: “Improve performance” Specific: “Reduce p99 latency on /search from 800ms to under 300ms”


Structure the description

A description should be scannable, not a paragraph. Use these standard sections:

## Context
Why this matters / how we noticed it.

## What needs to happen
The change, in plain terms.

## Acceptance criteria
- [ ] Bullet 1
- [ ] Bullet 2

## Notes / out of scope
Links, constraints, what we are NOT doing.

Sections let a reader jump to what they need. Walls of text hide the important parts.


Acceptance criteria: the most important section

Acceptance criteria define done. Without them, “done” is an opinion. Write them as testable statements.

A common, clear format is Given / When / Then:

  • Given a user with no items in their cart, when they click Checkout, then they see an empty-cart message instead of a crash.”

Or simple checkboxes:

  • Login works when the email contains a +.
  • An integration test covers the plus-sign case.
  • The fix is deployed to staging.

The key phrasing rule: each criterion must be verifiable. “Login should work better” is not testable; “login succeeds for emails containing +” is.


Writing bug tickets: the three essentials

A bug ticket that’s missing any of these will bounce back to you.

1. Steps to reproduce — numbered, exact:

1. Log in as a standard user.
2. Add one item to the cart.
3. Remove the item.
4. Click Checkout.

2. Expected vs actual — the heart of a bug report:

  • Expected: “The cart shows an empty-cart message.”
  • Actual: “The page returns a 500 error.”

3. Environment — where it happens:

  • “Staging, Chrome 125, build 4.2.1.”

Use these exact labels. Reviewers scan for “Expected” and “Actual” — give them the words they expect.

Expected: checkout is blocked with a friendly message. Actual: the request 500s and the user is stuck. Environment: prod, all browsers, since the 4.2 deploy.”


Useful phrases for tickets

Describing impact:

  • “This blocks users from completing checkout.”
  • “This is intermittent — it fails roughly one in ten times.”
  • “Low priority; cosmetic only.”

Describing scope:

  • “Out of scope: redesigning the cart UI — that’s a separate ticket.”
  • “This depends on PROJ-123 being merged first.”
  • “This is a follow-up to PROJ-456.”

Linking work:

  • “Blocked by …”, “Relates to …”, “Duplicates …” — use Jira’s link types and name them in prose too.

Before and after

Before Title: “Checkout broken” Description: “Checkout doesn’t work for some people, can someone look? It’s been happening for a while I think.”

The assignee has no idea who, when, how, or what “work” means.

After Title: “Fix 500 on checkout when cart is emptied before submit” Description: Context: Reported by support, ~5 tickets this week. Started after the 4.2 deploy. Steps to reproduce: 1. Add item. 2. Remove it. 3. Click Checkout. Expected: Empty-cart message. Actual: 500 error. Acceptance criteria: [ ] Empty cart shows a message. [ ] Regression test added. Environment: prod, all browsers.

Now anyone can pick it up and start in minutes.


Common mistakes

  • Titles that aren’t actionable. Start with a verb; name the object.
  • No acceptance criteria. Without them, the ticket can’t be closed objectively.
  • Mixing several problems in one ticket. One ticket, one outcome. Split the rest.
  • Assuming context. The reader may not have been in the meeting. Spell it out.
  • No reproduction steps for bugs. “It doesn’t work” is unactionable.
  • Walls of text. Use headings and bullets so the ticket is scannable.

Key takeaways

  • Title = verb + object + qualifier, specific enough to act on alone.
  • Structure descriptions with Context, What, Acceptance criteria, Notes.
  • Write testable acceptance criteria — they define “done”.
  • Bug tickets need steps, expected vs actual, environment.
  • One ticket, one outcome — split anything else out.

Tickets are a form of asynchronous communication. Write them so a stranger could pick them up cold, and your backlog will move twice as fast.