Risks
The risk matrix places each risk of a register on a heat map by likelihood and impact, on your own scales — three by three to six by six, scored by product, sum or a grid you set — with bands, the action each calls for, and the organisation's appetite drawn as a line.
Inherent, residual and target scores, with arrows for the treatment path or the movement since the last review; drag a risk or use the keyboard to re-score it, with undo. The register beside it filters by cell, band, category or owner, and flags reviews that are overdue, owners missing and risks above appetite. Out as CSV, JSON or an SVG of the heat map.
An enterprise risk register
Sixteen risks of a fictional distribution business on a 5 × 5 grid with an appetite of 9, arrows from inherent through residual to target. Drag a risk to re-score it, or choose it and use Shift with the arrow keys. Choose a cell to filter the register to it.
Get the code
<script src="/assets/bmx-components.min.js"></script> <bmx-risk-matrix id="rm-register" label="Enterprise risk register, Q3" today="2026-10-13" arrows="treatment" style="inline-size: 100%"></bmx-risk-matrix>
For the board: counts and movement
The same register, read only, as a board paper shows it: how many risks are in each cell, with arrows for how each has moved since the last review, and the heat map as an SVG to drop into the paper.
Get the code
<script src="/assets/bmx-components.min.js"></script> <bmx-risk-matrix id="rm-board" label="Board view" today="2026-10-13" display="counts" arrows="movement" readonly show-register="false" style="inline-size: 100%"></bmx-risk-matrix>
Your own scales
A project's risks on a 4 × 4 grid with its own words for likelihood and impact, each cell's rating set directly rather than multiplied, and three bands.
Get the code
<script src="/assets/bmx-components.min.js"></script> <bmx-risk-matrix id="rm-project" label="Warehouse move, project risks" today="2026-10-13" style="inline-size: 100%"></bmx-risk-matrix>