I think the metagaming problem with rolling for stealth is fairly well-known: once the player rolls for stealth at the start of their sneaking, they know how high they rolled and might, consciously or not, adjust their later course of action based on their knowledge of the stealth roll. There are various ways to partially mitigate this, such as delaying the stealth roll until the first time it is needed. However, I wonder whether it is possible to implement a way to resolve "rolling stealth vs. passive perception" situations without the player ever rolling any dice, while at the same time being mathematically equivalent (thus preserving game balance). Conceptually, it seems like one could define a "passive stealth" and then have enemies roll perception against that. However, the naive implementation of this changes the math. For example, if you have one rogue trying to sneak past 3 guards, the conventional way would have the rogue roll once against 3 passive perception scores, while the "passive stealth" approach would have three perception rolls, which obviously changes the probability of at least one guard noticing the rogue. And you also have things like advantage/disadvantage and Reliable Talent that can affect the stealth roll, which would need to be handled somehow.

So, to bring it all together with a single example, suppose we have a rogue with +8 to stealth and Reliable Talent trying to sneak past 3 elite guards who all have a +10 to perception (i.e. 20 passive perception), and furthermore the rogue has disadvantage on their stealth check because they're trying to sneak out while carrying the prized Bell of Loud Tolling that they've just stolen. Is it possible to resolve this by having the DM roll for the guards' perception instead of the player rolling for stealth, while at the same time giving the same probabilities of success and failure as if the player was rolling against the guards' passive perception?


  • I know it's rare in practice for guards to have a higher perception modifier than the rogue's stealth modifier, but if I don't set it up this way then Reliable Talent gives the rogue a 100% chance of success, and that would defeat the point of asking about probabilities.
  • I realize that having the DM roll the PC's stealth check in secret is one possible solution, but it would be preferable to have an equivalent solution in which the DM only rolls for NPCs. I've suggested the start of the obvious solution, in which one simply swaps the passive and "active" sides of a contested check, but I've also pointed out that this alone isn't a full solution. If you have another way of resolving things that achieves the stated objectives (i.e. DM rolls for NPCs instead of player rolling for PC, while preserving original success probabilities), feel free to suggest it.
  • 3
    \$\begingroup\$ I think I understand your specific ask, and I think it's solvable. But I think it would help if you more clearly explained what the problem was at the table that you're trying to use this to solve for. Is it really that you're concerned about metagaming and stealth roles? If so what specifically is the concern? If not, can you give some more explanations or descriptions of the problem that you or your players are having. I just don't want solutions to come up that don't resolve this for one of those parties. \$\endgroup\$
    – NotArch
    Commented Apr 11, 2022 at 17:41
  • 1
    \$\begingroup\$ @NautArch I mainly want to know if it's possible to "invert" the passive and active sides of a contested check in this way without changing the math at all, such that practically speaking, the only thing that changes is that the player has no knowledge of "how high they rolled" on the stealth check. I've been the player rolling the stealth check before, and it always felt unsatisfying to know the result and try to pretend not to in order to avoid metagaming, so I'd love a way to resolve it that simply doesn't give me that metagame knowledge in the first place. \$\endgroup\$ Commented Apr 11, 2022 at 17:48
  • 1
    \$\begingroup\$ Also, I realize that a trivial solution to this is to have the DM roll the PC's stealth check in secret, but having the DM roll a player's check feels suboptimal if there's an equivalent way to do it where the DM rolls a check for an NPC instead. \$\endgroup\$ Commented Apr 11, 2022 at 17:49
  • 4
    \$\begingroup\$ Have you read A Rogue dilemma: to roll for Stealth, or not to roll?? \$\endgroup\$ Commented Apr 11, 2022 at 18:14
  • 1
    \$\begingroup\$ @RyanC.Thompson I think it's less about that being the solution and more is that the question you have here? If so, duping and bountying may be the better path. \$\endgroup\$
    – NotArch
    Commented Apr 11, 2022 at 19:32

4 Answers 4


Option 1: Answering the question as written

It's possible just to invert everything:

  • Since the player normally rolls only once, roll the d20 only once for the guards (with different bonuses if applicable).
  • The player's passive score is 12 + Stealth. (Why not 10? Rollers win ties, and the chance to roll a 10+ on a d20 is 55% rather than 50%. This gives the roller a +1 advantage over a 50-50. Swapping the roles makes this a -1 to the player, so we need to add 2 to get back to where we started.)
  • Advantage on Stealth becomes disadvantage on Perception and vice versa.
  • Reliable Talent means the guards can't roll higher than an 11 on the d20.

