Risk Register Template for Software Projects
Updated: 2 days ago
Almost every risk register I've inherited had the same disease: forty rows, every one marked Open, nothing touched in two months, and the risk that actually sank the project nowhere on the list. That's the trap worth saying out loud — an unmaintained register is worse than no register, because it launders "we stopped thinking about risk" into "we have a process." A stale spreadsheet gives everyone permission to feel covered.
A register that earns its place does the opposite. It names the handful of things that could genuinely derail the project — with a real owner and a real mitigation on each, not "monitor closely" — and it gets pruned every week. The artifact is simple. The discipline is keeping it short and alive.
The Template
# Risk Register: [Project]
Last updated: YYYY-MM-DD
Owner: [Name]
| ID | Risk | Category | Likelihood | Impact | Score | Status | Mitigation | Owner | Updated |
|----|------|----------|------------|--------|-------|--------|------------|-------|---------|
| R1 | [Specific risk] | [Type] | H/M/L | H/M/L | [calc] | Open | [Action] | [Name] | [Date] |
A table. Each row is a risk. The columns are:
ID: stable identifier (R1, R2, ...)
Risk: specific description, not abstract
Category: technical, schedule, resource, external, etc.
Likelihood: how likely it is to happen
Impact: how bad it would be if it did
Score: rough product of likelihood and impact (helps prioritize)
Status: Open, Mitigated, Closed, Realized
Mitigation: what we're doing about it
Owner: specific person responsible
Updated: last time someone touched this row
Risk Description: Specific, Not Abstract
The single biggest predictor of a useful risk entry: specificity.
Bad: "Schedule risk."
Good: "Vendor SSO integration may take 2-3 weeks longer than scoped because vendor API documentation is incomplete."
Specific risks are actionable. Abstract risks are anxieties.
The test: can a reader who doesn't know the project understand what could go wrong and roughly how bad it is?
Categories
Common categories for software projects:
Technical: implementation challenges, integration risks, performance unknowns
Schedule: dependencies, sequence risks, capacity issues
Resource: headcount, expertise, availability
External: vendor, market, regulatory
Quality: test coverage gaps, complex flows, edge cases
Operational: runbook gaps, on-call readiness, infrastructure
Pick the smallest set of categories that lets you group risks meaningfully. Five to seven is workable. Twenty is unwieldy.
Likelihood and Impact
Three buckets for each: High, Medium, Low.
Likelihood:
High: more likely than not to happen
Medium: plausible; specific concern
Low: possible but unusual
Impact:
High: significant impact on goals, timeline, or quality
Medium: noticeable impact; recoverable
Low: small impact; absorbable
Resist the urge to add a fourth bucket. The precision isn't earned by guesswork.
Score
Score = Likelihood × Impact, using numeric values (H=3, M=2, L=1).
So:
HH = 9 (top priority)
HM or MH = 6
HL, ML, or MM = 4 or 3
LL = 1 (bottom priority)
Score is a focusing tool, not a number to take precisely. The point is differentiating "we should be doing something about this" from "we should be aware of this."
Status Lifecycle
A risk moves through states:
Open: active concern, mitigation in progress
Mitigated: mitigation in place, residual risk lower
Closed: no longer a concern (passed, prevented, no longer relevant)
Realized: the bad thing happened; it's now an issue, not a risk
Status changes are how the register stays useful. A register that's all "Open" for six months is a register no one's maintaining.
Mitigation Strategies
Five basic strategies for any risk:
Avoid: restructure the project to make the risk impossible
Reduce: lower the likelihood or impact
Transfer: make it someone else's problem (vendor, insurance, contract)
Accept: acknowledge but don't act (for low-score risks or when mitigation costs more than the risk)
Monitor: watch for it; act if it materializes
Most risks get Reduce or Monitor. Avoid is powerful but often impractical. Accept is honest — not every risk warrants action.
The Owner Field
Each risk has a single named owner. The owner:
Is responsible for the mitigation
Reports on status
Updates the register entry
Escalates if the risk worsens
Without owners, risks drift. The owner doesn't have to do all the mitigation work themselves; they're responsible for the work happening.
Cadence: Keeping It Alive
A risk register that's filled out at kickoff and never touched is theater.
Working cadence:
Weekly: lead reviews top-scoring risks, ensures mitigations are active
Bi-weekly: team reviews full register, adds new risks, closes obsolete ones
At milestones: broader review with stakeholders, including escalations
At incidents: retrospective adds risks that were missed before
If the register isn't reviewed regularly, it goes stale within weeks.
Adding New Risks
Risks emerge throughout the project. Adding them is normal.
Triggers for adding:
Something surprised the team this week
A new constraint appeared
A planned mitigation isn't working
A near-miss happened
The pattern: add the risk immediately when noticed, score it, assign an owner. Don't wait for the next scheduled review.
Common Failure Modes
The graveyard. Risks added once, never closed, never updated. Visit a 6-month-old register and most entries are stale.
The kitchen sink. Every possible concern listed. 80 risks; team can't focus on which ones matter.
The optimistic register. All risks marked Low/Low. Reality is more textured.
The owner-less risk. No specific person responsible. Risk drifts.
The unowned mitigation. Risk has owner, but "monitor closely" isn't a mitigation.
What to Avoid Putting in the Register
A few things that look like risks but aren't useful entries:
Generic worries. "Things might go wrong." Add specifics or skip.
Known issues. Things that are already happening are issues, not risks. Track separately.
Wishes. "We need more engineers." Capture as a constraint or ask, not a risk.
Excuses. "Risks of insufficient stakeholder engagement." Read as: someone's about to ignore feedback.
A Worked Example
# Risk Register: Workspace Switching Project
Last updated: 2026-05-26
Owner: Sam (Eng Manager)
| ID | Risk | Category | L | I | Score | Status | Mitigation | Owner | Updated |
|----|------|----------|---|---|-------|--------|------------|-------|---------|
| R1 | Deep-link preservation may have edge cases (e.g., session-scoped URLs) | Technical | M | M | 4 | Open | Spike in Week 1 to enumerate cases | Pat | 05-26 |
| R2 | Okta vendor API rate-limits during testing | External | M | H | 6 | Open | Vendor support engaged; fallback to mock for parallel work | Sam | 05-26 |
| R3 | Browser back-button behavior may confuse users | Quality | M | M | 4 | Open | User testing in Week 7 | Riley | 05-26 |
| R4 | Pat on-call rotation Week 6 reduces capacity | Resource | H | L | 3 | Mitigated | Confirmed coverage; alex covering for Week 6 | Sam | 05-20 |
| R5 | Permissions edge case (user loses access mid-session) | Technical | L | H | 3 | Open | Spike planned for Week 3 | Pat | 05-26 |
| R6 | Analytics event schema may conflict with existing | Technical | L | M | 2 | Closed | Reviewed and aligned with analytics team | Jordan | 05-15 |
Six risks. Some open, one mitigated, one closed. Each has an owner. Updates are tracked. A reader scanning the list can see the project's top risks and who's handling them.
Sharing the Register
The risk register should be visible to:
The project team
The project sponsor
Adjacent teams whose work depends on or affects this project
Sharing serves two purposes: visibility, and accountability. A register reviewed by stakeholders gets maintained more honestly than one only the team sees.
For some risks (sensitive personnel, vendor confidentiality), restrict to a smaller audience. The default should be broad visibility.
Register Templates by Project Size
Small project (< 1 month): 3-5 risks total. Inline in the project plan.
Medium project (1-3 months): 5-15 risks. Standalone document, reviewed bi-weekly.
Large project (3+ months): 10-30 active risks. Standalone document, reviewed weekly, with escalation paths for high-score risks.
Program of projects: rolled-up register across sub-projects, with cross-cutting risks at the program level.
Match the formality to the project scale.
A risk register works best next to an agreed scope, and the Project Charter Template for Technical Initiatives is where that scope gets written down.
Key Takeaway
A risk register lists specific risks with likelihood, impact, mitigation, and owner. Score = likelihood × impact, used to focus attention. Update regularly — weekly for top risks, bi-weekly for the full register. Close risks as they pass or get mitigated; don't accumulate. Each risk has a single named owner. Avoid generic worries; capture specific risks that someone can act on. The register exists to focus attention on what could derail the project, not to document every possible concern.


