CVSS v3.1 Calculator

Score a software flaw out of ten the way the industry standard does, from how it is reached and what it exposes. That base score describes the flaw and nothing else — whether the machine it sits on matters to you is what the environmental metrics are for, and almost nobody fills them in.

How to use it

Paste a vector string and every box fills itself in; change a box and the string is rewritten to match, so you can arrive from either direction.

  1. Paste a vector string, or answer the questions A string that begins CVSS:3.1 fills in every box. If you do not have one, work down the list instead — the answers are written as plain descriptions rather than single letters.
  2. Read the base score first It describes the flaw on its own, with no assumption about where it is installed. This is the number an advisory quotes, and it is the only one two people will agree on without discussing anything else.
  3. Then say what the machine is worth to you Switch to the full set and answer three more questions about the affected system. That is what turns a published number into a decision about your own week, and it is the part almost everybody skips.
Full instructions
In depth

Scoring a vulnerability so two people get the same number

CVSS is a standard way to rate how serious a security flaw is. This article explains each metric group, walks through a real scoring session with concrete values, and covers the details that make scores disagree between calculators or between people.

Screenshot: Version 3.1, and it says so
Version 3.1, and it says so as it appears when the page opens.

What the score measures and what it does not

A CVSS score measures how bad a flaw is, not how urgent it is for you. A remote code execution bug on a test server that holds nothing important scores high because the flaw itself is severe. Whether it deserves your time right now is a separate question that depends on what the server does in your world. Keeping those two judgements apart is the whole point of the system.

The calculator on this page uses version 3.1 of the standard. It follows the published equations exactly, including a special rounding step that ordinary rounding gets wrong. It does not look anything up. There is no vulnerability database here and no way to search one. You describe the flaw by answering questions, and the page does the arithmetic.

Getting started with a vector string or the dropdowns

There are two ways in. If you already have a vector string from an advisory or a bug report, paste it into the Paste a vector string field at the top of the settings panel. A valid string begins with CVSS:3.1 and fills in every dropdown below it. The page tells you how many metrics it read and warns you if anything was left out.

If you are scoring from scratch, work down the dropdowns instead. Every answer is written as a plain description rather than a single letter, so you do not need to memorise the abbreviations. A row of example buttons below the paste field loads common patterns: a fully remote flaw with no login needed, a denial-of-service, a cross-site scripting case, and several others. These are useful for learning how the metrics interact before you score something of your own.

The eight base metrics

Attack Vector asks how close the attacker needs to be. Network means reachable from anywhere on the internet. Adjacent means the same local network. Local means they need a session on the machine already. Physical means they need to touch the device.

Attack Complexity is about whether the attack works reliably. Low means it succeeds every time. High means it needs luck, preparation, or conditions the attacker cannot control. Privileges Required asks whether they need an account. User Interaction asks whether a real person has to do something, like clicking a link, for the attack to work.

Scope asks whether the damage stays inside the thing that was attacked or escapes beyond it. A virtual machine exploit that reaches the host is a scope change. This metric raises the score sharply and is the one people argue about most.

The last three, Confidentiality impact, Integrity impact, and Availability impact, each ask how much damage the flaw does in that area. High means total loss, low means partial, and none means that area is unaffected.

The threat metrics and why they can only lower a score

Switch How far to go to Add the threat metrics and three more dropdowns appear. Exploit Code Maturity describes what attackers actually have. A proof of concept lowers the score slightly because it takes more work to use than a packaged exploit. Remediation Level describes what defenders have. An official fix lowers the score because the risk can be removed. Report Confidence describes how well the flaw is understood.

All three metrics default to Not defined, which is the same as their worst case. A confirmed report with a working exploit and no fix available scores exactly the same as leaving all three blank. These metrics exist to reduce a score while a flaw is still theoretical, never to increase one. That surprises people who expect setting them to make the number go up.

The environmental metrics and how they make the score yours

Switch How far to go to Everything and a longer set of fields appears. The first three, Confidentiality Requirement, Integrity Requirement, and Availability Requirement, say how much each area matters for the specific system you are protecting. A database server where confidentiality is everything but downtime is tolerable will weight those very differently from a public status page.

Below those are the modified base metrics. Each one lets you say how the flaw behaves on your particular setup rather than in the general case. If a network-reachable flaw can only be reached from your local network because of your firewall, set Modified Attack Vector to Adjacent. The environmental score takes all of this into account and produces a number that is specific to your situation rather than to the flaw in the abstract.

Reading the output

The result shows a large headline number with a severity label: None for zero, Low up to 3.9, Medium up to 6.9, High up to 8.9, and Critical from 9.0 to 10.0. Below it, stat tiles show the base score, the impact sub-score, and the exploitability sub-score. If you filled in threat or environmental metrics, those scores appear as well.

A working panel lays out every step of the calculation. It shows the impact sub-score formula, the exploitability formula, and the final rounding. For the environmental score it includes the modified impact sub-score and its different formula. This is not decoration. Anyone who needs to check or dispute a score can follow the arithmetic line by line.

A vector string panel at the bottom holds the complete metric string. Copy this rather than the bare number when sharing a score. The string carries every answer you gave, so anyone who pastes it back gets the same number and can see exactly which judgement they disagree with.

