Chris Voss said never split the difference. 1.2M haggles disagree

On this page · 15 sections
- Key numbers
- Paying the ask costs you 28%
- How I tested it: the deal code, ported line by line
- Inside one seller's head
- The eight moves
- The result: a tie at the top, a cliff at the bottom
- Why Voss's ladder stalls here
- The bosses: each rule breaks a different move
- Selling is the hard side
- How to haggle in O'BLOCK, in 60 seconds
- Does any of this work at a car dealership?
- What this test can't tell you
- The numbers so far
- Play the sellers yourself, free
- Sources
Short answer: In 1.2 million simulated haggles against the 121 buyers and sellers in our game O'BLOCK, splitting the difference and Chris Voss's Ackerman plan finished in a dead heat: both paid about 82.7% of the street price, and splitting closed slightly more deals (93.2% vs 90.5%). The move that actually won was neither. Reading the seller's tell and offering his real number paid 80.4%. Paying the asking price paid 102.8%, which is 28% more for the same pair.
TL;DR: Every seller in O'BLOCK hides a floor that averages 79.6% of the street value and opens at 102.8%, so the ask is padded by about 29%. We ported the game's deal code to Python, checked it against a real recorded deal (it reproduces the $260 counter to the dollar) and played the same 40,000 sellers eight different ways. Voss's 65/85/95/100 ladder ties "split the difference" on normal sellers, loses half its deals when the target is aggressive (48.8% close), and collapses against the boss who raises his floor 5% every time you speak (16% pass). Lowballing and holding closed 0.5% of the time. Every number is in the CSV, and the Halloween event (every buyer in costume) runs until Nov 1.
Key numbers
| What | Number | Source, Oct 24 2026 |
|---|---|---|
| Haggles simulated | 1,200,000 (640,000 buys and sells + 560,000 boss deals) | Our port of O'BLOCK src/deal.rs |
| A seller's hidden floor, average | 79.6% of street (8 in 10 between 66% and 91.5%) | 200,000-deal sample |
| A seller's opening ask, average | 102.8% of street | Same sample |
| Pay the ask | pays 102.8%, closes 100% | Our run |
| Split the difference | pays 82.8%, closes 93.2% | Our run |
| Ackerman (Voss), target = street value | pays 82.7%, closes 90.5% | Our run |
| Read the tell bar, then offer his number | pays 80.4%, closes 93.4% | Our run |
| Lowball and hold | closes 0.5% | Our run |
| Buyers who will pay the full street price when you sell | 13.5% | 200,000-deal sample |
| O'BLOCK free claims on Steam | 4,566 (Oct 23 reading) | Steamworks, read-only |
Download the data (CSV, 136 rows: every move by side, rung and boss rule, with close rate, average price, gain per attempt and offers to close) and the simulator itself (Python, about 230 lines, no dependencies; python haggle-sim.py 40000 reruns all 1.2 million in about 16 seconds).

Paying the ask costs you 28%
Start with one real deal. This morning we recorded three opening moves against the same seller in O'BLOCK for our Beat the haggle page. The Plug, in a skull mask for Halloween, has 5 pairs of New Balanced 574. The street says they're worth $61 a pair. He says: "$320. What you got?"
- Offer all $300 at once: he takes it on the spot. $60 a pair.
- Open at $195, come up to $250, take the number he names: "Make it $260." $52 a pair.
- Open at $195 and hold: he walks. "Come back with money."
Same seller, same shoes, a $40 swing from one decision. That's one deal. I wanted to know what happens across all 121 people in the game, thousands of times each, and whether the famous negotiation playbooks hold up when the other side is code you can read.

