A card guessing game is played between two players, Guesser and Dealer. At the beginning of the game, the Dealer holds a deck of n cards (labeled 1, ..., n). For n turns, the Dealer draws a card from the deck, the Guesser guesses which card was drawn, and then the card is discarded from the deck. The Guesser receives a point for each correctly guessed card.With perfect memory, a Guesser can keep track of all cards that were played so far and pick at random a card that has not appeared so far, yielding in expectation ln n correct guesses. With no memory, the best a Guesser can do will result in a single guess in expectation.We consider the case of a memory bounded Guesser that has m < n memory bits. We show that the performance of such a memory bounded Guesser depends much on the behavior of the Dealer. In more detail, we show that there is a gap between the static case, where the Dealer draws cards from a properly shuffled deck or a prearranged one, and the adaptive case, where the Dealer draws cards thoughtfully, in an adversarial manner. Specifically:1. We show a Guesser with O(log 2 n) memory bits that scores a near optimal result against any static Dealer.2. We show that no Guesser with m bits of memory can score better than O( √ m) correct guesses, thus, no Guesser can score better than min{ √ m, ln n}, i.e., the above Guesser is optimal.3. We show an efficient adaptive Dealer against which no Guesser with m memory bits can make more than ln m + 2 ln log n + O(1) correct guesses in expectation.These results are (almost) tight, and we prove them using compression arguments that harness the guessing strategy for encoding.