If anything in this page is unclear, we're active on the Hanabi Central discord and happy to help!
If you want to add or edit any conventions, please make a proposal on Hanabi Central.
Reactor is a conventional framework oriented around giving, receiving, and taking safe actions. We designed Reactor 2 to empower dedicated teams to gain a competitive advantage in three player Hanabi over all teams playing less modern systems.
These conventions provide the framework that everything else is built around.
Players should assume their touched cards will be someday useful. If that means the card must be playable, then it should play. Unlike some other systems, Reactor conventionally considers cross-hand dupes good.
Players do not (usually) have chops until the the score is 10. The first card eligible to be chop is the one drawn to replace that tenth card. Cards that were in hand before the tenth card is played are not eligible to be on chop.
When a player has cards eligible to be chop and has nothing else to do, their chop is slot 1.
Our most basic clues provide the clue receiver with one or more actions. They are called Stable clues.

This green clue says that the green card is playable. When multiple cards are newly touched, color clues say to play the leftmost.

This 5 clue says to discard the card in slot 2. In general, rank clues provide a discard instruction on the previously-untouched card to the left of the card touched. When multiple cards are touched, the instruction is on the leftmost that could make sense.

This clue newly-touches slots 1, 2, and 5, respectively referring to slots 5, 1, and 4. The card signaled to discard is slot 1: the leftmost referred-to card.

Even though this is a rank clue, it is not a referential discard signal! As long as the 1 can be playable, it is just a signal to play that 1. Once all unplayable 2s are accounted for, a 2s rank clue is a play signal, and so on.
Fill-in clues occur when a previously-clued card is touched, revealing its identity to be playable or trash. Cross-hand dupes are not considered trash.

In this example, red 3 has played. This clue fills in red four and newly-touches another red card. It is simply a fill-in clue telling red 4 to play.

This 1s clue is not a referential discard clue! It just says to discard the 1s. When a rank clue reveals cards as trash, it is not a referential discard clue.

This green clue is not a play clue: it just says to discard the green cards. When a color clue marks all new cards as trash, it simply means to discard those cards.
A reaction will occur when Alice gives Cathy a clue, but Bob doesn't yet have a safe action! With every clue Alice must leave Bob something to do: when Alice clues Cathy, Bob knows he has an action too. Clues that induce reactions are called reactive. The bulk of our documentation is on recognizing and interpreting reactive clues. We start our journey in this section discussing slot 1 plays, the most common reaction.

Here, Alice has reached over Bob to give a color clue to Cathy. In addition to this clue telling Cathy to play her yellow 1, Alice reaching over Bob provides him an action: Bob should play his slot 1 card.

Alice has reached over Bob to give a rank clue to Cathy. This clue works just like with our stolen play example. Alice has told Cathy to discard her slot 2, and the fact that Alice reached over Bob tells him to play his slot 1.

In this example, Alice has reached over Bob to tell Cathy to play purple 2. That's not playable yet! The fact that Alice has reached over Bob means that Bob will play his slot 1. If Bob's slot 1 is purple 1, then the purple 2 will be playable by the time it's Cathy's turn. Bob should trust that his slot 1 is purple 1 and play it. A reactive clue that tells two cards of the same color to play is called a Finesse.
Signal modification is one of the most important concepts to understand for playing Reactor. Reactions can modify signals in two ways: by sliding the target, and by flipping the type. These two modifications can even be combined within a single reaction!

Alice has reached over Bob to tell Cathy to play her slot 3 card, but we don't want to tell her to play that card. If Bob were to play his slot 1, Cathy could immediately bomb purple 5! But there's a playable card in Cathy's hand: her red 1. Bob should indicate how far this playable is from slot 3 by playing a different card. He plays his second (one rightward) slot card to tell Cathy to play one card to the left of slot 3.
| Bob's Reaction | Signal Modification to Cathy |
|---|---|
| Play slot 1 | Keep the same target |
| Play slot 2 | Slide one card to the left |
| Play slot 3 | Slide two cards to the left |
| Play slot 4 | Slide three cards to the left |
| Play slot 5 | Slide four cards to the left |

Alice has jumped over Bob to tell Cathy to discard red 1, but red 1 should be playing, not discarding! Bob needs to flip the signal. Instead of playing his leftmost card, he should discard his leftmost card to tell Cathy to play the card instead.
Target sliding and action flipping can be combined! Discarding flips the action, and the slot that discards determines the how many cards the target slides.

