Jira Copy Issue Key
A Chrome extension that adds a convenient “Copy Issue Key” button next to Jira’s copy link button, allowing you to quickly copy just the issue key (e.g., “SLIDES-1636”) to your clipboard.
Features
- 🔑 One-click copying of Jira issue keys
- 🎯 Works everywhere - both issue detail pages and modal dialogs
- ⚡ Dynamic injection - automatically appears when navigating between issues
- ✨ Seamless integration - matches Jira’s native button styling
- 🔄 Smart detection - uses multiple methods to find the issue key
- ✓ Visual feedback - shows confirmation when key is copied
Installation
From Source (Development)
- Clone or download this repository
git clone <repository-url>
cd jira-copy-issue-key
- Open Chrome Extensions page
- Navigate to
chrome://extensions/
- Or click the three-dot menu → More tools → Extensions
- Enable Developer Mode
- Toggle the “Developer mode” switch in the top-right corner
- Load the extension
- Click “Load unpacked”
- Select the
jira-copy-issue-key directory
- The extension should now appear in your extensions list
- Verify installation
- The extension icon should appear in your extensions toolbar
- Navigate to any Jira issue page to test
Usage
On Issue Detail Pages
- Navigate to any Jira issue page (e.g.,
https://your-domain.atlassian.net/browse/PROJ-123)
- Look for the 🔑 button next to the “Copy link” button in the issue header
- Click the 🔑 button to copy the issue key
- The button will show a ✓ checkmark briefly to confirm the copy
On Board Modal Dialogs
- Open your Scrum or Kanban board
- Click any issue to open the modal dialog
- The 🔑 button will appear next to the copy link button
- Click to copy the issue key
Keyboard Shortcut
After clicking the button, simply press Cmd+V (Mac) or Ctrl+V (Windows/Linux) to paste the issue key anywhere.
How It Works
The extension uses multiple strategies to reliably extract issue keys:
- URL Parsing - Extracts from
/browse/KEY-123 URLs
- Document Title - Parses the page title for issue keys
- DOM Metadata - Checks for Jira’s internal data attributes
- DOM Content - Searches breadcrumbs and headers as fallback
The button injection system:
- Uses MutationObserver to detect dynamic content changes
- Implements debouncing (300ms) to prevent excessive injections
- Runs polling (every 3 seconds) as a safety net
- Listens for SPA navigation events (back/forward buttons)
Compatibility
- Chrome/Edge: Manifest V3 (Chrome 88+, Edge 88+)
- Jira: All Atlassian Cloud Jira instances (
*.atlassian.net)
- Jira Products: Software, Service Desk, Work Management
Project Structure
jira-copy-issue-key/
├── manifest.json # Extension configuration
├── icons/ # Extension icons
│ ├── icon16.png # Toolbar icon
│ ├── icon48.png # Extensions page icon
│ └── icon128.png # Chrome Web Store icon
├── content/ # Content scripts
│ ├── content.js # Entry point
│ ├── issue-key-finder.js # Issue key extraction logic
│ ├── button-injector.js # Button creation & injection
│ ├── observers.js # MutationObserver setup
│ └── styles.css # Minimal custom styles
└── README.md # This file
Development
Testing Locally
- Make changes to the code
- Go to
chrome://extensions/
- Click the refresh icon on the extension card
- Reload your Jira page to test changes
Debugging
- Open Chrome DevTools (F12) on any Jira page
- Go to the Console tab
- Look for logs prefixed with
[Jira Copy Key]
- Check for any errors in red
Key Files to Modify
- Button styling: Edit
content/styles.css
- Selectors: Modify
COPY_LINK_SELECTORS in button-injector.js
- Issue detection: Add methods to
issue-key-finder.js
- Timing: Adjust
DEBOUNCE_DELAY and POLL_INTERVAL in observers.js
Troubleshooting
- Check if you’re on a Jira page - The extension only runs on
*.atlassian.net domains
- Look for console errors - Open DevTools and check for errors
- Verify issue key detection - The button won’t appear if no issue key is found
- Try refreshing the page - Sometimes a hard refresh (Cmd+Shift+R) helps
Copy doesn’t work
- Check browser permissions - Make sure the extension has clipboard permissions
- Try the fallback - The extension uses
execCommand as a fallback if the Clipboard API fails
- Check for conflicts - Other extensions might interfere with clipboard operations
- Report as a bug - This shouldn’t happen due to deduplication logic
- Include details - Which page, what actions led to duplication
Privacy
This extension:
- ✅ Runs entirely locally (no data sent to external servers)
- ✅ Only accesses Jira pages you visit
- ✅ Only reads issue keys from the page
- ✅ Only writes to clipboard when you click the button
- ❌ Does NOT collect analytics
- ❌ Does NOT track your browsing
- ❌ Does NOT store any data
License
MIT License - Feel free to modify and distribute
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly on real Jira instances
- Submit a pull request
Roadmap
Future enhancements could include:
Support
If you encounter issues:
- Check the Troubleshooting section
- Review console logs for errors
- Create an issue with details about your Jira instance and the problem
Made with ❤️ for Jira users who want to quickly copy issue keys