grachev.app
  • Apps
  • Docs
  • About
  • Contact

Docs

Documentation

Label Manager — Rename, Merge & Clean Up Jira Labels

A complete guide to every feature — the label list, usage counts, renaming, merging, deleting, the rules Jira imposes on label names, permissions, and the one behaviour that surprises everyone (Jira's label index lags behind your edits). If you can't find what you're looking for, email [email protected] — we usually reply within one business day.
1. What it does 2. Installation & where to find it 3. The label list 4. Usage counts 5. Renaming a label 6. Merging labels 7. Deleting a label 8. Label naming rules 9. Why the list can look out of date 10. What is not updated 11. Permissions 12. Data, privacy & security 13. Limits 14. FAQ 15. Support

1. What it does

Jira labels drift. Someone types front-end, someone else frontend, a third person FrontEnd, and a year later nobody can filter on any of them reliably. Jira Cloud gives administrators no screen for fixing this — you can add a label to an issue, but you cannot rename one, and you cannot remove one everywhere it appears.

Label Manager is that screen. It lists every label in your instance, tells you how many issues use each one, and lets you rename, merge or delete a label across every issue that carries it — in one action.

2. Installation & where to find it

Install Label Manager from its Atlassian Marketplace listing on your Jira Cloud site. Only Jira administrators can install apps.

Once installed, open it from the top Apps menu ("Label Manager"). There is nothing to configure — the app reads your labels the moment you open it. It runs as a full-screen page; there is no per-issue panel and nothing is added to your issue view.

3. The label list

The main screen is a single table: every label in the instance, sorted alphabetically and case-insensitively, with a checkbox, a usage cell and the actions available for it.

Filtering

The search box at the top narrows the list as you type. It filters what has already been loaded, in your browser — it never sends a request to Jira, so it is instant no matter how many labels you have. Clearing the box brings the full list straight back.

Selecting

Click a row's checkbox — or anywhere on its label pill — to select it. The checkbox in the table header selects or clears everything currently visible, so you can filter first and then select the whole filtered set. Selecting two or more labels enables Merge selected.

Refresh

Refresh re-reads the label list from Jira and discards anything the app was hiding locally (see section 9). Use it when you want Jira's raw answer rather than the app's post-edit view.

4. Usage counts

Counts are not loaded up front. Each row shows a small Count button; click it and the app asks Jira how many issues carry that label, then replaces the button with the number.

This is deliberate. An instance with a few thousand labels would need a few thousand queries to show every count, and you almost never need more than a handful. Once fetched, a count is cached for the rest of your session, so re-opening the same label costs nothing.

The cache is cleared after any rename, merge or delete, because those numbers are then out of date. The one exception is the label you just merged or renamed into: the app knows exactly which issues it wrote, so it shows that label's true count immediately rather than asking Jira for a figure that has not caught up yet.

Counts come from Jira's approximate issue count, and only include issues your own account is allowed to see (see section 11).

5. Renaming a label

Click Rename on any row. Type the new name and confirm. The app then finds every issue carrying the old label and rewrites that issue's labels: the old value is removed and the new one added, in a single update per issue. Every other label on the issue is left exactly as it was.

When it finishes you get a summary — Renamed "a" → "b" across N issues (M failed) — and the list refreshes.

Case-only renames

Renaming frontend to Frontend works. This is worth calling out because Jira treats the two as the same label when searching but as different values when storing — a naive implementation adds the new spelling without removing the old one and leaves both on the issue. Label Manager compares case-insensitively when deciding what to remove, so a case-only rename really is a rename.

Renaming onto a label that already exists

This is allowed, and it is simply a merge: issues carrying the old label end up with the existing one, and no issue gets it twice.

6. Merging labels

Select two or more labels and click Merge selected. The dialog lists what you picked; click any one of them to make it the target, or type an entirely new name. The chosen target is highlighted, so there is never any doubt about which way the merge runs.

Every source label is then removed from its issues and the target added. A source that is the target is skipped rather than pointlessly rewritten.

Reading the result

The reported total counts issues, not label-uses. If an issue carried two of the labels you merged, it is one issue in the result, not two. So merging a 3-issue label into a 1-issue label can legitimately give you 3 rather than 4 — that happens when one issue already had both. The number shown afterwards is the true size of the target label.

7. Deleting a label

Click Delete. The app first counts the affected issues, then asks you to confirm: "This removes 'x' from N issues. This cannot be undone." Only then does it remove the label from every one of those issues.

There is no undo. Jira does not offer a bulk revert for this, and neither does the app. The label is recorded in each issue's history, so an individual change can be traced, but restoring a label across hundreds of issues would mean re-applying it by hand. Check the count in the confirmation dialog before you accept it.

8. Label naming rules

These are Jira's rules, not the app's:

  • No spaces. Jira labels cannot contain whitespace of any kind. The app blocks a name containing a space and tells you why, both in the dialog and again on the server before anything is written.
  • Not empty. A blank name — or one that is only spaces — is rejected.
  • Case is preserved but not distinguished in search. Backend and backend can both exist as stored values, and Jira's search will return issues for either when you query one. This is precisely the mess the app exists to clean up: merge them into one spelling.

9. Why the list can look out of date

This is the one behaviour worth understanding properly, because it looks like a bug and isn't.

Jira builds the instance-wide list of labels — and the issue counts, and every JQL search — from a search index, not from the issues directly. That index trails real edits, typically by seconds, sometimes by minutes on a busy site. Immediately after a bulk change, Jira will still happily tell you that the old label exists and that it is still used by N issues, even though the issues themselves have already been rewritten.

Left alone, that makes a perfectly successful rename look like it duplicated the label. Label Manager handles it like this:

  • The result of the write is what counts. If every issue updated successfully, the app knows the old label is empty and hides it, regardless of what the index still reports.
  • Labels you just created appear in the list immediately, before the index knows about them.
  • The table footer tells you when something is being hidden, so the view is never quietly different from Jira's.
  • Refresh clears all of that and shows Jira's unmodified answer. Do this a few minutes later and the index will agree with the app.

The same lag explains why a count you fetch seconds after a merge can look too low, and why a label you added to issues a moment ago may take a short while to appear if you open the app immediately afterwards.

10. What is not updated

Label Manager changes the labels field on issues. It does not — and cannot — rewrite places where the text of a label has been used as configuration elsewhere in Jira. After renaming or deleting a label, check anything that refers to it by name:

  • Saved filters and JQL containing labels = "old-name".
  • Board card colours configured with a label query, and board or quick filters.
  • Automation rules that trigger on, or set, that label.
  • Dashboard gadgets and reports built on a filter that mentions it.
  • Anything outside Jira — Confluence macros, integrations, bookmarks.

These keep referring to the old string and will silently return nothing. Renaming a widely referenced label is worth a quick search of your saved filters first.

One thing you do not need to worry about: plain Jira labels have no colour of their own. Colours you may see on cards come from board card-colour rules or the separate Epic Colour field, so a rename cannot lose a label's colour — but a card-colour rule written against the old name will stop matching, per the list above.

11. Permissions

Every Jira request the app makes runs as you, never as a service account with elevated rights. That has two consequences worth stating plainly:

  • You only ever see labels and counts for issues your account can browse.
  • A bulk edit only touches issues you personally have permission to edit. Issues you cannot edit are reported as failures rather than being changed behind your back.

In practice this means the person doing the cleanup should be a Jira administrator, or at least hold Edit Issues across the projects being cleaned — otherwise a rename may only apply to part of the instance. The app tells you how many issues failed, and shows Jira's own error message for the first failure, so a permissions problem is visible rather than silent.

The app requests two scopes: read Jira work (to list labels and count usage) and write Jira work (to add and remove labels on issues).

12. Data, privacy & security

Label Manager runs entirely on Atlassian Forge — Atlassian's own hosting — and qualifies for the Runs on Atlassian badge.

  • No external egress. The app makes no network calls to any server outside Atlassian. There is no backend of mine involved, because there is no backend of mine at all.
  • No data stored. The app keeps no database and writes nothing to Forge Storage. Labels and counts are read when you open the page and discarded when you close it.
  • No analytics or tracking inside the app.
  • Your issues remain native Jira data throughout. Uninstalling the app changes nothing about them.

See the Privacy Policy, Terms of Service and DPA for the formal detail.

13. Limits

Behaviour Detail
Bulk edit speed Issues are updated one at a time, deliberately. A label on several thousand issues takes a few minutes; the progress indicator stays up throughout.
Rate limiting If Jira rate-limits the app (HTTP 429), the same issue is retried up to three times, waiting as long as Jira asks. Operations slow down rather than fail.
Single failures One issue that cannot be updated is counted as failed and reported; it never aborts the rest of the operation.
Leaving the page A bulk operation runs from your browser session. Closing the tab mid-run stops it part-way — issues already updated stay updated. Re-run the same action to finish.
Newly created labels A label used only by very recently updated issues may briefly not appear, until Jira's index catches up. See section 9.

14. FAQ

Can I undo a rename or delete?

No. There is no bulk revert. Each change is in the issue's history, but restoring across many issues would be manual. Check the usage count before confirming.

Why does the old label still appear right after I renamed it?

Jira's label index lags behind the edit. The issues are already correct — open one and look. The app hides the emptied label for you and says so in the table footer; press Refresh a few minutes later to see Jira's own answer.

Why is the merged total lower than the sum of the parts?

Because it counts issues, not labels. An issue that carried two of the merged labels is one issue in the result.

Can I create a label here?

Not directly — Jira has no concept of a label that exists without an issue. Renaming or merging into a new name effectively creates it on the affected issues.

Can labels have spaces?

No. That is a Jira restriction. Use a hyphen or underscore.

Does it work with Jira Service Management or Jira Product Discovery?

It reads and writes the standard Jira labels field, on whatever projects your account can see. It is built and tested for Jira Software. Jira Product Discovery's coloured option fields are a different field type and are not covered.

Does it change anything other than labels?

No. Each update sets the issue's labels field and nothing else. Note that editing an issue updates its "Updated" timestamp and appears in its history, as any edit does.

What happens to my data if I uninstall the app?

Nothing is lost, because the app stores nothing. Your labels are part of your issues and stay exactly as they are.

15. Support

Email [email protected] with any questions, bug reports, or feature requests. Support hours: Monday–Friday, 9:00–18:00 CET, with responses typically within one business day.

grachev.app
  • Privacy Policy
  • Terms of Service
  • DPA

© 2026 George Grachev. Slovakia.