Here, Alice gave a reactive 5 clue. The initial meaning of the clue is referential: to discard slot 4. Bob must modify that with his reaction to play slot 2. So he will discard a card to flip the signal. His card to discard is slot 3: he counts two cards to the right from slot 1 to slide the initial target two cards to the left.
| Bob's Reaction | Signal Modification to Cathy |
|---|---|
| Discard slot 1 | Flip the signal but keep the target |
| Discard slot 2 | Flip the signal and slide one card to the left |
| Discard slot 3 | Flip the signal and slide two cards to the left |
| Discard slot 4 | Flip the signal and slide three cards to the left |
| Discard slot 5 | Flip the signal and slide four cards to the left |
With players constantly reacting, we have to be careful that everyone is on the same page about how reactive clues work.
Suppose Alice gives a reactive clue to Cathy, but she holds multiple playables or trash: how does Bob know onto which of Cathy's actions he needs to modify the signal?

In this example, every slot in Cathy's hand is actionable. She could discard her first or fourth cards from the left, and play her second, third, or fifth cards. All of these are true signals to Cathy, but Alice needs Bob to pick a specific one so that he takes an action that Alice could predict when she gave the clue.
Because Cathy has plays to be informed about, Bob should give her a play signal. Even though playing slot 1 would give a true play signal, he is supposed to signal her green 1: Cathy's leftmost card needing a play-signal.
Keep these considerations in mind when determining the expected action in Cathy's hand:
1. We must fix queued bombs.
If Cathy is intending to bomb trash, the expected action in her hand is to fix it before giving her anything else to play.
2. We do not reaffirm signals to Cathy's hand that she already has been given.
If Cathy already knows what to do with a card, we do not tell her to do it again.
3. Immediate plays take priority over finesses and discards.
We do not tell Cathy to play a 1-away card when we could tell her about an immediate playable. We also do not tell Cathy to discard a card when we could tell her to play one, unless that card is a queued bomb.
4. Finesses take priority over double discards.
Initial play signals can only get flipped into discard signals if there is no double play possible.
5. Discarding touched trash takes priority over untouched trash.
When we tell Cathy to discard a card, we prioritize telling her to discard touched trash she doesn't already know about.
6. If the clue is a finesse, Bob should play slot 1 if that could resolve it.
This case is discussed further in Fill-in Finesses.
7. If Cathy has two good dupes, one of which is touched, we target the touched dupe with our play signals and the untouched dupe with discards.
This allows us to keep more information about good cards that stay in hand and biases our signals to avoid bad touch.
8. If there are still multiple possible candidates, the expected target is the leftmost possible.
We bias our signals leftwards to more often be able to match up the initial target with the expected target.

Here, some cards have prior positive information in Bob's and Cathy's hands. None of that changes Bob's reactions. Unlike systems where unexpectedly playing a touched card is distinguished from an untouched card, every action Bob could take modifies the signal differently.

In this example, to count leftward to Cathy's expected action the team has to wrap around from slot 2, to slot 1, to slot 5, and finally to slot 4.
We call the action a reactive clue provides before the reaction modifies it into the expected action the initial reactive signal. Initial reactive signals have so far matched stable signals: we have seen referential discards, direct plays, and fill-in plays. However, we will not match up these clues fully, because our desires for stable and reactive clues are incompatible.
Stable clues depend on the empathy the clue provides. The direct playable rank is a play, not a referential discard. Trash color clues are not direct plays. This allows stable clues to more easily signal needed actions. Every reactive clue should mean something different. When we give reactive clues, we want to handle as many types of hands as possible, so we specifically design initial signals to allow for that. To achieve reactive meaning diversity, we carefully specify what every clue does.
When a reactive clue touches a single card, the initial signal depends how that card was previously touched.
A color clue to a new card provides an initial reactive play signal to the card. This is true even if the card is known to be trash.

Here, we gave a reactive yellow clue to a new card in slot 3. The initial reactive signal is play slot 3, even though all yellow cards are trash. The reaction will modify the signal onto something that is reasonable. If we wanted an initial signal to discard slot 3, we should have given a rank clue to slot 4.
A rank clue touching a new card provides an initial reactive discard signal to the card previously-untouched to its left. The quality of the rank does not matter: the initial signal is a referential discard even if the rank is playable or trash.

Here, we gave a reactive 1 clue to a new card on slot 1. The initial reactive signal is discard slot 5 even though slot 1 is playable. If we wanted to have an initial reactive signal to play slot 1, we would give a color clue to slot 1.
A clue that fills in the empathy of a card provides an initial play signal to the card. The quality of the card does not matter: the initial signal is a play regardless if the card is playable, good unplayable, or trash.

