We bought six poker bots and made them play each other

by

We bought six poker bots and made them play each other

We had two AI bots, a few rule-based bots with profiles, a scam bot on a remote rig, four virtual machines, two Android emulators, a private club on PPPoker, hand trackers, and 24/7 screen recording. Not that all of this was absolutely necessary for the experiment. But once you’ve started collecting poker bots, you’ve got to take it seriously.

So… we bought all the commercial poker bots at the end of 2025, configured each one according to the sellers’ recommendations, and sat them down at one table. For almost three weeks they played against each other – hundreds of hours, ~26k recorded hands.

What came of all this? Quick recap:

  • AI poker bots are winning, rule-based bots are losing. Reliable figures (95% interval): winrate +29.2 bb/100 versus -24.3. Everything is calculated taking into account margins of error, SD, and so on.
  • No profile, not even a paid top profile, works in the long run. A rule-based bot with it has a winrate of -28 bb/100. That’s not even better than with the free default one.
  • Old bots running on Windows on native PPPoker clients – were automatically banned by the system after approximately 10k hands.
  • We were ready to keep playing up to 50-100k hands, but one PPPoker client update broke all the old bots. But the hands already played and the data are enough for conclusions and numbers.

Why we started this experiment

Every poker bot vendor writes roughly the same thing: AI, GTO, machine learning, “plays like a top reg,” “bluffs and remembers opponents,” “doesn’t get banned and looks like a human.” Nobody shows long-term graphs, of course, and when asked about results they answer along the lines of “the best proof is to buy it and check for yourself.”

I had roughly already figured out the outcome of this experiment, but my curious acquaintance wanted to see it live, and on top of that a new “AI poker bot” had just hit the market. Well, why not? Let the fun begin!

Setup

  • Where: PPPoker, a new private club with new accounts.
  • When: November 27 – December 15, 2025.
  • What: NL4, 6-max and 9-max tables.
  • Stacks: the bots played 100–200+ bb, as the vendors recommend. Winnings stayed on the table, so the winners’ stacks grew over time. Not all bots could auto top-up – for those, the stack was topped up manually ASAP.
  • How many: 26,395 hands.
  • How we recorded: trackers Hand2Note 4, EliteHUD, and screen recording with Bandicam.

Bots don’t care about limits: whether it’s 0.02/0.04 on the table or 5/10 — the bot calculates in big blinds. So the result is meaningful for any limit with similar stacks and rake in big blinds.

At the table sat six commercial products in seven configurations:

Who What it is
AI Bot A AI bot; the poker engine runs on the vendor’s side
AI Bot B AI bot; the poker engine runs on the vendor’s side
Rule-based bots based on OpenHoldem Bot 1 working on profiles: default and paid top profile.
Bot 2 working on default profile (as a separate product).
Rule-based bot 3 Another bot working on profiles, default profile
3UpGaming Bot sold as “AI + GTO”

The difference between the two generations is how the bot makes a decision. A rule-based bot works on a profile – a large set of rules with a predefined algorithm. Usually the base of such a profile is simplifications from a GTO solver, equity calculation plus the author’s own tweaks in one direction or another – to make the bot tighter or more aggressive, possibly with some randomization here and there. The calculations of such bots are done on the user’s PC and are usually transparent, unlike AI bots. A machine learning bot, on the other hand, computes the decision: the model and the algorithm evaluate the specific situation as a whole.

By the way, “AI” in a poker bot is not language models like ChatGPT, Grok, Gemini and so on (as some people think). A text model (LLM) is trained on texts and guesses the next word: it can reason about poker, but it doesn’t calculate it. A poker model, on the other hand, is typically trained on the game itself — billions of hands played against itself + fine-tuning on real “live” hands. Its input is not words, but cards, stacks, positions and the entire betting history, and its output is a decision. So you can’t just put ChatGPT at a table and get a profitable player. And there’s no “pure” neural network in a poker bot either: the model typically works in tandem with calculation and search algorithms and constant feedback and fine-tuning.

In the screenshot below, this is roughly what it looked like. On the right, two Android emulators with AI bots, in the center a browser with 3UpGaming’s remote machine, on the left one of the virtual machines with rule-based bots. Product names are blurred out – we don’t advertise or promote any specific vendor, we compare the new generation with old bots that are still on sale.

Poker bots competition setup: Android emulators with AI bots and virtual machines with rule-based bots

Each rule-based bot was running in its own virtual machine, VMWare shows one machine on screen at a time — the rest were playing in neighboring tabs.

The timelapse video — ten hours of play in a minute and a half, so you understand how fun it was. One bot’s emulator window (top right) looks frozen for a while: a display bug of that bot, it kept playing.

Results and charts

The first chart – overall statistics:

Poker bots competition results: all bots

The second – without 3UpGaming:

Poker bots competition results without 3UpGaming

The 3UpGaming bot immediately started handing out chips to everyone — more generous than any fish. How exactly — we broke it down in detail in a separate review. If we keep its hands in the tally, the results of other bots will be blurred due to the random chip distribution by our fish bot.