How I tested it: the deal code, ported line by line
O'BLOCK is written in Rust and the whole haggle lives in one file, src/deal.rs. Every person has a patience (how many offers before they walk), a greed (how far their number sits from the real value) and a sharpness (how well they know the market). Each deal also rolls a mood. I ported that file to Python: the floor, the ask, the 12% counter zone, the patience check, the tell bar and all six boss rules. I left out the world-level modifiers that scale the floor and the ask together (weather, neighbourhood taste, your angles), because they move both numbers by the same factor.
Then the check that matters: does the port reproduce the game? In the recorded deal, a rival had already bid $263 for the lot. The game sets the floor to at least $263 x 1.01 = $265.63. My $250 offer sits 5.9% under that, inside the counter zone, so the code names a price 35% of the way from his floor toward my offer: $265.63 - 0.35 x $15.63 = $260.16, said out loud as $260. That's the number on screen. The street band checks out too: $305 for 5 pairs, plus or minus 36%, is exactly the "$195 to $415" the game shows a new player.
Each strategy only gets what a player sees: the ask, the street band, and the replies (the tell bar or a counter). The same 40,000 deals (same seller, same mood, same dice) get played eight ways, so every difference is the move, not luck.
Inside one seller's head
Here's what the code does before you say a word. It takes the real value, blurs it by up to 45% for clueless sellers (sharp ones know it cold), and sets a floor under that by 8% to 38% depending on greed. Then he opens 15% to 50% above his own floor. Two rules decide everything after that:
- Any offer at or above the floor closes instantly, at your number. He never refuses money and never says "you could have gone lower". Overpaying is silent.
- Land within 12% under the floor and there's a 55% chance he counters, and the counter is below his own floor. Taking it is the cheapest legal price in the game.
One more thing most players never notice: the middle of the street band is the real value, exactly. The band is a ruler, not a guess.

The eight moves
| Move | What it does (buying) |
|---|---|
| Pay the ask | Say his number back. The "I hate haggling" move. |
| Offer the street price | One offer at the middle of the band. "Fair is fair." |
| Split the difference | Open at the low end of the band, then meet him halfway between your last offer and his ask, every round. Take any counter. |
| Ackerman (Voss) | Target = the street value. Offer 65%, 85%, 95%, then 100% of it, the last one a precise number ($99.63, not $100). Take a counter only if it's under target. |
| Ackerman, low target | Same ladder, target halfway between the band's low end and the value (82%). The "aim high" version. |
| Lowball and hold | Offer half the value and repeat it until he folds. |
| Open low, take his number | 64%, 82%, 95%, 105% of value; take the first counter. Move 2 from the recorded deal. |
| Read the bar | Open at the band's low end, read how warm the tell bar is (with a 4% eyeballing error), solve for his floor, offer 1% above it. Take any counter. |
The Ackerman plan is the one from Chris Voss's Never Split the Difference: set a target, open at 65%, raise to 85, 95 and 100 in shrinking steps, end on a precise, non-round number. For selling, it mirrors to 135/115/105/100, the way negotiation author Michael Wheeler describes it.
The result: a tie at the top, a cliff at the bottom

Against normal sellers, buying:
- Read the bar: 80.4% of street, 93.4% of deals closed, and only 1.3 points above the seller's real floor. That's 18.27 points of value saved per attempt.
- Split the difference: 82.8%, 93.2% closed, 16.07 saved per attempt.
- Open low, take his number: 82.2%, 89.8% closed, 15.99 saved.
- Ackerman at the street value: 82.7%, 90.5% closed, 15.68 saved.
- Ackerman with an aggressive target: 73.7% when it closes, but only 48.8% close. 12.84 saved per attempt, because half the sellers walk.
- Lowball and hold: 0.5% closed. Basically never.
- Offer the street price: 100%. Pay the ask: 102.8%, 23 points over the floor, every time.
So the book's title gets it backwards, at least in this game: splitting the difference beat the Ackerman ladder by 0.39 points per attempt over 40,000 paired deals. That's small, and I'll call it what it is, a tie with a slight edge. On the block (the softest sellers) Ackerman actually wins, 17.38 to 17.04. Up with the billionaires, where sellers are sharper and less patient, both drop to about 11.5, and splitting is ahead again.
The real lesson isn't which ladder. It's that a ladder decided in advance can't hear the seller, and the seller is telling you his number on every offer.
Reading the bar beat both by more than two points per deal, and it survives a sloppy read: with a 10% eyeballing error it still saves 17.03 per attempt, more than either ladder with a perfect script. With a perfect read it's 19.20.
Why Voss's ladder stalls here
Ackerman is built for a human across the table. Its tricks are psychological: the shrinking raises make the other side feel you're hitting your limit, and the precise final number sounds calculated. O'BLOCK's sellers have no feelings about $99.63. They have a floor and a patience counter, and that exposes the plan's two weak points:
- The target is a guess. Set it at the value and you pay about what splitting pays. Set it lower to "aim high" and half the sellers' floors sit above your 100% step, so the ladder runs out and they walk. The 48.8% close rate is that cliff.
- Four offers is a lot of patience. 32 of the 121 people in the game start with a patience of just 1 or 2 offers. A four-step plan that wastes its first two offers on 65% and 85% is gambling with the only resource that resets the deal.
Real research backs the part Ackerman gets right. In a classic set of experiments, Adam Galinsky and Thomas Mussweiler (2001) found that whoever made the first offer, buyer or seller, got the better outcome, and that the edge vanished when the other side focused on the first mover's reservation price. Translated: anchors work on people who anchor. Most O'BLOCK sellers don't, so anchoring buys nothing.
Except one. The boss called the Drifter re-anchors on your offers (his number drifts toward a home your offers pull on), and against him the aggressive Ackerman target jumps to a 61% pass rate vs 47% for the standard one. Anchoring works exactly when, and only when, the other side is anchorable. Lowkey the most realistic seller in the game.
Wheeler makes a similar point about the real world: Voss himself says the method fits zero-sum, single-issue deals, and a 65% opener is a non-starter where prices are transparent, like a car lot. O'BLOCK's street band is about as transparent as prices get.
The bosses: each rule breaks a different move