A worked example from advisory to action

An advisory reports a flaw in a web framework. It can be triggered from the network with no login, the attack works every time, and it lets the attacker read everything in memory but not change anything or crash the service. You set Attack Vector to Network, Attack Complexity to Low, Privileges Required to None, User Interaction to None, Scope to Unchanged, Confidentiality to High, Integrity to None, and Availability to None. The base score is 7.5, rated High.

Now you add your environment. Your copy of this framework sits behind a reverse proxy that requires authentication, and the server holds nothing confidential. Set Modified Privileges Required to Low, and Confidentiality Requirement to Low. The environmental score drops noticeably because in your setup the flaw is harder to reach and the data it would expose matters less. That adjusted number is the one to act on, and it is the calculation a published advisory cannot do for you.

Why two calculators sometimes disagree

Version 3.1 defines a rounding step that works in whole numbers rather than on the decimal value. A score of 8.5 arrives inside the computer as 8.4999999 or 8.5000001 depending on the order the multiplications ran in. A calculator that uses ordinary rounding turns one of those into 8.6, which is wrong by the standard. This one follows the published integer step, so the answer it gives is the one the specification defines.

The other common source of disagreement is the environmental impact formula. For a changed scope it uses different constants and a different exponent from the base formula. Calculators that reuse the base formula with modified inputs produce a different number. These are the kind of details that only matter when two people are comparing results and cannot agree.

Common traps when scoring

A few patterns catch people regularly.

  • Confusing severity with priority. A critical score on an isolated lab machine may matter less than a medium score on your production database. The score rates the flaw, not your week.
  • Quoting the number without the vector string. A bare 7.5 is a claim nobody can verify. The string lets anyone check your reasoning.
  • Expecting the threat metrics to raise a score. They can only reduce it. If you set them and the number stays the same, that means your choices carry a weight of one, which changes nothing.
  • Scoring without filling in the environmental metrics. The base score is generic. The environmental score is about your actual risk, and skipping it means you are patching by someone else's priorities.

All arithmetic, no network

Every calculation happens in your browser. There is no server involved, no database consulted, and no data sent anywhere. You can disconnect from the internet after loading the page and score as many flaws as you like. The vector strings you copy out are plain text that carry the full state, so you can share them through whatever channel you already use for security discussions.

Help

Version 3.1, and it says so

Paste a vector string and every box fills itself in; change a box and the string is rewritten to match, so you can arrive from either direction. The intermediate numbers are all shown rather than hidden behind the total, which is what lets you check a score instead of trusting it. Nothing is looked up: there is no vulnerability database here and no way for the page to reach one.

Paste a vector string, or answer the questions

A string that begins CVSS:3.1 fills in every box. If you do not have one, work down the list instead — the answers are written as plain descriptions rather than single letters.

Read the base score first

It describes the flaw on its own, with no assumption about where it is installed. This is the number an advisory quotes, and it is the only one two people will agree on without discussing anything else.

Then say what the machine is worth to you

Switch to the full set and answer three more questions about the affected system. That is what turns a published number into a decision about your own week, and it is the part almost everybody skips.

The rounding rule is not ordinary rounding

Version 3.1 defines its own rounding step, done in whole numbers rather than on the decimal value, and it exists because a tenth cannot be held exactly in a computer. A value that is really 8.5 arrives as 8.4999999 or as 8.5000001 depending on the order the multiplications happened in, and a plain rounding-up turns one of those into 8.6. That is why two calculators sometimes disagree by a tenth. This one follows the published step, so the answer here is the one the standard defines.

Good to know

A changed scope is a big jump

Scope changes when the damage escapes the thing that was broken — a virtual machine reaching the host, a script in one site reading another. It raises the score sharply and it is the metric people disagree about most.

The threat metrics only ever lower it

A confirmed report with a working exploit and no fix available scores exactly the same as leaving all three blank. They exist to bring a score down while a flaw is still theoretical, never to push it up.

Quote the vector, not the number

Anyone with the vector string can reproduce your score exactly and see which judgement they disagree with. A bare figure of 7.5 is an assertion nobody can check.

A severity is not a priority

Critical on a test machine with nothing on it may deserve less of your Monday than medium on the payroll server. The score measures the flaw. Ranking your work is a separate judgement, and the environmental questions exist to help you make it.

Common questions

Which version of CVSS is this?
Version 3.1, and only that. The equations are the published ones and the vector strings it reads and writes all begin CVSS:3.1. It does not score version 4.0, which is a different set of metrics decided by a large published lookup table rather than by an equation.
What is a critical score?
Nine and above. Seven to just under nine is high, four to just under seven is medium, and anything above zero below four is low. Zero is none.
Why did my score not change when I set the exploit metric?
Because those three metrics can only reduce a score, and the values you chose reduce it by nothing. Widely used, no fix and confirmed are all worth exactly one.
Does it look the flaw up anywhere?
No. It has no database and no way to reach one. The metrics are your reading of the flaw, and the score is only as good as they are.
Can I share my working?
Copy the vector string. It carries every answer you gave, so anyone can paste it back in and get the same number and the same arithmetic.