Therefore all final results are calculated without hands where 3UpGaming was sitting at the table. That leaves ~17k hands, and luckily for us, on such a sample the picture is the same, only the rule-based bots’ losses got even bigger (3UpGaming’s chips had been covering part of them).

AI bots are winning, rule-based bots in all configurations — losing.

  • AI bots together: +29.2 bb/100. Won 8,802 bb.
  • Rule-based bots together: −24.3 bb/100. Lost 11,836 bb.
  • The difference of 3,034 bb went to the club as rake. If the chips were tied to dollars at these stakes, the AI bots would be up about $350, the rule-based bots down about $470, and about $120 would go to the club. So the most reliable winner was the club 🙂

AI poker bots vs rule-based poker bots: cumulative winnings

I immediately want to ask — was it just luck? After all, poker is a game with high variance. That’s why for each result the margin of error is calculated — the range in which the true winrate lies. If it lies entirely on one side of zero, luck doesn’t explain the result.

Poker bots win rate with 95% interval

If we take both so-called generations of poker bots (AI vs rule-based) — their margins of error don’t overlap with each other, nor with zero. AI bots: from +17 to +43 bb/100. Rule-based bots: from −34 to −17.

One could object: there were two AI bots at the table, and four rule-based ones. So AI bots more often got rule-based opponents, and it was easier for them to win.

That’s true, and it affects how much they won. With a larger number of hands, a different set of opponents, different profiles of old bots, instead of +29 bb/100 and −24 bb/100 you’d get different numbers. But it doesn’t affect who won. We split the hands different ways — by table type, by dates, by number of players at the table — and in every slice modern bots were winning, and rule-based ones were losing:

Slice Hands AI bots Rule-based
6-max tables 14,143 +28.1 −24.0
9-max tables 3,152 +35.0 −25.6
Before December 8 12,316 +29.9 −21.7
From December 8 4,979 +27.6 −33.8
2–3 players at the table 4,174 +41.8 −49.2
4–5 players 8,159 +29.6 −26.0
6 or more 4,962 +21.3 −15.1

Every fourth hand of the clean sample was played at a table where only two or three remained: bots left and rebought, the table thinned out for a while, and in such cases the gap is most visible. At full tables it’s more modest, +21 vs −15, but even there both groups are confidently on their respective sides of zero.

To repeat myself – these are the results of our current “poker bots vs poker bots” setup, and these results cannot be extrapolated to playing against humans.

Bots win off each other’s mistakes, and bots’ mistakes and humans’ mistakes are different. A rule-based bot makes the same mistake every time* (almost, since some have a randomness factor): plays too tight, folds to pressure, and responds to the same bet the same way an infinite number of times in a row. Vendors say modern bots find and exploit such leaks during play (after a certain number of hands, once they’ve formed a “profile” of the opponent).

But a human is a human: calls too much, tilts, takes risks, bluffs, plays differently at the start and end of a session, adjusts to the opponent. Besides, rule-based bot profiles are often written specifically for the typical pool of recreational players, not for another bot. So a rule-based bot that lost here might look noticeably better against a live table, and the winner of our experiment won’t necessarily beat regs at the tables just as confidently. How AI bots play against humans is a topic for a separate article.

AI Poker Bot vs AI Poker Bot: who won?

AI Bot A vs AI Bot B: cumulative winnings

AI Bot B confidently led until December 8 and never once dropped below zero in the running total over the entire experiment. But at the finish, AI Bot A came out on top: +47.1 bb/100 vs +13.2 bb/100.

Does this mean AI Bot A is stronger? No. The difference between them is smaller than the margin of error. 62% of AI Bot A’s total winnings came from ten hands, four of them against AI Bot B.

When the AI bots played against each other, pots were often large, as in this clip: big wins and losses also give a big margin of error. So, to answer which of the two is stronger, you need a different format — heads-up with a large volume of hands. If you’re interested, we’ll run this experiment and publish the results.

PPPoker’s anti-cheat caught rule-based bots

We configured all bots according to vendor recommendations, including stealth settings. However, this didn’t save bots working in the Windows environment — such bots got banned by PPPoker’s anti-cheat system after roughly 10k hands (i.e. not a ban from the club, but from the entire platform).

PPPoker ban notice: detected bot usage

One of our banned accounts was the club owner, so along with it we lost control of the club too — we had to create a new one, and all the old bots got new accounts. AI bots continued on the same accounts they started with, and to this day haven’t received a single ban.

The update broke the old bots

Old bots mostly run on OpenHoldem (Warbot, InHuman and other custom builds), Shanky, etc. — with the poker room’s native client running in Windows. Such a bot looks at the desktop client window, recognizes the table “picture”, cards and buttons, and clicks the mouse for the player. Each table for it is a separate Windows window, which it finds and reads, and matches against its saved table “map”.

At the end of 2025, PPPoker had two branches of the desktop client: the old v40, where each table opened in its own window, and the new v220, where tables and the lobby are all crammed into one window. Rule-based bots could only work with the old one. In mid-December, PPPoker shut down the v40 branch, and all rule-based bots at our table stopped working.