The bosses in O'BLOCK gate the next rung of the game, and you pass only if you pay close to their hidden floor. Real bosses allow 4% to 10%; we used 8% and a patience of 4 for all of them, the most common setting. Each rule is a trap for one style:
- The Liar (Kan Yay) tells you backwards: close reads cold. Reading the bar falls from 97% to 20%, the worst of any sane move. Split the difference, which never looks at the bar, passes 59%.
- The Mirror and the Silent one blind the bar in other ways (one offer late, or nothing at all). Reading drops to about a third. The scripted ladders barely notice: 48% to 59%.
- Fog only says cold, warm or close. Reading still wins, barely: 61% vs 58%.
- The Haggler (Deacon, Madame Oro) raises his floor 5% every time you speak. Everything dies. Best is split the difference at 22%; Ackerman's four steps pass 16%; reading the bar, which spends offers to learn, passes 5%.
- The Drifter (Elon Tusk) moves his number after every offer. Reading the trend wins, 80%.
No single move beats every boss. Paying the ask passes 0% everywhere, since it's always more than 8% over the floor. If you take one thing from the grid: against a seller who lies, stop listening and run a script; against one who doesn't, stop scripting and listen.
Selling is the hard side

Flip the table and the numbers get harsh. A buyer's ceiling in O'BLOCK averages 89.6% of the street value, and only 13.5% of buyers will pay the full street price or more. "Nobody pays over the street on purpose" is a literal line in the code.
- Take their first offer: closes 100%, at 77.2% of street.
- Read the bar: closes 78.1%, at 91.0%, within a point of their real ceiling.
- Split the difference: closes 50.9%, at 92.0%.
- Ackerman from 135%: closes 10.6%. It gets 106.7% when it lands, from the rare buyer who overvalues the pair, and nothing the other 89% of the time.
The selling version of the lesson: if you're holding inventory and rent is due, a 91% sale today beats a 107% sale one time in ten.
How to haggle in O'BLOCK, in 60 seconds

