Description Diff

Description Diff for Jira

See exactly what changed in an issue's Description. The app shows which words were added, which were removed, who made the change and when. Pick any two versions from the change history and compare them word by word or line by line. Summary, Environment and custom text fields (for example "Acceptance Criteria") work the same way.

Built on Atlassian Forge with UI Kit. It reads the issue's change history as the signed-in user and has no external servers, no egress and no app storage.

Where it appears

Open any issue in the new Jira issue view. In the Activity section, next to Comments, History and Work log, choose the Description diff tab.

What you can do

The counts read like "+12 words added, −3 words removed" for the selected pair. In Lines mode they count lines.

If Summary, Environment or a single-line or multi-line text custom field has been edited, a Field picker appears. Each field shows its number of recorded changes. The app checks at most 240 fields per view for text, Description included. When more fields than that have changed, a notice says so.

How it works

Jira records each edit of a text field in the issue's change history, with the text before and after. The app reads that history (GET /rest/api/3/issue/{id}/changelog) and rebuilds every version as follows.

The diff runs inside the app's Forge function. Lines are matched first (Myers' algorithm), then the words inside each changed block are compared. Chinese and Japanese text is compared character by character. When an unchanged word sits between two changes and isn't longer than them, it's shown as part of one replacement. So a rewritten sentence reads as "old sentence → new sentence" instead of fragments.

The word counts come from the exact word diff, with two exceptions. Each one comes with a notice.

The app shows the text exactly as Jira stores it in the change history. Formatting such as bold text, headings, lists or links can appear as markup characters. The tab says so under the diff.

Permissions and data

Scoperead:jira-work only, to read the issue's change history and the names and types of its fields
Runs asThe signed-in user (asUser). You only see history for issues and fields that Jira lets you see.
Writes to JiraNever. The app has no write scope.
Stores dataNo. There is no app storage and no cache. Each view is read from Jira when you open it.
External callsNone. No egress, no remote back end.

The first time you open the tab, Forge asks you to allow the app to read Jira data as you. It's Forge's standard consent screen.

See PRIVACY.md for details.

Limits

LimitValueWhat happens
Change history read per view30 pages (3,000 change entries at Jira's usual 100 per page; fewer if the site returns smaller pages)For longer histories, the first page (the oldest entries, including the original text) and the newest pages are read. A notice says how many entries were read and that versions in between may be missing. The same notice appears whenever fewer entries come back than Jira reports in total.
Time spent reading historyabout 18 secondsPages that are not read in time are reported the same way.
Text compared per version100,000 charactersLonger text is cut before comparing, with a notice. Jira text fields hold up to 32,767 characters.
Detailed comparisonup to 3,000 line edits; inside one changed block, up to 1,500 word edits and 20,000 tokens per side (words, spaces and punctuation each count, so about 10,000 words)Past these limits the passage is compared line by line (see How it works), with a notice. The app keeps that only if at least a third of the passage's old words stay unchanged (in Lines mode, a third of its old lines). Otherwise that part is shown as removed text followed by added text, with a notice, and the counts cover that whole part.
Lines shown2,000The rest is cut, with a notice.
Versions in the pickers200 (the original plus the 199 newest, plus the selected pair)Versions in between are not listed in the pickers, but Older change and Newer change step through every version.
Fields in the field picker40Description first, then other text fields by name.
Fields checked for text240 per view, Description included (4 requests of 60 field ids)Description and the other built-in text fields first, then custom fields with the most changes. When more fields have changed, a notice says a rarely changed text field may be missing from the Field picker.

Requirements

Support

Report problems through the Marketplace listing's support link. Please include the issue type and, if you can, the number of changes in the issue's History tab. Do not send issue text unless you are allowed to share it.

Support Zovo

Zovo builds and maintains this app. If it saves you time, you can support the work on GitHub Sponsors. Sponsorship is optional, and the tool works the same without it.

Zovo is made by theluckystrike on GitHub.

More tools by Zovo

License

MIT. Copyright (c) 2026 Zovo.

Support this work

If this app saves you time, you can support the work on GitHub Sponsors. Monthly tiers start at $5, and one-time tiers start at $15. Sponsorship is optional, and the tool works the same without it.

Sponsor on GitHubZovo on GitHub