Skip to content

Free tool · runs in your browser

Jira CSV import checker, find the errors before Jira does.

A Jira CSV import checker reads your file the way Jira's importer will and tells you what will break: quotes that aren't closed, rows with the wrong number of columns, stories that come before their epic or point at a parent that isn't there, mixed date formats and over-long summaries. This one runs in your browser. It lists each problem with its row, fixes the ones it safely can, and gives you a corrected file. Nothing is uploaded.

or drop it here

Your report shows here once you paste a CSV or open a file.

01

How it works

  1. 1Paste your CSV, or drop the file onto the page.
  2. 2Read the report. Errors stop the import; link problems import without their parent; warnings are worth a look.
  3. 3Download the fixed file if the checker offers one, and fix anything it lists by hand.
  4. 4Import it with Jira's External System Import, mapping each column as the guide shows.

02

What it checks

K-01
A quote that is opened but not closed. Error. Close the quote, or remove the stray quote character, at the row and column shown.
K-02
A row with more or fewer fields than the header. Error. Make the row's field count match the header, usually by quoting a cell that holds a comma.
K-03
No Summary column, or a row with an empty Summary. Error. Add a Summary column and give every row a summary.
K-04
A Summary longer than 255 characters. Error. Shorten the summary to 255 characters or fewer. The download cuts it and moves the full text into the Description.
K-05
A delimiter that isn't a comma. Error. Save the file with commas. The download rewrites it with commas.
K-06
A byte-order mark, or text that isn't UTF-8. Warning. Save the file as UTF-8. The download drops a byte-order mark; text that isn't UTF-8 needs saving again from your spreadsheet.
K-07
A header name repeated where Jira expects one column. Warning. Keep one column for that field, or give the columns different names.
K-08
A duplicate or empty ID on a row that is someone's parent. Link. Give every parent row its own ID.
K-09
A Parent that points at an ID that isn't in the file. Link. Add the parent row, or correct the Parent value. A Parent that is an issue key needs that parent to exist in the target space already.
K-10
A child row that comes before its parent. Link. Move the parent above its children. The download reorders the rows for you.
K-11
A sub-task under an epic, an epic with a parent, or a story or task under a sub-task. Link. Follow the hierarchy: epic, then story, task or bug, then sub-task.
K-12
Both Parent and Epic Link in one file. Warning. Use Parent for Jira Cloud and Epic Link for Jira Data Center, not both.
K-13
An Epic Link with no matching Epic Name, or two epics with the same Epic Name. Link. Make each Epic Link equal one epic's Epic Name, and give every epic its own name.
K-14
A date column that uses more than one date format. Error. Use one format in the column, and enter that format on the importer's settings screen.
K-15
An email column with values that aren't name@domain.tld. Warning. Replace the value with the person's email address, or leave it empty.
K-16
A number field with anything but digits and one decimal point. Error. Keep only the number, for example 3 instead of 3 points.
K-17
A Space name without a Space key, or the other way round, or a row missing one. Error. Fill in both the space name and the space key on every row, or remove both columns.
K-18
More than 250 rows, or more than 1,500. Info. Jira's bulk-create importer for non-admins takes up to 250 work items and can't link parents; Atlassian recommends up to 1,500 per file, so split a larger file.
K-19
Empty trailing rows and columns. Info. Delete them. The download strips them.
K-20
The work types the file uses. Info. Each work type must exist in the space; team-managed spaces can't create new work types during an import.

03

Questions about Jira CSV imports

  • Why did my stories import without their epic?

    Usually one of three things: the Parent column wasn't mapped to the Parent field, a story row came before its epic, or the file went through the bulk-create importer, which can't map parent-child links. The checker finds the first two in your file; the third is the import route, so use External System Import.
  • What does "Malformed CSV stream" mean?

    A field opens a double quote that never closes, so Jira reads the rest of the file as one value. The checker shows the row and column where that field starts.
  • Can a sub-task belong to an epic?

    No. A sub-task's parent is a story, task or bug, and that one's parent is the epic. The checker flags rows that skip a level.
  • Does it fix the file for me?

    It fixes what it can without guessing: row order, over-long summaries, the delimiter, a byte-order mark and empty rows. Everything else is listed with its row so you can fix it in your spreadsheet.
  • Is my CSV uploaded anywhere?

    No. The file is read and checked in your browser, and the fixed file is created on your device. The page records anonymous counts, such as how many rows and problems a check found, never your data.
  • Can something build the backlog without a CSV?

    That's what Murmur does. Record a voice memo about your idea and Murmur writes the PRD and builds the epics and stories, in Murmur or, when you choose Jira for the run, directly in your Jira site. Your first idea is free. Only have a PRD? Convert it here.