Option 2: The "triple agent"

Pick up the d20. Tell the player that you're rolling Perception for the guards, and you've come up with a scheme that gives the same probabilities of success and failure as if the player was rolling against the guards' passive Perception. Reiterate that you are rolling Perception for the guards, and not a Stealth check for the player.

Then, roll a Stealth check for the player.

Option 3: Schrödinger's check total

in the fairly common case of one stealth roll being used to (try to) sneak past multiple guards in sequence, the player will still know their roll after the first guard

It's possible to prevent the knowledge of what total the player rolled without changing the overall probabilities. In fact, even the DM won't know what the player rolled. The only information that is produced is whether the player succeeded or failed against each guard, and not the exact roll. Here's how to do it:

Have the player roll against the first guard as normal. When the player encounters the next guard, have them roll Stealth again. However, if their total would be inconsistent with the result of the previous guard encounters, have them reroll the check. Keep rerolling until you achieve a total consistent with all past history. Then, forget the total again, remembering only the successes and failures.

Fancifully, you're travelling back in time and re-rolling the player's original roll in order to invalidate their knowledge of the total. However, you can't change an established success into failure or a failure into success. Or, the player's "real" check total exists only as a superposition of states with each "observation" (i.e. guard encounter) narrowing it down.

For example, let's say we have two guards at DC 10 and DC 15. Here are the possible sequences of events:

  • Player rolls less than 10 on the first guard, failing the check. When they reach the second guard, they roll again, rerolling anything 10 or higher, because otherwise they would have succeeded against the first guard. This makes succeeding against the second guard impossible. (Unless you prefer that failures trigger a reset.)
  • Player rolls 10 or higher on the first guard, succeeding the check. However, they don't keep their total, only the fact that they succeeded against the first guard. When they reach the second guard, they roll again:
    • Less than 10: Reroll, because this would contradict the fact that they beat the first guard.
    • 10 to 14: They fail against the second guard.
    • 15+: They succeed against the second guard. If there's a third guard, they would roll again, rerolling anything under 15, and so on.
  • 4
    \$\begingroup\$ Dang, option 2 is pretty clever. \$\endgroup\$ Commented Apr 12, 2022 at 1:09
  • 2
    \$\begingroup\$ @NautArch Honestly, no, as this hasn't been a big concern in the games I've been in. If it is the Stack's position that mathematical/statistical answers to questions of this sort are invalid without personal experience, then I shall delete and take my leave. (Not saying that you personally are necessarily going that far, but I've run into various sentiments in this direction in the past.) \$\endgroup\$ Commented Apr 12, 2022 at 1:19
  • 3
    \$\begingroup\$ @RyanC.Thompson not really. Lying to the players outside the expectations of the group risks destroying the require trust between them and the DM. \$\endgroup\$
    – Dale M
    Commented Apr 12, 2022 at 6:58
  • 3
    \$\begingroup\$ @justhalf yes. Apart from the fact that the second one involves a deliberate lie. Lies ruin trust. \$\endgroup\$
    – Dale M
    Commented Apr 12, 2022 at 9:44
  • 7
    \$\begingroup\$ Why not option 2.5? Tell the player "I'm rolling your stealth check for you so that you don't know what the total is" \$\endgroup\$
    – DJMcMayhem
    Commented Apr 12, 2022 at 15:34

The DM secretly rolls

From the PHB p.6 (my emphasis):

... the DM decides what happens, often relying on the roll of a die to determine the success of an action.

It doesn't say who makes "the roll of a die". The DM may call for the player to make an ability check or, equally validly, the DM may roll a d20 and apply the PC's modifiers to it. It is possible to play D&D with the DM making every roll or with the players making every roll - most games fall somewhere in the middle.

In circumstances where knowing the roll will give the player information that they would not know and knowing may affect their future actions, it's perfectly appropriate for the DM to make that roll in secret and reveal it when it becomes relevant (if it ever does).

A well prepared DM has a list of every PC's bonuses so they don't need to ask and flag what they are doing when they make the roll. An extremely well-prepared DM has a one-time pad of 50 or so pre-rolled d20s so they can just cross the next one off and not give away that they are even making a roll.


