Excel → Jira importer with automatic validation, auto-fixes, and Jira-ready CSV generation.
A powerful utility for batch-importing tasks from Excel into Jira. Transform your Excel planning data into properly structured Jira issues with hierarchical relationships, automatic validation, and direct cloud integration (Jira Cloud only for API integration, CSV export works with any Jira deployment).
The tool converts Excel files into Jira-compatible CSVs, validates fields like issue types and priorities, automatically fixes common Jira import errors, skips invalid or junk rows, supports both CLI and a standalone EXE, allows custom rules through JSON configuration, and produces a fully Jira-ready CSV ready for bulk import.
- Converts Excel (.xlsx) into Jira-compatible CSV files
- Validates issue types, priorities, components, and IDs
- Auto-fixes common Jira import errors
- Skips junk rows and malformed data
- CLI and standalone EXE available
- Direct import to Jira via API (v3)
- Customizable rules via JSON config
- Generates a fully Jira-ready CSV for bulk import
➡️ Get the latest release from the Releases page.
No install required — on Windows, you can drag & drop your Excel file onto the EXE to start processing (the tool will automatically look for configuration files).
Platform Support:
- Windows: Standalone EXE available (no installation required)
- macOS: Native build available (no installation required)
- Source: Python 3.12+ required for running from source
This tool currently supports Jira Cloud only for direct API integration.
CSV Export: The CSV export functionality works with any Jira deployment type (Cloud, Server, Data Center) since it generates CSV files for manual import.
Direct Cloud Import: The --cloud flag only works with Jira Cloud instances using REST API v3. It does not work with:
- Jira Server (on-premises)
- Jira Data Center
- Legacy Jira instances
Need Server/Data Center support? We're happy to help adapt the tool for your specific Jira setup constraints. Please reach out via GitHub Issues or via our website deerhide.run with details about your Jira configuration.
Importing tasks from Excel into Jira is often frustrating because the CSV must be perfectly formatted, fields must match Jira's internal rules, and small issues result in unclear error messages. The purpose of this tool is to automate the conversion, validation, cleanup, and output formatting to avoid these problems.
This toolkit automates the entire process: conversion, validation, fixing, and generating a clean Jira-ready CSV or import to Jira Cloud — eliminating the pain of manual formatting and cryptic error messages.
Perfect for project managers, team leads, producers, and anyone who plans in Excel but later needs to import into Jira. If you've ever struggled with Jira's CSV import requirements or spent hours fixing formatting issues, this tool is for you.
-
Download the
jira-importer.exefile from the releases page -
Prepare your Excel file using the provided
ImportTemplate.xlsxtemplate -
Run the import:
# For CSV export (manual import) # On Windows: drag & drop your Excel file onto jira-importer.exe # Or use command line: jira-importer.exe your-data.xlsx # For direct Jira Cloud import jira-importer.exe your-data.xlsx --cloud
Optional: Test your setup first (recommended):
jira-importer.exe --show-config
jira-importer.exe your-data.xlsx --dry-runOn Windows, you can drag and drop your Excel file onto the jira-importer.exe file for quick CSV export. The tool will automatically look for a configuration file next to your Excel file (use -ci flag if needed).
| Option | Description |
|---|---|
your-data.xlsx |
Your Excel file to import |
-c, --config |
Use a specific configuration file |
-ce, --config-excel |
Use settings from your Excel file's Config sheet |
-cd, --config-default |
Use the default configuration |
-ci, --config-input |
Use config file next to your Excel file (recommended) |
--cloud |
Import directly to Jira Cloud (requires configuration) |
--auto-fix |
Enable automatic fixing of validation issues |
--credentials [ACTION] |
Manage Jira API credentials (run/show/clear) |
--data-sheet NAME |
Specify custom data sheet name |
--dry-run |
Process data without writing output |
--show-config |
Show configuration without requiring input file |
-d, --debug |
Show detailed information for troubleshooting |
-v, --version |
Show version information |
Note: --cloud requires --config-input or --config myconfig.json
Important: Use the provided ImportTemplate.xlsx as your starting point. Do not change the column headers — the tool expects specific column names to work correctly.
- Data Sheet: Place your tasks in the "dataset" sheet (or specify a custom sheet name with
--data-sheet) - Template: Start with
ImportTemplate.xlsxto ensure proper column structure - Empty Rows: Empty rows are automatically ignored during processing
- Notes/Comments: Rows with Issue Types like "comment", "note", or "skip" are automatically filtered out (configurable)
The tool supports:
- Direct Jira Cloud Import: Import directly to Jira Cloud (with
--cloudflag) - CSV Export: Convert your Excel file to CSV format for manual import
- Smart Validation: Validate and format data for Jira import
- Auto-fixing: Automatically fix common issues (with
--auto-fixflag) - Hierarchical Support: Handle Initiatives, Epics, Stories, and Sub-tasks with proper relationships
- Custom types and their levels can be configured in the configuration files (JSON configuration recommended)
Input (Excel):
Summary,Priority,Issue Type,Parent,Issue ID,Estimate,Labels
Fix login bug,high,Bug,,,2h,bug critical
Add new feature,Medium,Story,,,,
Implement API endpoint,Low,Sub-Task,Add new feature,,1d,backend
Output (CSV - your-data_jira_ready.csv):
Summary,Priority,Issue Type,Parent,Issue ID,Estimate,Labels
Fix login bug,High,Bug,,1,7200,bug critical
Add new feature,Medium,Story,,2,,
Implement API endpoint,Low,Sub-Task,Add new feature,3,28800,backend
What the tool fixed:
- Issue IDs: Auto-generated sequential IDs (
1,2,3) when missing - Priority: Normalized case (
high→High) - Estimates: Converted to seconds (
2h→7200,1d→28800) - Labels: Preserved and validated (whitespace trimmed, comma-separated format maintained)
- Label Columns: Multiple label columns (
labels0,labels1,labels89724, etc.) are automatically merged into a singlelabelscolumn
The tool validates, fixes issues, assigns missing Issue IDs, normalizes formats, and generates a clean CSV file ready for Jira's Bulk Create page.
The tool supports skipping rows during processing using multiple criteria:
- RowType column: Set
RowType = "SKIP"for rows you want to exclude - Issue Type filtering: Automatically skip rows with Issue Types like "comment", "note", "skip"
- Skipped rows bypass validation and won't appear in the final output
- Configure this feature in your config file with
"skip_rowtype": trueand"skip_issuetypes": ["comment", "note", "skip"]
Example:
Summary,Priority,Issue Type,RowType
Fix login bug,High,Bug,PROCESS
Skip this row,Low,Story,SKIP
Comment row,Low,comment,PROCESS
Update docs,Medium,Task,PROCESS
Configuration:
{
"app": {
"validation": {
"skip_rowtype": true,
"skip_issuetypes": ["comment", "note", "skip"]
}
}
}The tool can generate output in multiple formats:
- Direct Jira Import: Issues are created directly in Jira Cloud (with
--cloudflag) - CSV Export: A cleaned and validated CSV file named with a
_jira_ready.csvsuffix, saved next to the original file, and fully compatible with Jira's Bulk Create page - Excel Reports: Processing reports with metadata written back to Excel files
CSV Output Details:
- File naming:
your-file_jira_ready.csv(saved in the same directory as your input file) - Format: UTF-8 encoded, ready for Jira's CSV import
- Compatibility: Works with Jira Cloud, Server, and Data Center (via manual CSV upload)
Choose the configuration method that works best for your workflow:
- Put your settings in the
Configsheet of your Excel file - Use our template as a starting point:
resources/templates/ImportTemplate_with_config.xlsx - Run:
jira-importer.exe your-data.xlsx -ce
Benefits:
- Everything in one file
- Helpful lookup tables (assignees, sprints, components) in the same Excel
- Excel Table Configuration: Use structured tables like
CfgAssignees,CfgSprints,CfgComponents
- Copy
resources/templates/config_importer.jsonnext to your Excel file - Fill in your Jira details (site address, API token, project key/id)
- Run:
jira-importer.exe your-data.xlsx -ci
Configuration Sources:
- Excel file (
-ce): Put your settings in the Excel file's Config sheet - JSON file (
-ci): Placeconfig_importer.jsonnext to your Excel file - Default (
-cd): Use the built-in configuration - Custom (
-c): Point to a specific configuration file
Recommendation: Use the Excel Config sheet (-ce) for simplicity, or place a JSON config file next to your Excel file and use -ci.
- File logging can be enabled/disabled with
write_to_file(on by default) - Logs are saved next to the app in
jira_importer_logs/ - For extra details, run with
-d(debug mode)
The tool helps address these common Jira import problems:
- Invalid Issue IDs: Detects and fixes invalid or duplicate Issue ID formats
- Invalid Priorities: Validates against allowed priority values and normalizes case
- Missing Parent Links: Ensures Sub-tasks have required parent relationships
- Invalid Parent Links: Validates parent-child hierarchy (e.g., Sub-tasks can't parent Epics)
- Unrecognized Components: Validates components against your Jira project's component list
- Incorrect Column Counts: Handles Excel formatting issues and ensures proper CSV structure
- Formatting Issues: Fixes common Excel-to-CSV conversion problems (quotes, commas, encoding)
- Sprint Problems: Validates sprint values and formats them correctly for Jira
- Fix Version Issues: Ensures fix versions match your project's available versions
- Estimate Format Errors: Normalizes time estimates to Jira's expected format (seconds)
- Project Key Mismatches: Ensures Issue IDs match your configured project key
All of these are automatically detected during validation, and many can be auto-fixed with the --auto-fix flag.
The toolkit includes comprehensive security improvements:
- Path validation - Automatic validation of file paths to prevent security issues
- Sensitive data protection - Automatic redaction of passwords, tokens, and secrets from logs
- Improved error handling - Better error messages with specific guidance for troubleshooting
- Safer file operations - Enhanced file handling with proper error management
The importer provides clear, actionable error messages:
- Clear authentication errors - Know immediately if your token expired or if there's a connection problem
- Helpful guidance - Get specific instructions like "Refresh your token at [URL]" instead of cryptic error codes
- Configuration help - Better messages when config files are missing or incorrect
- Dry-run mode - Test your configuration and data processing without writing output files
- Configuration display - Show your current configuration without requiring an input file
- Enhanced Excel configuration - Improved type conversion and fallback logic for better reliability
- Import directly to Jira Cloud - No more manual CSV uploads
- Hierarchical issue types - Support for Initiatives, Epics, Stories, and Sub-tasks with proper parent-child relationships
- Batch processing - Efficient handling of large imports
- Credential management - Secure credential storage with keyring integration
- Excel table configuration - Advanced configuration using structured Excel tables
-
Set up credentials:
jira-importer.exe --credentials run
-
Import directly to Jira:
jira-importer.exe your-data.xlsx --cloud
-
With auto-fix enabled:
jira-importer.exe your-data.xlsx --cloud --auto-fix
- Interactive setup:
--credentials run- Set up authentication interactively - View credentials:
--credentials show- Display current credentials - Clear credentials:
--credentials clear- Remove stored credentials - Environment variables: Use
JIRA_EMAILandJIRA_API_TOKENfor automation
The tool supports proper parent-child relationships:
- Level 1 (Initiative): Can parent all other levels
- Level 2 (Epic): Can parent levels 3 and 4
- Level 3 (Story/Task/Bug): Can parent level 4
- Level 4 (Sub-Task): Must have a parent
Before importing your data, test your configuration:
# Test your configuration without processing data
jira-importer.exe -c your-config.json --show-config
jira-importer.exe your-data.xlsx -ce --show-config
# Test data processing without writing output files
jira-importer.exe your-data.xlsx --dry-run
# Test with debug information
jira-importer.exe your-data.xlsx --debug- File not found: Make sure your Excel file exists and the path is correct
- Permission errors: Run as administrator if needed
- Authentication problems: The importer will tell you exactly what's wrong (see CONFIG.md for details)
- Configuration issues: Check that you're using the right config flags (
-c,-ce,-ci,-cd) - Credential issues: Use
--credentials showto check your stored credentials - Cloud import failures: Check your Jira permissions and project access
- Path validation errors: Ensure file paths don't contain control characters or exceed length limits
- Sensitive data in logs: Sensitive information is automatically redacted for security
- Need more details: Use
-dflag for detailed logging - Test your setup: Use
--show-configand--dry-runto test before importing
- Linux support - Native builds for Linux operating systems
- Multiple file imports - Process several Excel files at once
- Project templates - Ready-made templates for common project types
- Jira Server/Data Center support - Support for on-premises Jira instances
- Advanced reporting - More detailed import reports and analytics
- Documentation: Check the docs folder for detailed guides
- Issues: Report bugs or request features on GitHub Issues
- Discussions: Ask questions on GitHub Discussions
- Debug logs: Use
--debugflag for detailed error information
- GitHub Repository: https://github.com/DeerHide/jira-toolkit
- Contributing: See CONTRIBUTING.md for guidelines on how to contribute
- Developer Documentation: See DEV.md for development setup and workflow
- License: MIT License - feel free to contribute or fork!