About this tool
See how many jobs and CI minutes your build matrix dimensions really generate — with GitHub's 256-job limit checked — before you commit.
This estimator computes how many jobs a CI build matrix really generates — the cartesian product of every dimension's values, minus exclude entries, plus include entries that add new combinations — and converts that into runner minutes per run, per day and per 30-day month. It checks the result against GitHub Actions' hard limit of 256 jobs per matrix and GitLab's 200-job parallel:matrix cap, and models wall-clock time under a max-parallel constraint.
Open CI Build Matrix Explosion Estimator on AltFTool — it loads instantly in your browser.
Paste your code or data sample into the workspace.
Pick the format, conversion, or analysis you need.
Copy the polished result straight back into your project.
Product of dimensions minus excludes plus additive includes — the same arithmetic GitHub applies.
Flags matrices that would fail GitHub's 256-job cap or exceed GitLab's 200-job matrix limit.
Separates billable runner minutes from wall-clock latency under max-parallel.
One job per combination of dimension values — the sizes multiplied together. A matrix with 3 operating systems and 4 language versions creates 12 jobs; exclude entries subtract matching combinations and include entries that match nothing add extra jobs on top.
256 jobs per workflow run. If the matrix would generate more, GitHub fails the workflow immediately rather than running a subset, so a 4 x 4 x 4 x 4 matrix (256) passes while adding a single include entry (257) breaks it.
No — every job still runs, so billable runner minutes are identical. max-parallel only limits how many jobs run at once, which stretches wall-clock time; teams use it to keep a big matrix from saturating self-hosted runners or concurrency limits, not to save money.
Cut whole dimensions before trimming values: testing 3 OSes only on the latest language version and one OS for older versions via include entries often cuts jobs by two-thirds. If you find yourself excluding more than half the combinations, invert the approach and list the wanted combos directly with include.