Hey everyone! 👋 As someone who lives for a good side-by-side comparison, I wanted to share our team's recent journey migrating from Jira to Linear. We were a mid-sized marketing tech team using Jira Cloud for project and bug tracking, but the complexity and overhead for our workflows had become a real drain. We craved that sleek, focused developer experience everyone raved about with Linear.
The actual data migration was... surprisingly straightforward? The key was accepting that this was a *re-platforming*, not a 1:1 lift-and-shift. We had to rethink how our work lived in the new system.
**Our Data Migration Approach:**
We focused on moving active context, not archive. Hereβs what we prioritized:
* **Active Sprints & Recent Backlog:** We used Linear's built-in Jira importer for issues. It handled core fields (title, description, status, assignee, labels) well.
* **Attachments & Comments:** The importer brought these over, which was a huge relief for continuity.
* **The Tricky Bits (Where We Had to Be Methodical):**
* **Custom Fields:** Jira custom fields (like our "Campaign Tier" or "QA Score") don't map automatically. We pre-created matching labels in Linear and used them during import.
* **Epics & Complex Hierarchies:** Linear's structure of Teams, Projects, and Cycles is different. We spent a week mapping our old Jira projects/epics to new Linear Teams and Projects. This was the most crucial planning step.
* **Workflow States:** We audited our Jira statuses and simplified them for Linear's cleaner start/complete model. "In Review" and "In QA" became a single "In Progress" with a "Review" label.
**Cutover Plan & Timeline:**
We ran a two-week parallel trial with our Engineering squad first, which gave us the confidence to go for a "big bang" cutover for the rest of the team.
* **Week 1-2:** Pilot group runs all new work in Linear, referencing Jira for old context. Finalize our field/label mappings.
* **Week 3 (Cutover Week):**
* **Monday:** Use Linear's importer on our active projects. All-hands to walk the team through the new workflow.
* **Tuesday-Thursday:** **Jira is locked for edits.** All new work *must* go into Linear. We had "sherpas" available for questions.
* **Friday:** Jira becomes read-only archive. The switch is complete.
**How Long It *Actually* Took:**
The technical import took an afternoon. But the real timeline was in the preparation and adaptation.
* **Planning & Mapping:** 3 weeks (part-time for a core group of 3)
* **Pilot Phase:** 2 weeks
* **Company-wide Cutover & Adoption:** 1 intense week, with productivity back to normal by the end of week 2 post-cutover.
The biggest surprise wasn't the tool itself, but how the migration forced us to scrutinize and shed outdated processes. Our cycle times have improved noticeably because the tool nudges us toward simpler, more focused workflows. The automation and saved views in Linear feel like magic compared to Jira's bulky setup.
Has anyone else made this switch? I'd be especially curious to hear how you handled migrating historical data for compliance vs. our "active context only" approach!
test everything twice
I'm a data platform lead at a 150-person SaaS company, and we've been running Linear in production for engineering and Jira Cloud for our non-tech teams for about two years now, after migrating a small product team off Jira.
**Migration & Configuration Effort:** The actual data import for active issues is low effort; Linear's importer works. The real work, about 20-40 hours for a team, is in redefining workflows. Jira's custom fields and complex screens don't transfer. You rebuild them as Linear labels, cycles, and states, which is simpler but requires deliberate design.
**Pricing & Total Cost:** Linear's pricing is simple, at $12/user/month for its full platform. Jira Cloud's Standard tier starts around $8.15/user/month but can escalate quickly with add-ons for approvals, advanced roadmaps, or extra automations, easily pushing effective cost to $15-20/user/month for a configured setup.
**Where Each Breaks:** Jira becomes a burden for fast-moving product teams needing daily clarity; the noise and configuration overhead slow down triage and planning. Linear breaks down if you need granular, role-based permissions, detailed audit trails, or complex approval workflows out-of-the-box; it's designed for trust and autonomy.
**Integration & Ecosystem:** Jira has a vast, enterprise-ready marketplace for connecting to CRM, ITSM, or legacy systems. Linear's integrations are curated, focusing on developer tools (GitHub, Figma, Sentry). If your workflow depends on deep Slack or ServiceNow syncs, Jira still holds an edge.
I'd recommend Linear for tech-centric product teams that value speed and clarity over process control, and Jira for teams that require structured governance, cross-departmental workflows, or have complex compliance needs. To make a clean call, tell us the size of your non-engineering user base and how rigid your existing approval processes are.
Stay grounded, stay skeptical.
Totally agree on the re-platforming mindset being key. We also hit that wall with custom fields.
One thing we did was audit our Jira field usage first - so many "Campaign Tier" type fields were used in less than 5% of recent tickets. We moved only the high-use ones into Linear labels. The rest we documented and archived; most teams didn't miss them.
Your point about attachments and comments is a big one. That continuity saved us so much time in handoffs. Did you find any weird formatting gotchas in the comment migration? We had some HTML from old Jira comments that needed a quick cleanup pass after the import.
Oh man, the comment formatting was a whole other adventure for us. We had the same HTML mess, especially from really old Jira tickets. Links usually survived, but any inline images or weird table markup from early bug reports just turned into plain text gibberish.
What saved us was doing a *targeted* cleanup instead of trying to fix everything. We only scrubbed comments on issues that were actively in progress or recently reopened. For the ancient, closed stuff? We left it as-is and just told the team to check the original Jira link if they ever needed perfect fidelity. It wasn't worth the engineering time.
Did you automate your cleanup pass at all, or was it manual?
That audit step is critical, and a lot of teams skip it to their own detriment. It forces you to confront the cruft built up over years. We made a similar rule: if a custom field wasn't used in the last 90 days, it didn't make the trip. The only exception was for fields tied to active, long-running compliance requirements.
It also revealed how many fields were just workarounds for poor process. One "Urgency Level" field existed solely because teams ignored the standard priority field. We killed it in the migration and enforced the native priority system instead.
βAF
Yes! That discovery of workaround fields is such a lightbulb moment. We found a "Release Train" field that was just duplicating the sprint info because the old board view hid it. Migrating forced us to fix the view instead of band-aiding it with another field.
Your 90-day rule is smart. We did something similar but also checked for seasonality, like annual compliance audits. One field only lit up every November, but it was mission-critical when it did.
That's a great point about seasonal fields. It makes me wonder, how did you handle documenting that November-only field? Did you just keep a separate checklist for the team, or is there a way to tag it in Linear so it doesn't clutter the view but people know where to look when the time comes?
Great question. For our seasonal compliance checklist, we created a dedicated "Audit" project in Linear and archived it once the work was done each year. The project description holds the master checklist and any links to the old Jira data. When November rolls around, we just un-archive it. That keeps it out of the active project list but instantly findable. The key was making the naming convention obvious so everyone knew where to look.
Stay constructive
Spot on about the custom fields. That's where most migrations stall trying to force a perfect map.
You mentioned pre-creating labels for fields like "Campaign Tier". Did you find that a 1:1 label-to-field match actually worked, or did you need to consolidate values? We had a "Severity" field in Jira with 5 options, but Linear's 4-color label system forced us to collapse two of them. Sometimes the new tool's constraints clean up the old mess for you.
Also, double-check that label import. The Jira importer sometimes pulls them in alphabetically, which can scramble your intended priority order if you're using labels for workflow stages.
Integration is not a project, it's a lifestyle.
Totally ran into that label ordering gotcha. We had workflow stage labels like "Backlog -> Design -> Dev" and the alphabetical import put them as "Backlog, Dev, Design". Had to manually reorder them post-import.
On consolidating values, we did the opposite for a "Platform" field - Jira had just "Web" and "Mobile", but we split "Mobile" into "iOS" and "Android" labels in Linear. The constraint forced us to be more precise, which was a win.
Have you seen any patterns in which field types are better off *not* becoming labels? We found date fields and free-text fields just created label sprawl.
Data is the new oil - but it's usually crude.
Oh yeah, the label ordering thing is such a sneaky trap. We did a dry run import for that exact reason. Spotted the scramble and wrote a tiny script to reorder them via Linear's API before the real migration.
> which field types are better off *not* becoming labels?
Absolutely agree on dates and free-text. I'd add numeric custom fields, like "Story Points" or "Estimated Hours." Those should stay as a number field in Linear, not a label. Trying to label every possible point value is a disaster.
The other category we kept as native fields were people fields - assignee, reporter, QA approver. Labels for those just don't give you the same @-mention or filtering power.
Keep deploying!
That re-platforming mindset is so key. It's tempting to try and recreate every single Jira quirk in Linear, but that misses the whole point of migrating.
>We pre-created matching labels in Linear
We did this too, but learned you need a rule for *when* a custom field becomes a label. We decided a field only became a Linear label if we actively filtered or grouped by it. If it was just informational data (like a tracking ID from another system), we moved it into the issue description instead. Saved us from creating dozens of useless labels.
The built-in importer is great for the basics, but you're right to be methodical on the custom stuff. Did you have any fields you decided to just... drop entirely?
The scripted reorder is smart; we did something similar but discovered API rate limits can bite you if you're bulk-adjusting labels across thousands of existing issues. Had to implement exponential backoff in the script.
On numeric fields staying as native fields, there's an edge case with story points if your team uses a modified Fibonacci scale. Linear's number field allows any integer, but if you want to enforce a specific set of values (like only 1,2,3,5,8,13), you need to handle that with a custom label set anyway. We ended up using a label for that specific case because the validation was more important than the numeric property.
People fields are a great example. Trying to label assignees not only loses @-mention functionality, but also breaks Linear's built-in "Assigned to me" filter, which teams rely on heavily.
Straightforward with the built-in importer, huh? I've heard that tune before. It's all fun and games until you hit the custom field mapping and realize the "simple" part was just moving the stuff Linear already understands.
>The key was accepting that this was a *re-platforming*, not a 1:1 lift-and-shift.
This is the real cost they don't put on the pricing page. Sure, you can move titles and descriptions. But if you've spent years building a taxonomy in Jira, you're now spending weeks, maybe months, of team effort to deconstruct and rebuild it. That's not a migration, that's a full-blown process re-engineering project disguised as a tool switch. Did you factor that labor into your TCO, or did it just get absorbed as "team onboarding"?
βDW
You're spot on about the re-platforming mindset, but calling the data migration "surprisingly straightforward" feels misleading for anyone with substantial Jira customization. The built-in importer gives a false sense of security.
Your approach of focusing on active context is the only sane one, because Linear's data model is fundamentally different. That "Campaign Tier" custom field you mentioned - mapping it to a label works until you need to report on it or use it in automation. Labels are a poor substitute for structured data when you need to enforce values or do bulk operations.
The real difficulty isn't the technical move of titles and comments. It's the silent tax of losing years of workflow investment and having to manually reconstruct logic in a new, more constrained system. Did your team actually measure the velocity dip during this "rethinking" period? Ours was 30% for nearly two sprints while everyone learned the new mental model.