Here we've given a clue filling in a 3 as trash. The initial meaning of this clue is to play slot 3. Of course, the reaction will have to modify that signal onto something reasonable.
A clue that gives the same empathy to a previously-touched card that hasn't been filled in provides an initial discard signal to the card.
When the card is already touched with both rank and color, a color clue provides an initial play signal and a rank clue provides an initial discard signal.
We include a summary of this information in the Reference.
To determine the initial signal of reactive clue touching multiple cards, we'll figure out which one card is the focus. A clue's initial signal is the same as if the clue touched only the focus.
To actually implement this, we must specify how how to determine the focus of a reactive clue.
1. Deprioritize Initial Signals to Queued Plays.
Any card that would provide an initial signal to a queued play is deprioritized as the focus of the clue.
2. Prioritize Filled-in Playables.
If the clue fills in a playable card, that is the focus.
3. Check for a Potential Slot 1 Finesse.
This case is important but confusing. We cover it in detail in Fill-in Finesses.
4. Prioritize New Cards.
Next, we prioritize choosing a new card as the focus.
5. Prioritize the Leftmost Target.
If there are still multiple cards that could be the focus, the focus is the one that targets the leftmost card in hand.
Suppose Alice gave Bob this purple clue:

Bob already had a card to play but Cathy did not! In this scenario, Cathy expects Alice to always be giving her an action. So, she will react to the clue as if she and Bob were swapped.

If Alice had instead given Cathy a clue, nobody needs to react -- Bob already has something to do. The 1s clue to Cathy is stable.
In these cases we don't actually want Bob to react to clues to Cathy, and we do want Cathy to react to clues to Bob!
We'll need a more nuanced condition to describe which clues are reactive and which clues are stable.
In several sitautions, clue stability is simple and absolute.
1. Clues to unloaded Bob are always stable.
If Bob has nothing to do, you can always clue him without telling Cathy anything. We saw an example of this in Color Direct Plays.
2. Clues to Cathy over unloaded Bob are always reactive.
If Bob has nothing to do, jumping over him to Cathy always gives him an action. We saw an example of this in Stolen Play Clues.
3. Clues to loaded Bob over unloaded Cathy are always reactive.
If Bob has something to do but Cathy doesn't, giving him an extra action always gives Cathy an action too. Bob must wait for Cathy's reaction to interpret the clue. We just saw an example of this in Role Reversal.
We next check which teammates have a play signaled.
4. Clues to the next teammate without a play are stable unless condition 3 applies.
We would like to give a stable clue to the next teammate without a play. The only exception: when Bob is loaded with only trash and Cathy has no actions, condition 3 applies and clues to Bob are reactive even though he is our next teammate without a play.
The remaining situations depend whether we want to require more efficiency from Alice's clues (calling her hot) or less (calling her cold). We determine Alice's state based on her hand:
5. When Alice is cold, her clues are stable (if not already accounted for).
6. When Alice is hot, her clues are reactive (if not already accounted for).
When Alice is cold, her clues mostly work as normal. However, her stable rank clues to loaded players are stalls, not referential discards.

Suppose Bob has a known 1, queued to Bomb via good touch. Her clues to him would normally be reactive. Despite this, when Alice clues green to Bob, the clue is not reactive - it simply fixes Bob's play to a discard.
Reactor assigns little meaning to free choice, either allowing players to choose without sending a signal or expecting players to exhibit specific behavior.
The focus of a 1s clue is the leftmost. When a 1s clue is given, the focus should play first, and then the remaining 1s should play right to left. Reactor intentionally assigns no meaning to 1s playing out of order.
Discarding an immediately playable card promises its exact copy as the oldest possible card in your teammate's hand.
Reactor intentionally has no priority agreements.
The first turn of the game, a stable rank clue touching slot 2 is a starting hand stall (unless the clue is to 1s). The clue does not signal a discard.

Here, Alice has told Bob to play a yellow card, but she and Bob can both see yellow playable cards in Cathy's hand. This is a help yourself clue. Bob's card is yellow 3, and he needs to help to make it playable by getting Cathy to play her yellow 1 and 2.
Help yourself play clues should be used a last resort: perhaps Alice and Bob are both locked, and this will help unlock ASAP. Or, perhaps Bob is locked and he needs to know which of Cathy's playables to prioritize.

In this example, g3 has been played already. This 5 clue says the the green card is not green 5, and so if it is good it must be green 4 and is playable. So, it should play. We call this a rank negative fill-in clue; it is not a discard signal.
The directly playable rank that touches all previously-unclued cards in hand is a discard-all clue, not a play clue. This is motivated by considering what clue to give when the cards are all trash.
We're almost done! Just a few extra reactive clues to cover.