Rolling poorly on stealth has immediate consequences

I think you are looking for a solution to a problem that doesn't truly impact the game. In 5e you roll an ability check when you are attempting to overcome a challenge that has a chance of failure. When considering stealth, this means that in all situations you are rolling stealth there must be someone who could detect you. If you want to be stealthy in an empty room in an empty castle, then you get to do that for free - no check.

In all other situations the standard ruling follows the rules for hiding: roll a stealth check and compare it to the passive perception of enemies.

This means there is no opportunity to metagame, as soon as you roll the effects are immediate. If you rolled low, you remain detected and everyone knows you're trying to do something suspicious. If you roll high, you are not detected. The player is not told the result of the roll, however they can attempt to make educated guesses as to whether they are truly hidden or not.

Hiding better to thwart searchers has consequences too

The only caveat is when a guard actively searches for the stealthy character, although the PC does not know what the guard rolls they do not that having a lower stealth roll means they are more likely to be spotted. In this situation a character may be tempted to try to hide again. But be aware this comes with the same cost - the character will have to expend some time hiding, and they could be immediately detected even if they weren't before.

It's not even metagaming in the first place

In the case of searching the player makes a decision based on their roll. This is fairly normal in 5e because we assume that rolls mean something in the game world. When a PC rolls an attack and it hits or misses, we automatically translate that hit or miss into a narrative that the PC would experience. The same is true of all rolls, being hit for 1 damage hurts a lot less than being hit for 10, a high history check roll makes you remember more or more easily than a low roll. It would be strange to say that a PC doesn't know if their attack hits or misses, wouldn't it?

We aren't given explicit guidance by the book on how to treat stealth but you can simply do the same thing. If the PC rolls high, they are confident they are stealthy. If the roll low, their boot scuffs, their armour chinks, their foot is positioned poorly, whatever happens they experience the low roll and can make decisions based on that experience.

I think you can solve your perceived problem just by having a slight shift in your mindset and aligning your storytelling with the mechanics of the game. This a simpler solution for you and your players.

  • 5
    \$\begingroup\$ When sneaking you can tell somewhat how well you are doing. For example when a character rolls a 1 on a stealth roll I view that as the character doing the classic step on a branch that make a very loud breaking sound or a certain hobbit that accidentally knocked a skeleton down a well. The character fully knows they screwed up, the question then becomes did anyone notice the sound? DM: You hear drumming in the distance... \$\endgroup\$
    – Anketam
    Commented Apr 12, 2022 at 12:29

You're setting aside the simplest solution (roll stealth for the player behind the screen), so: the player normally rolls stealth against the maximum passive perception of every relevant NPC. This can be inverted once you account for the fact that you only care about the maximum perception modifier of the NPCs, and the fact that checks against passive skill DCs systematically bias the roller by 1.

Normal roll, player is undetected if 1d20+S>=10+P where S is the player's stealth modifier and P is the maximum perception modifier among NPCs. If P==S, player has a 55% chance of success because they win ties. (This is clever game design that applies to death saves too - 10 "sounds like" the neutral DC so players think it's fair, but the expected value of a d20 is 10.5. When you win ties, the neutral DC is 11. The game is biased in favor of creatures rolling against DCs, which is usually players.)

Your replacement: player is undetected if 1d20+P<=10+S+1. (Note the <=, you're rolling for going under a number rather than over.) No matter how many NPCs there are in a group, you roll once and use the maximum perception modifier among them. The +1 adjusts the odds to be exactly the same as the original odds.

Is this better than rolling stealth behind the screen? No. It's exactly equivalent and is more math because you have to add an extra +1. But that's true of any method that satisfies your criteria, they're all by definition mathematically equivalent and interchangeable.

AnyDice program to demonstrate equivalence of both single and repeated rolls (PA/PB/PC are maximum perception mods of each of three groups of NPCs):

S: 0
P: 0

output 1d20+S>=10+P
output 1d20+P<=10+S+1

PA: 0
PB: 0
PC: 0

output 1d20+S>=10+PA & 1d20+S>=10+PB & 1d20+S>=10+PC
output 1d20+PA<=10+S+1 & 1d20+PB<=10+S+1 & 1d20+PC<=10+S+1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .