How to export Jira worklogs to Excel or CSV
By Kayabyte · Updated 5 November 2026
Short answer: A Jira work item export gives you total time per work item, not who logged what on which day. For individual worklogs on Jira Cloud, call the REST API for each work item, or use a script that does. The free jira-worklog-export script writes them to a CSV you can open in Excel. A Marketplace app is the alternative if you need this every month.
Disclosure: I make that script and Burnrate, a Jira cost app, mentioned at the end. The script is free and MIT-licensed and doesn’t need the app. I ran everything here on a Jira Cloud test site on 5 November 2026: the script returned 125 worklogs and 303.00 hours for a project, the same total Jira gives in Time spent.
What Jira’s export gives you
Exporting from work item search gives you a row per work item. That’s enough if you only need Time spent per item. It isn’t enough for hours by person, by day or by month, because a work item with five people logging time is still one row.
Option 1: the script
You need Node.js 22 or newer and an API token.
git clone https://github.com/kayabyte-2/atlassian-admin-scripts.git
cd atlassian-admin-scripts
export ATLASSIAN_SITE=your-site.atlassian.net
export ATLASSIAN_EMAIL=you@example.com
export ATLASSIAN_API_TOKEN=your-token
node src/jira-worklog-export.js --jql "project = APP" --from 2026-10-01 --to 2026-10-31 --out worklogs.csvYou get one row per worklog:
| key | summary | author | accountId | started | hours | seconds | comment |
|---|
Any JQL works, so --jql "parent = APP-12" gives you one epic’s children, without the epic itself. The dates are inclusive days in UTC and match when the work was started, not when it was logged.
In Excel, a pivot table on author and hours gives hours per person. To put money on them, see how to track project cost from worklogs.
Option 2: the API calls yourself
There’s no call that returns all worklogs for a project. The usual route has two steps:
- Find the work items:
POST /rest/api/3/search/jqlwith JQL such asproject = APP AND timespent > 0. - For each one:
GET /rest/api/3/issue/{key}/worklog. PassstartedAfterandstartedBeforein milliseconds to limit the dates.
Two traps:
- Don’t read worklogs from the search result. The
worklogfield in a search returned at most 20 per work item in my test, and it says so inmaxResults. Use the separate call for anything that might have more. worklogDatefollows the time zone of the account running the query. Near the start or end of a month, it can include or miss a day. The script searches a day wider on each side and then filters on the exact time.
For keeping a copy in sync, GET /rest/api/3/worklog/updated?since= lists worklog IDs changed since a time, and POST /rest/api/3/worklog/list fetches them. In my test that returned 1,000 IDs per page. It lists all the worklogs you can see, so you filter afterwards.
If you use Tempo
On Cloud, worklogs logged through Tempo Timesheets are written to Jira under Tempo’s app account. Everything above then shows that account as the author, not the person. Use Tempo’s own Raw Data report or API for real authors. See what happens to your worklogs when you leave Tempo.
Before you send the file
- It holds names and hours, so treat it as personnel data.
- It’s correct at the moment you run it. Worklogs can be added, changed or deleted afterwards.
- The script needs Browse projects and View worklogs on the work items, and it only exports what the token’s account can see.
- It makes one API call per work item, so a large query takes a while.
- I checked comment text with test data only, because my test site’s worklogs have no comments.
If you export every month to get cost
If the spreadsheet is really a monthly cost report, Burnrate is the app I make for that. It prices native Jira worklogs with dated rates and shows reports by project, epic, person, month or work item, with CSV export.
- It’s not a general worklog exporter: its reports are about cost and hours, and the script above gives you the raw rows for free.
- It has no time logging or timesheets. People keep logging time in Jira.
- With Tempo, hours under Tempo’s account show as Unattributed unless you turn on its Tempo connection (beta).
- It’s new and has no reviews yet.
It’s on the Atlassian Marketplace.
FAQ
Can I export worklogs from Jira without an app? Yes, with the REST API or a script. Jira’s own work item export only gives totals per work item.
Why does my export have no per-person hours? The export has one row per work item. Individual worklogs need the worklog API.
Why do I only get 20 worklogs per work item? You’re probably reading them from a search result. Use GET /rest/api/3/issue/{key}/worklog.
How do I export worklogs for one month? Pass --from and --to to the script, or startedAfter and startedBefore to the API.
Can I export worklogs for an epic? Yes. Use JQL such as parent = APP-12. Sub-tasks need their own condition, and worklogs on the epic itself need key = APP-12 added with OR.
Jira and Atlassian are trademarks of Atlassian. Tempo is a trademark of its owner. Kayabyte is an independent developer and is not affiliated with or endorsed by Atlassian or Tempo.
More guides
- Atlassian Connect end of support: what Jira and Confluence admins should check before 31 January 2027
- How to delete old page versions in Confluence Cloud
- Apps to make a Confluence group watch a space or page, compared
- How to make a Confluence group watch a space or page
- Onboarding in Confluence: make new hires watch the right spaces automatically
- Confluence storage almost full? What counts and how to free it
- Confluence watching but no email? 5 things to check
- How to track billable and non-billable hours in Jira
- How to calculate budget burn rate and run-out date in Jira
- How to count business days between two dates in Jira
- How to see what a Jira epic costs from worklogs
- Make a Jira field read-only after approval or when closed
- How to handle hourly rate changes in Jira cost reports without changing past costs
- Jira project cost and budget apps compared: Tempo Financial Manager alternatives
- How to see project cost from Tempo worklogs in Jira
- How to set a WIP limit per person in Jira
- How to see workload per assignee in Jira
- Add a group as request participants in Jira Service Management
- JSM agent can’t find a customer in Request participants: what to check
- Add or remove request participants with Jira Automation
- CC a whole team on every Jira Service Management request
- Group request participants apps for Jira Service Management compared
- JSM organizations vs request participants: which to use
- Why adding request participants in bulk floods inboxes in Jira Service Management, and how to avoid it
- Stop agents or the reporter ending up as request participants
- How to add public holidays to a JSM SLA calendar
- Kanban WIP limit per person in Jira: beyond column limits