Decision Matrix: Free Weighted Scoring Tool
Compare options against weighted criteria with numeric or letter-grade scales. Auto-calculated scores, color-coded cells, CSV export.
What Is the Decision Matrix?
The Decision Matrix is a weighted scoring tool for comparing several options against criteria you define. I keep one open whenever I am stuck between two or three real choices — apartments, job offers, hosting providers — because writing the trade-offs into a grid forces me to be honest about which factors actually matter. Each criterion has its own weight and scale (numeric like X/10 or letter grades A+ through F), and the tool computes a weighted final score per option as you type. Cells turn red when the score is low and green when it's high, so you can scan the matrix at a glance.
Key Features
- Weighted criteria — each row has a Weight value from 1 to 999. Weights convert to percentages of the total automatically, shown in small text under each weight cell.
- Per-criterion scale type — every criterion picks its own scale: Numeric (with a configurable max from 1 to 1000) or Letter Grade (A+ through F).
- Letter-grade support — when you choose Letter Grade for a row, the score cell becomes a dropdown with A+, A, A-, B+, B, B-, C+, C, C-, D+, D, D-, and F. Letters map to internal values from 1.0 (A+) down to 0.0 (F).
- Color-coded cells — score backgrounds shift from red (worst) through orange to deep green (best), updating live as you change values. Empty cells stay transparent.
- Output format toggle — switch the final-score row between Numeric Score (0-100) and Letter Grade (A+ to F). Internal calculation is identical; only the presentation changes.
- Column notes — click the sticky-note icon next to any option name to record longer thoughts about that option (pros, cons, anything that does not fit a single cell).
- Cell notes — every score cell has its own sticky-note icon for justifying a specific cell value ("scored 7/10 because of the lease length").
- CSV export — exports the full matrix (criteria names, weights, scales, scores, and the final score row) as
decision-matrix.csv. CSV is a Supporter feature. - Copy as plain text or Markdown table — get a fixed-width text table for terminal output and plain email, or a Markdown table for GitHub issues, Notion, or chat. Markdown is a Supporter feature.
- Auto-save to browser storage — the entire matrix is saved to
localStorageafter every edit. Closing the tab and coming back the next day brings it back exactly as you left it.
How to Use the Decision Matrix
Step 1: Add Your Criteria (the rows)
The tool starts with three blank criterion rows and two option columns. Click the criterion-name field on the left of each row and type what you are evaluating against — "Monthly cost", "Commute time", whatever applies. Use the + Add Criterion button in the settings card to add more rows (up to 20). The X button on the right of each row removes that criterion.
Step 2: Set Weights and Scales
In the Weight column, type a number from 1 to 999 for each criterion. The percentage shown below the input updates as you change weights — if all three rows have weight 1, each shows 33%. Bump a weight to 3 and that row jumps to 60%. The Scale column has a dropdown to choose Numeric or Letter Grade. For Numeric, type the maximum value into the small box on the right (defaults to 10 — change it to 5 for an X/5 scale, 50 for X/50, or anything else up to 1000). Switching scale types clears all scores in that row.
Step 3: Add Your Options (the columns)
Each option becomes a column. Click the input at the top of an option column and type its name — "Apartment A", "Vendor B", "Plan 3". Use + Add Option to add more columns (up to 15). The X icon at the top right removes a column. Click the sticky-note icon next to the option name to open the Column Notes dialog and record longer pros/cons.
Step 4: Score Each Cell
Move through the matrix and fill in scores. Numeric rows accept decimals between 0 and the scale max — type 7.5 in a 0-10 row, or 42 in a 0-50 row. Letter-grade rows show a dropdown — pick a grade. As you type, cells colour-shift from red to green and the Final Score row at the bottom recalculates. Empty cells are skipped — they do not push an option's score down — so leave a cell blank if a criterion does not apply. Click the small sticky-note icon inside any cell to attach a note explaining that specific score.
Step 5: Read the Result and Export
The Final Score row shows each option's weighted average. By default it shows numbers from 0-100; flip the Output Format dropdown to Letter Grade to see A+ through F. The action card offers five buttons: Copy Result (a ranked list), Copy as Plain Table (fixed-width text), Copy as Markdown (Supporter), Export CSV (Supporter), and Clear.
Practical Examples
Choosing Between Job Offers
Say you have two offers and want to compare them on five dimensions. Set criteria as Salary (weight 4), Equity (weight 2), Commute (weight 3), Work Style (weight 3), and Manager (weight 5), all numeric on 0-10. Score Offer A as Salary 8, Equity 6, Commute 4, Work Style 9, Manager 7. Score Offer B as Salary 9, Equity 4, Commute 9, Work Style 6, Manager 5. The final scores work out to roughly 70 for Offer A and 67 for Offer B — close enough that you might want to use cell notes to capture nuance the numbers cannot hold.
Apartment Hunting With Letter Grades
Some judgments are easier as letter grades than numbers. For an apartment search, set Location (weight 5, Letter Grade), Price (weight 4, Numeric 0-10 where higher means cheaper), Layout (weight 3, Letter Grade), and Noise (weight 2, Letter Grade). Adding a column per apartment makes the colour-coding very readable — A and B grades shade green, C is yellow-orange, and D-F shade red. Switch the Output Format to Letter Grade so the final row shows A-F instead of numbers.
Comparing Three Cloud Providers
Pick five criteria — Price, Region coverage, Compliance certifications, SLA quality, and Support — set weights based on what matters for your workload, and score each provider on a 0-10 scale. The Markdown export pastes straight into a Notion doc or GitHub issue when sharing with a teammate.
Tips and Best Practices
Set weights last, not first. It is tempting to set weights up front, but I get more honest results by listing all criteria with weight 1, scoring everything, then adjusting weights. If switching a weight from 2 to 5 swings the result dramatically, that means the criterion was always the deciding factor — making the weight explicit just exposes it.
Use cell notes for the asterisks. A score of 7 with the note "would be 9 if the lease were 12 months instead of 6" is much more useful three weeks later than a bare 7. The matrix forgets context fast; the notes do not.
Mix scale types when it helps. No rule says all rows have to be on the same scale. Use Letter Grade for subjective criteria (vibe, design, fit), Numeric 0-100 for percentages, and Numeric 0-10 for everything else. The weighting math handles the conversion correctly.
Higher = better, always. The colour coding and final score both assume larger scores are good. If your criterion is something you want less of (price, commute time, error rate), invert it: a low price gets a high score. Otherwise the green/red colours run backwards.
Leave a cell blank when it does not apply. The final-score formula skips empty cells and renormalizes against the weights of the criteria that do have scores. This is more accurate than guessing at a score for irrelevant criteria — say, scoring "battery life" for a desktop computer.
Common Issues and Troubleshooting
Cells lose their values when I change a row's scale. Switching a row between Numeric and Letter Grade clears all scores in that row. Letter-grade dropdowns and numeric inputs cannot share raw values cleanly. If you need both views of the same data, duplicate the row before changing scales.
The Final Score is much lower than I expected. The score is a weighted average, not a sum, so it cannot exceed the maximum of any one cell. If three cells are 9/10 and two are 5/10, the average lands somewhere between those values, not above 9.
A column says "--" instead of a score. That option has no scored cells yet, or every cell is blank. Add at least one score and the final score will populate.
Numeric input feels stuck after typing. The score and weight inputs only commit on blur (when the field loses focus). Tab out or click away to commit. This prevents the colour-coding and final score from re-rendering on every keystroke as you type a multi-digit number.
Adding more rows or columns is blocked. The matrix is capped at 20 criteria and 15 options. Past that point the Add buttons disable and a toast shows. Realistically, more than 8-10 of either makes a matrix harder to read — if you hit the limits, consider whether some criteria can be merged.
Privacy and Security
The Decision Matrix runs entirely in your browser. Your criteria names, option names, scores, and notes are stored only in localStorage under the key glyph_decision_matrix. Nothing is sent to a server. If you are evaluating sensitive options — job offers, vendor pricing, personal decisions — that information stays on your device and disappears when you clear browser storage.
Frequently Asked Questions
How does the weighted score get calculated? Each cell value is normalized to a 0-1 range using its row's scale (a 7 on a 0-10 scale becomes 0.7; an A- becomes 0.9). That normalized value is multiplied by the row's weight, summed across all scored rows for that option, then divided by the total weight of the rows that have scores. Empty cells are skipped on both sides of the division. The result is multiplied by 100 for numeric display, or mapped to a letter grade.
What do the letter grades convert to internally? A+ = 1.0, A = 0.95, A- = 0.9, B+ = 0.85, B = 0.8, B- = 0.75, C+ = 0.7, C = 0.65, C- = 0.6, D+ = 0.55, D = 0.5, D- = 0.45, F = 0.0. The same thresholds run in reverse when the output format is Letter Grade.
Why do empty cells not lower the score? The formula divides only by the weights of cells that have a value. Skipping a row that does not apply keeps the comparison fair. If you would rather an empty cell count as zero, type 0 explicitly — that is treated as "scored zero", not "not scored".
What is the difference between Copy Result, Copy as Plain Table, and Copy as Markdown? Copy Result gives a ranked list (#1 Option A: 78.5). Copy as Plain Table gives a fixed-width text table with rows for each criterion and a final-score row — handy for plain-text email or terminal output. Copy as Markdown gives a | col | col | table — paste into GitHub, Notion, or any Markdown editor. Markdown copy and CSV export are Supporter features.
Can I save multiple separate matrices? Yes. The matrix auto-saves to localStorage on every change, so closing and reopening restores it. For named saves between several distinct decisions, the Presets panel below the matrix saves the current state under a name (Presets is a Supporter feature).
Can I share a matrix with someone else? Matrix data lives only in your browser. To share, use Copy as Markdown or Export CSV (Supporter), then paste or send the file. The recipient cannot edit your live matrix from your browser.
Is there an undo? The matrix itself does not have an undo button, but the History panel below the matrix records snapshots after each significant change. Clicking a history entry restores that state. History is a Supporter feature.
What is the maximum size of a matrix? 20 criteria (rows) and 15 options (columns) — that is 300 score cells plus all the notes.
Why is my Numeric scale capped at 1000? Above 1000 the scale gets hard to use — too much typing, too little resolution per percent. If you need a finer or larger scale, scale the values yourself before entering them.
Related Tools
The Coming Soon: Random Picker is the lazier cousin of this tool — for choices small enough you do not want to think about them. The Coming Soon: Project Planner covers timelines and dependencies once a decision is made. The Coming Soon: Mind Map is better for the brainstorming phase before you have firm options to compare. For data-heavy comparisons, the Coming Soon: CSV Data Suite handles import, filter, and sort of larger spreadsheets.
Try Decision Matrix now: Decision Matrix