Severity vs Priority: A Simple Decision Table for QA and Developers

Written By  Crosscheck Team

Content Team

August 13, 2026 8 minutes

Severity vs Priority: A Simple Decision Table for QA and Developers

Severity vs priority: a simple decision table for QA and developers

Almost every QA team argues about this at some point. A tester marks a bug as critical. A developer says it can wait. Both feel the other person does not understand.

Usually they are both right, because they are talking about two different things.

  • Severity is how much damage the bug does.
  • Priority is how soon we will fix it.

Once a team separates these two fields, the argument mostly disappears. This guide explains both in simple terms and gives you a table you can put on the wall.

Short version

  • Severity is a fact about the bug. QA decides it.
  • Priority is a business decision. The product owner or team lead decides it.
  • A bug can be high severity and low priority (rare crash in an unused feature).
  • A bug can be low severity and high priority (a typo in the company name on the homepage).
  • Write both fields separately. Never merge them into one "urgency" field.

Severity in plain English

Severity answers one question: if this bug happens, how bad is it?

It does not care how often it happens, or how many users are affected, or whether the CEO noticed it. It only measures the damage of a single occurrence.

LevelNameWhat it meansExample
S1CriticalThe system stops, or data is lost, or money is wrongPayments charge twice
S2MajorA main feature does not work, and there is no workaroundCannot upload any file
S3MinorA feature works badly, but there is a workaroundSearch is slow but works
S4TrivialCosmetic. Nothing is blockedButton is 2px off centre

The key test for S2 versus S3 is the workaround. If the user can still reach their goal another way, it is usually S3.


Priority in plain English

Priority answers a different question: when should we spend time on this?

That depends on things a tester often cannot see: the release date, the customer contract, the marketing campaign, the number of affected users, and how expensive the fix is.

LevelNameWhat it meansTypical target
P1ImmediateStop other work and fix nowSame day
P2HighMust be in the next releaseThis sprint
P3MediumShould be fixed soonNext 1–2 sprints
P4LowFix when there is timeBacklog

The difference in one sentence

Severity describes the bug. Priority describes our plan.

That is why the two fields are set by different people. QA is the expert on the bug. The product owner is the expert on the plan.


The four interesting combinations

Most teams understand "high severity, high priority" and "low severity, low priority". The learning happens in the other two corners.

High severity, high priority

The obvious case. Fix it now.

Example: the checkout page returns a 500 error for all users.

High severity, low priority

The bug does serious damage, but almost nobody will ever hit it.

Example: the app crashes if you set your device language to a language we do not support, and only 3 users have ever done that.

The crash is real and severe. But fixing it this week would mean delaying something that affects thousands of people. So: S1, P4.

Low severity, high priority

The damage is small, but it is very visible or embarrassing.

Example: the company name is spelled wrong in the page title on the homepage.

Nothing is broken. No data is lost. But it is on every page, it looks unprofessional, and it takes five minutes to fix. So: S4, P1.

Other examples in this corner: a wrong price shown in marketing copy, a broken logo, a legal disclaimer with a typo, an outdated year in the footer.

Low severity, low priority

Example: a tooltip appears 100ms slower than the design specifies.

Fine. Put it in the backlog. Most bugs live here, and that is healthy.


The decision table

Print this. Put it in your team wiki. Use it when people disagree.

Affects everyoneAffects manyAffects fewAffects almost nobody
S1 CriticalP1P1P2P3
S2 MajorP1P2P2P3
S3 MinorP2P3P3P4
S4 TrivialP3P4P4P4

Then apply three override rules on top:

  1. Money or data loss is always P1, no matter how few users are affected.
  2. Security and privacy bugs are always P1 or P2, no matter how small they look.
  3. Legal and accessibility failures are at least P2, because they carry real risk beyond the product.

The table gets you 90% of the way. The overrides handle the rest.


How to write it in your bug report

Keep the two fields visible and separate:

Severity: S2 — Major (users cannot complete checkout with a saved card) Priority: proposed P1 Reason: Affects all returning customers. No workaround except re-entering card details.

Notice the word "proposed" next to priority. As a tester, you can suggest a priority, and you should. But the final call belongs to whoever owns the release. Making that explicit removes the tension.

Always add a one-line reason. "P1 because it affects all returning customers" is a fact people can discuss. "P1 because it is urgent" is not.


Common mistakes

Using one field for both. Many teams have a single "Priority" dropdown and use it for everything. This is why arguments happen. Add a severity field. It costs nothing.

Marking everything critical. If half your bugs are S1, then nothing is S1. Teams learn to ignore the label, and a real emergency gets missed.

Letting severity drift with mood. Severity should be the same on Monday and Friday. If a bug feels more severe because a customer complained loudly, that is a priority change, not a severity change.

Never revisiting priority. Priority changes as the business changes. A P4 bug becomes P1 the week before a big customer demo. That is normal — review the list regularly.

Testers setting priority alone. It feels efficient, but it removes the product owner from a business decision. It also puts testers in a difficult position when they are wrong.


Who decides what

FieldOwnerInput from
SeverityQA / the person who found the bugDeveloper, if the technical impact is unclear
PriorityProduct owner or team leadQA, support, sales, engineering
ReasonWhoever sets the fieldEveryone

Give people clear ownership and the debates get much shorter.


Making the severity call faster

Most of the time, severity is easy to judge if the report contains good evidence. Does data disappear? Does the page fail completely? Is money involved? A screenshot, the console errors, and the failed network request usually answer all three in seconds.

If your reports arrive without that evidence, severity becomes guesswork. Capturing it automatically — which is what tools like Crosscheck do when a bug is reported straight from the page — removes most of the guessing from triage.


Frequently asked questions

Can a bug be S1 and P4 forever? Yes, and that is fine, as long as it is a real decision and it is written down. Review those bugs every few months.

Should the customer decide priority? Customer impact is a strong input to priority, but the decision has to balance all customers and the release plan. So: their voice counts, but the product owner decides.

How many severity levels should we have? Four is enough for almost every team. Five is manageable. More than five and people stop being able to tell the middle levels apart.

What about "blocker"? "Blocker" usually means a bug that stops testing from continuing. That is a useful separate flag, not a severity level. A blocker can be any severity.

Do we need both fields on small teams? Yes, and small teams benefit most. When one person wears several hats, writing the fields down keeps the two questions from blurring together.

Related Articles

Contact us
to find out how this model can streamline your business!

Trusted by thousands ofengineering teams worldwide.

Add to Chrome
200+ reviews · 100k+ users
Crosscheck browser extension capture controls

Join the Crosscheck Community

Stay in the loop with Crosscheck's newest features and insights.