Ochrestack

Labelkeep for Jira

See every label on your Jira site with its issue count, and the duplicate spellings. Delete, rename or merge one on every issue the app can access, at once: previewed, dry-run first, and every failure explained. Project admins can clean up their own project without the global Bulk Change permission.

Free. Every feature, every site size.

Get it on the Atlassian Marketplace

Not on the Marketplace yet. Labelkeep has not been submitted to Atlassian, so it can't be installed today; this button will link to the listing once it is live. For a note when it is, email [email protected].

For Jira Cloud (Atlassian Forge). Not for Jira Data Center or Server. English only. At install a Jira site admin approves three permissions: read issues, change issues, and the app's own storage inside Atlassian (why each).

Diagram: 1. Pick the labels from a list of every label with its issue count, searchable and sortable, labels at 0 explained. 2. Delete, rename or merge them with a preview of the issues that will change and a dry run that shows before and after and changes nothing. 3. Run for real in the background, with progress and Stop; only your labels change, and each failed issue shows Jira's reason and the fix. Every run is kept in the Activity tab.
How Labelkeep works: pick the labels, preview and dry-run, then run it for real in the background.
  1. Pick the labels from the list of every label with its issue count.
  2. Delete, rename or merge: the preview says how many issues will change, and the dry run shows examples of the before and after, changing nothing.
  3. Run for real from the dry-run result, in the background with progress and Stop. Every failed issue is named, with Jira's reason and the fix.
Why it is needed. Jira Cloud has no screen for managing labels. Removing or renaming one means bulk-changing issues in repeated passes of up to 1,000, with the global Bulk Change permission, and the Labels "Replace" option in bulk change replaces every label on the selected issues, not just the one you meant. The request for real label management, JRACLOUD-33672, has been open since 2013, with over 1,100 votes.

What it does

What a run tells you

Summaries from one test run on a real Jira Cloud site (5 November 2026), as the app wrote them, with the test labels shortened:

Dry run of renaming "old" to "new" in LME2E: 30 issues would change. Nothing was changed. A second search after the first pass found no further issue with the selected labels.

Finished merging "dup1", "dup2" into "merged" in LME2E: 40 issues changed. A second search after the first pass found no further issue with the selected labels.

Stopped on request while removing "big-trash" in LME2E. 20 of 300 issues checked before it stopped: 20 issues changed. The other 280 issues were not touched. Run the operation again to finish.

Each test label also began with the run's number; LME2E is the test project. Afterwards the labels on every issue were read back from Jira: after the stop, exactly the 20 reported issues had lost the label.

What Jira already does, and what you get

Good to know: a careful Jira admin can do the same natively with ADD then REMOVE bulk passes of 1,000 issues each and the global Bulk Change permission; Labelkeep is one previewed operation with per-issue failure reasons, zero-issue labels shown, and an activity log, not a magic fix.

No undo. Every change is in each issue's history and in the Activity tab, but Labelkeep cannot roll an operation back. That is why dry run is on by default.

Price

Free, with every feature, for any number of users. Installed and managed through the Atlassian Marketplace once the listing is live.

Who can use it

WhoSeesCan change
Jira administratorsEvery label on the site, including labels with no visible issuesEvery issue the app can access (Jira settings page), or one project (its Project settings page)
Project administratorsLabels on the issues they can see in the projects they administerOnly issues in those projects that they can see
Everyone elseA message naming the permission they needNothing

Permissions are checked on the server on every request. A project admin's counts, previews and background runs use that person's view of Jira, so issues an issue security level hides from them are never shown or changed; the summary says how many were left out. The edits are made by the app, so an issue's history shows the app as the editor; the Activity tab records who started the run.

Documentation

The step-by-step guide is the Labelkeep quick start.

Install

  1. In Jira Cloud, open Apps > Explore more apps, search for Labelkeep (once the listing is live) and choose Get app.
  2. A site administrator approves the permissions below.
  3. Open Jira settings > Apps > Labelkeep. Project administrators open Project settings > Apps > Labelkeep in their project.
Permission (scope)Used for
read:jira-workFinding issues by label, reading labels and checking permissions. For project admins, also reading issues as them in the background, so nothing hidden from them is shown or changed.
write:jira-workChanging labels on issues
storage:appThe activity log and running operations, kept in Forge storage inside Atlassian

Questions

How fast is it?

On our test site, with the settings every run from the page uses, removing a label from 280 issues took 37 seconds, and a dry run that found nothing to change finished in 4 seconds. A run of 30 to 40 issues has not yet been timed separately with those settings, and nothing larger than 300 issues has been measured. Progress shows throughout, and you can stop at any time.

Will watchers get an email for every changed issue?

They might. Labelkeep asks Jira not to notify watchers on every edit, but whether Jira honours that for the app has not been verified. Try a dry run and a small live run first.

Why is a label still listed after I deleted it?

With a count of 0, it is on issues the app can't see (archived projects, an issue security level, or a permission scheme without the app's role), or only in Jira's suggestions; Jira Cloud has no API to delete a label itself. With a count above 0: search-index lag of a few seconds, or failed or left-out issues, which the summary lists. The page says which applies.

Some issues failed. What do I do?

Fix what the "How to fix" column says, usually a permission in that project's permission scheme, then run the operation again. Issues already changed need no change.

Does a Jira admin see issues they personally can't browse?

Yes. Jira administrators work with the app's view of the site. Project administrators work with their own view. Only one operation runs at a time on a site, even if two admins confirm at the same moment.

Known limits

How we tested

A test suite installs Labelkeep on a real Jira Cloud site, creates issues through Jira's API and runs operations through the app itself. Its last run, on 5 November 2026, passed: a dry run, rename, merge and delete on 60 issues; a rename, a stopped delete and the rest of that delete on 300 more; every issue's labels read back and checked; two simultaneous starts with exactly one accepted; all eight runs in the activity log, newest first. Over 120 automated tests cover batching, resuming without counting an issue twice, the permission rules, dry run, Stop and the duplicate rule; against a model of Jira with 5,000 issues and labels with quotes, emoji and other awkward characters, only the selected labels ever changed.

Not yet covered: the page itself has not yet been opened by a person (every operation behind it has run on a real site; it will be before the listing goes to Atlassian), a real issue security level hiding an issue from a project admin, watcher emails, and labels on more than 300 issues.

Privacy

Your data stays in Atlassian. Labelkeep runs on Atlassian Forge, calls only your own site's Jira API, and has no permission to reach any other server. No analytics, no telemetry. Forge storage holds the activity log and running operations: label names, the keys of example and failed issues, counts, the account IDs of who started or stopped a run, and timestamps. See also the privacy policy.

Support

Email [email protected] with your site URL, what you ran (it is in the Activity tab) and the summary text. We answer every message. Bug reports and feature requests are welcome at the same address.