A reactive color clue has filled in yellow 4 and newly-touched yellow 5. What should Bob do? Let's analyze:
This clue's focus depends on the identity of Bob's play as well as the slot he plays: if Bob plays any other card from slot 1, Cathy is told to play her yellow 5! Alice needs to be careful that Bob actually holds yellow 3 in slot 1 and not some other playable.

Alice has given Bob a rank clue, filling in red 3 and newly-touching yellow 3. What could this clue mean? Because there is no expected signal to Cathy, Bob has to ask himself a question: "what could happen if I play slot 1?" There are several possibilities:
Since there's no clear expected signal from Bob's point of view, he should trust that one of the signals is intended and play his slot 1.
If Alice gives Cathy an ostensibly-stable clue, sometimes Bob can know the clue is not one she should have given. In this case, we expect him to treat it as reactive and react accordingly, destabilizing the clue into an unstable clue.
Sometimes, a reactive color clue does not make sense as signaling two plays. This can happen when the receiver has no playable cards or 1-away cards that make sense as targets. In this case, the clue is a double discard. The reaction will be a discard, indicating a card for the clue receiver to discard.
These conventions describe what to do in situations where players may be confused about what is expected of them.
Reactions should occur on the first possible turn. When a reactive clue does not elicit a reaction, we must be careful about our future expectation.
If instead of reacting, a player gives a clue, the reactive clue is off: it is as if the clue was never given. The player may (but is not expected to) go back later for their reaction. If that occurs, the team is expected to understand it and retroactively queue the card that was reacted for.
If Bob receives a reverse reactive clue, but takes an action not queued prior to the clue being given, the reverse reactive clue is conventionally off: Cathy is not expected to react.
Reactions occur in response to clues. If an action is not in response to a clue, it is not a reaction. In addition, a play must be globally unexpected to be a reaction. It is not a reaction if it was previously signalled or good touch playable.
On the other hand, a discard can be a reaction even if it is globally expected.
When a card bombs or a critical card discards, all clues that may have caused it are conventionally canceled. Players may later demonstrate their improved understanding, but it is not conventionally expected. Be careful! Because going back is conventionally unexpected, if it can be interpreted as a reaction, it will.
For readibility, the conventions as stated prior leave a few situations not defined or incorrectly defined. We clarify some of them here.
A player with multiple cards all of whose empathy is playable or trash is expected to play them from right to left. For example, if all the 2's but red 2 have been played and Alice has three 2s clued in her hand, then she is expected to play the rightmost one as red 2 unless a fix is given.
Contaminated cards are exceptions to this.
Cards are queued to play by good touch if their own empathy is either playable or trash. We do not reason based on the assumption that other touched cards are good to determine whether a card is playable or trash.
Cards are queued to play by good touch once they would play through cards queued in the player's own hand. Prior to that, the card is considered not queued.
The focus of a rank direct play clue is the leftmost card touched and should play first before cards are queued from the right by good touch.
Suppose some cards in a player's hand are good touch playable, but there are more of them than there are identities they can play as. These cards are contaminated, since at least one of the good touch playable cards is trash. None of the contaminated cards become queued to play by good touch, and playing any can constitute a reaction. However, a player with contaminated cards is not allowed to discard their chop.
The existence of chops is also tied to max score, not just current score. Players have no chops until the current score is at least (max possible score - 15). This is relevant in case of variant play or losing critical cards.
Reactive targeting can provide extra context to the clue receiver's hand. Much of this context we do not globally expect players to consider, with one class of exceptions: any touched card proven to be trash by reactive targeting rules and the reaction is considered globally-known trash.
This deduction is to occur the turn the of the reaction. The clue receiver is not expected to figure it out retroactively after taking their own signalled action. The team is also not expected to reason about what reactions may be impossible; trash should be deduced as though any reaction was possible. The team is not expected to combine inferences across turns to make expected deductions.
Suppose Alice has as known playable and gives a reactive clue to a player with a duplicate of it. Other playables are higher priority expected targets. The duplicate is a higher priority expected target than 1-away cards and trash.
There's a tradeoff between direct and referential play signals. With referential signals, we can have increased clue predictibility and have empathy on cards remaining in hand. With direct play signals, we can more accurately decide whether it is better to play vs. give a clue. Direct signals are also required for the help yourself convention, which allows the team to efficiently survive having two players locked simultaneously for short periods of time.
The pithy answer: because we can. To win Hanabi as often as possible is to optimize all our actions: plays and discards. If our system's clues are powerful enough to not need a default discard, why have one?
The real answer: when a player is locked, it's nice for the other players to cycle the deck and expect the locked player to give a clue.
Priority agreements can provide efficiency; however, they may restrict players from playing the best card and are heavily desync prone. Additionally, the best card to play may not be global and playing a suboptimal card can cost games. We choose to have no priority agreement because, for us, the downsides outweigh the upsides.
Like prioritiy, elimination note conventions are susceptible to desync escalation. Additionally, precise and accurate conditions for when to have elimination globally on take some mental load to implement. We decided that while players may suspect they have a card from elimination notes, there is no conventional elimination marked.
In Summer 2025 Fafrd, sjdrodge, sodiumdebt, and timotree began playing win streak games using Reactor 2, cycling out different players based on availability. We won 55 out of 56 games with a best win streak of 39 (still ongoing; the only loss was game 17). Additionally, Fafrd played all but six games and sat out the loss, giving him an individual ongoing 50-game win streak. Win streak games are currently paused while we solidify Reactor 2 and develop Reactor 3.
A card that attempts to play but is not playable.
Same as Touched.
A player's chop is a card they are allowed to discard if they have nothing else to do.
Cross hand dupes are two cards in different hands that have the same identity.
A clue is direct if it provides a signal to a card focused by the clue.
A finesse is a signal that conventionally tells two cards of the same color to play.
The focus of a clue is a card touched by the clue that determines the clue's meaning.
Information is global (or globally expected) if it is conventionally expected to be common knowledge shared between all teammates.
An card's identity is its rank and color. Two cards have the same identity if they have the same rank and the same color.
A player is loaded if they have a queued action and unloaded otherwise.
See Touched.
An action is queued if it is globally expected to occur.
A reaction is the first action given by a reactive clue.
A reactive clue conventionally provides an action from both teammates.
The receiver of a clue is the player to whose hand the clue is given.
A clue is referential if it provides a signal to a card not focused by the clue.
We enumerate and order the cards in each player's hand. The newest card is slot 1 and considered leftmost. The oldest card is slot 5 and considered rightmost.
A stable clue conventionally provides an action to only the clue receiver.
A clue is a stall if it provides no safe actions.
The target of a clue is the card in the clue receiver's hand that is being conventionally signaled to.
A card is touched by a clue if it matches the clue's information in the hand the clue is given. For example, a 4s clue touches all of the 4s and none of the other cards.
A card is considered touched if any clue throughout the game has touched the card. A card is untouched if no clue throughout the game has touched the card.
A card is previously untouched if it was untouched before the clue was given.
A card is newly touched or simply new if it is previously untouched and the clue touches it.
An unstable clue a priori could have been stable, but it looks sufficiently bad as a stable clue that it elicits a reaction.
| Clue | Card Touched with... | Initial Action | Initial Target | How many Plays? |
|---|---|---|---|---|
| Rank | None | Discard | Referential | 1 |
| Color | None | Play | Direct | 2 (or 0) |
| Rank | Only Color | Play | Direct | 2 (or 0) |
| Color | Only Rank | Play | Direct | 2 (or 0) |
| Rank | Only Rank | Discard | Direct | 1 |
| Color | Only Color | Discard | Direct | 1 |
| Rank | Both | Discard | Direct | 1 |
| Color | Both | Play | Direct | 2 (or 0) |
These are changes to be considered and discussed on Hanabi Central in the Reactor 2 discussion thread. Have ideas? Head over and share them!
When eleven non-5s have played, there are exactly nine unplayable cards left in the game. Then only one player can have a hand full of inactionable cards at a time. If that player gives Bob a stable clue, Cathy knows she has an action somewhere, so it's reasonable to allow her a default one.
With this motivation, we slightly lengthen the hot phase so that it ends when there are exactly nine unplayable cards left in the game: ie score - (5s played) is at least max_score - 14.
Fully known cards already cannot be targeted as immediate plays (they would already be queued) or trash (they would already be trash). This proposal also bans them from being targeted as a 1-away (just give a stable clue) or as a dupe extraction (the card can just discard if needed).
Queued plays are already never reactions. This proposal bans queued discards from being interpreted as reactions too. This can help with situations where players may be desynced about whether a clue is stable or reactive.
Any card queued to play as a 5 may be skipped over. Not fixing cards queued as 5s allows us to get better tempo and allows for other opportunities for the card to be fixed. (someone else draws the 5, or the same player plays the 5.)
This proposal would make cards less often impossible to get and is likely just better. However, it does make stable meaning and reactive initial meaning match significantly less.
We add several conventions for cross-hand dupes.
Write down conditions for what makes a clue unstable.
If instead of reacting, a player plays a card, the reactive clue is treated as though it was stable.
Starting in March 2026, we record any significant changes here. Typo fixes and minor rewordings may be left out.
Renamed Traitorous Sets to Contaminated Cards.