- Find the middle of the street band. That's the real value. His floor is usually 66% to 92% of it.
- Open at the low end of the band (about 64% of value for a new player). It's below almost every floor, so it costs one patience and buys you a reading.
- Read the bar. A full bar means you're within a few percent; an empty one means 50% or more off. Jump straight to where the bar says his floor is, plus a hair.
- If he names a number, take it. It's below his own floor by construction.
- Bosses change step 3. If the tells feel wrong (a Liar, a Mirror, a Silent one), switch to splitting the difference with his ask. Against the Haggler, make your first offer your best one.
Try the 3-move version on the Beat the haggle page or the 1-minute browser toy. For how the lying NPCs were designed in the first place, read A haggling game with one mechanic, so I taught the NPCs to lie, and for what happened when bots tried to break the economy, the 37,800-bot balance test.
Does any of this work at a car dealership?
My take, and it's a take, not a result: the part that transfers is the shape, not the percentages. Real sellers also have a floor they won't tell you, they also pad the ask, and the cheapest information in any negotiation is what the other side's reactions tell you. The game just makes the tell bar visible. A person's tell is a pause, a "let me check with my manager", a counter that comes too fast.
What doesn't transfer: real people anchor (Galinsky's result), get annoyed, and remember you. O'BLOCK models memory too, in a separate file, but I left it out here. And nobody in real life gives you a street band whose middle is the exact true value. Treat this as a clean lab where the other side's rules are known, not as negotiation advice.
Still, I'd bet the headline survives contact with humans: a fixed script, whether it's "always split" or "65/85/95/100", is worse than a script that changes after the first reply.
What this test can't tell you
- It's a port, not the binary. I matched the recorded $260 deal to the dollar, but the Python random numbers aren't the game's, so averages match the code's logic, not any specific save.
- World modifiers are out. Weather, taste, angles and memory scale the floor and ask together; rival bids (like the $263 one) raise the floor and squeeze the ask, which makes paying the ask a bit less bad than shown.
- The reader is idealised. It solves the bar's math exactly, with a 4% reading error. A real player is slower; the 10% error run (17.03) is closer to a human.
- Single pairs only. Lots get bulk discounts that move both numbers; outlets (stores, auctions) were left out.
The numbers so far
| Number | Value, Oct 24 2026 | Recheck |
|---|---|---|
| Best move, buying, normal sellers | Read the bar, 80.4% of street | next balance patch |
| Split the difference vs Ackerman, gain per attempt | 16.07 vs 15.68 | next balance patch |
| Hardest boss for every move | The Haggler (best: 22% pass) | next balance patch |
| Buyers who pay street or more | 13.5% | next balance patch |
| O'BLOCK free claims | 4,566 (Oct 23) | weekly |
My bet: if we rerun this after the next balance patch, reading the bar still wins on normal sellers and the Haggler is still the hardest boss in the game. Your turn: when you haggle for real, do you run a script or do you wait for the other side to show you something? And has the Ackerman ladder ever actually worked for you?
Play the sellers yourself, free
Every one of those 121 people is in O'BLOCK, free on Steam. You start with $300 and a shoebox and haggle your way up to selling to billionaires, and the Halloween event runs Oct 24 to Nov 1: pumpkins on every stoop and every buyer and seller in costume. Why this over a paid shop sim: it costs nothing, and the people across the table lie, have rules and hold real numbers you can learn to read. If you've had fun for free, the $4.99 Supporter Pack is how the next event gets made. If something in the game is broken, email support@tensorust.com and we fix it; a real person replies within one business day.
Follow for one checked, data-backed experiment from our games and tools, every day.
Sources
- O'BLOCK source,
src/deal.rs(Deal::new_lot_at, Deal::offer) andsrc/world.rs(band_spread, rival bids), shipping build read Oct 24 2026; our port: haggle-sim.py - Our recorded deal against The Plug, Oct 24 2026: tensorust.com/games/beat-the-haggle/
- Chris Voss, Teaches the Art of Negotiation: Bargaining (MasterClass) and the book Never Split the Difference (2016)
- Michael Wheeler, Giving Ground (Grudgingly), The Jazz of Negotiation, Jan 11 2022
- Adam D. Galinsky and Thomas Mussweiler, First Offers as Anchors: The Role of Perspective-Taking and Negotiator Focus, Journal of Personality and Social Psychology, 2001
- O'BLOCK free claims: Steamworks, read-only, Oct 23 2026 4:10 PM ET (sales data as of 12:40 PM PDT)
- Our dataset: data.csv (136 rows)
First published here on tensorust.com on Oct 24, 2026. Related: Beat the haggle, O'BLOCK, How the NPCs lie.
Up next
More on GamesSweeney wants rockets. 37,800 bots crashed my vibe-coded gameMy AI-coded game is out now, free on Steam. 37,800 bot runs of its economy: cheating fails on the street, but the finance layer prints $14 trillion. The data.Read it next →Did this answer your question?
Get the next one by email.
What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.
No spam, never sold. Every email has a one-click unsubscribe.
More: the author, related reading, share this, a free game
Try it yourself · Like games?
Play O'BLOCK, free on Steam
Start with $300 and a shoebox, end up selling sneakers to billionaires. Haggle with people who lie.
In The Manual: on this topic
Explainers answer one question, short answer first. Guides walk you through it step by step.
- Guide · Shipping and sellingHow to handle 64-bit IDs in JSON with JavaScript BigInt
- Guide · Money and the economyIs my rent fair? How to check it with free data
- Guide · Shipping and sellingHow to extract the timestamp from a UUIDv7
- Explainer · Games and SteamSteam update visibility rounds, explained
Read next
- Gaming · Oct 23, 2026 · 11 min readBorrow Balatro's UI grammar, not its cards: 5 builds in one night
- Gaming · Oct 22, 2026 · 10 min readXbox's new cloud cap can't finish 42% of its own games
- Story chapters · Oct 20, 2026 · 9 min read2,077 claimed our free Steam game. 16 played it. 30 GB did that