New PPPoker desktop client: all tables and the lobby in one window

We wrote to the developers’ support, and the answers were all about the same thing:

“Right now it’s impossible to make the bot for it. The main problem now is that tables are all placed inside the same parent window”

“Wow, they changed everything. No more separate windows for poker table windows? Having them all in a single window with the lobby makes re-support extremely challenging. So this is on the back burner for now.”

In April 2026, nothing had changed: “Our bot needs each table in separate window to work”. So, unfortunately, we had to stop the experiment, because there was no single poker room left that was supported by all bots at the same time, where we could similarly create a club and put everyone at one table.

Summary table

Bot Hands without the scam bot bb/100 without the scam bot Margin of error bb/100 over all hands
AI Bot A 14,225 +47.1 +14 to +88 +50.6
AI Bot B 15,906 +13.2 −21 to +46 +13.9
Rule-based 1 · default 13,758 −16.3 −26 to −2 −3.7
Rule-based 2 · default 9,121 −19.1 −43 to +4 −10.2
Rule-based 1 · paid top profile 13,593 −28.0 −48 to −10 −12.1
Rule-based 3 12,235 −33.1 −62 to −8 −15.7
3UpGaming — — — −147.0 (9,100 hands)

Limitations of the experiment itself: sessions were stopped and started manually; the stack depth of the bots was different: winnings stayed on the table, and the winners’ stacks grew. Bots that couldn’t auto top-up had their stacks topped up manually, which interrupted play, so the total number of hands differs from bot to bot.

Details for those who want to dig deeper

Playing style

Bot VPIP PFR AF
AI Bot A 36.1% 26.2% 2.6
AI Bot B 41.2% 22.7% 1.3
Rule-based 1 · default 17.7% 15.2% 5.5
Rule-based 2 · default 23.5% 16.8% 2.9
Rule-based 1 · paid top profile 26.8% 21.8% 3.3
Rule-based 3 27.9% 20.6% 2.4

AI bots play noticeably looser: they play a third of hands or more, rule-based bots — between one in six and one in four. Rule-based 1 · default compensates for the narrow range with aggression: it bets and raises five and a half times more often than it calls.

Where the money is made

Bot Non-showdown, bb/100 Showdown, bb/100
AI Bot A +14.7 +32.4
AI Bot B +10.0 +3.2
Rule-based 1 · default −18.7 +2.4
Rule-based 2 · default −26.0 +6.8
Rule-based 1 · paid top profile −6.9 −21.0
Rule-based 3 −6.9 −26.2

“Showdown” — hands where the bot itself reached the showdown. AI bots are winning on both lines. Rule-based 1 · default and Rule-based 2 · default lose mainly at non-showdown: they give up pots under pressure. Rule-based 1 · paid top profile and Rule-based 3 — on the contrary, lose at showdown: they reach it with hands worse than their opponent’s.

Rake

Rake is mainly paid by the winners: it’s taken from pots, and they’re the ones winning the pots. For AI bots, it’s around 5.5 bb/100.

How many hands are needed to reliably name a winner

The margin of error narrows slowly, like the square root of the number of hands: to halve it, you need four times as many hands. For one bot in such a pool:

Hands Margin of error, ±bb/100
15,000 35
26,000 27
60,000 18
100,000 14
250,000 9

So the difference between two AI bots of 30 bb/100 over 15 thousand hands is impossible to distinguish.

How the margin of error was calculated

The honest way to find out how much of the result is luck is to repeat the experiment a thousand times. We only have one experiment, so we resample it from itself. All 30 sessions go into a bag, from the bag a session is drawn 30 times and put back each time. You get an “alternative experiment” where some session came up three times, and some didn’t come up at all. The winrate is calculated for it, and so on two thousand times. We cut off 2.5% of the most extreme results from each side — the remainder is the margin of error.

We resample sessions specifically, not individual hands: hands within one session are linked — same table, same opponents, same stacks. For an individual bot, this makes the margin of error about 1.4 times wider than the textbook formula would give. For groups, it actually works the other way around: bots in the same group often play pots against each other, and in the group total these chip transfers cancel each other out.

The resamples are random, so a repeated recalculation gives slightly different boundaries. We checked with twenty recalculations in a row: for groups the boundaries shift by 1–2 bb/100, for individual bots by 3–5. The conclusions don’t change in any of them.

Archive

poker-bots-competition-hands.zip (3.2 MB).

  • 26,395 hands in a format that Hand2Note, PokerTracker and HM3 can read, and separately 17,295 without the scam bot. Players — PPPoker account numbers; next to it a table showing which account played which row in the article.
  • In the archive are hands that at least one tracker saw. Trackers were running on all bots except AI Bot B (couldn’t connect any available tracker to it), its hands were recorded by opponents’ trackers.
  • In some hands, hole cards of several bots are revealed at once, even those who didn’t reach the showdown: all trackers’ databases are merged into one.