A radio frequency identification (RFID) reader will fail to identify tags if a collision occurs. This paper proposes a bi-slotted binary tree algorithm (BSBTA) with stack for RFID tag anti-collision to improve the performance of binary tree algorithm (BTA). In BSBTA, the reader detects collisions by Manchester code and stores colliding prefixes in a stack. The query is composed of a two-bit prefix and an index value. Following every reader query, there are two timeslots for tags whose pointers and identities (IDs) match the query to respond, one for the tag whose next bit is 0 and the other for the tag with 1 as its next bit. Performance analysis and evaluation are also given. The time complexity and the communication complexity of BTA and BSBTA are derived. The simulation results compare the performance of BSBTA with several related anti-collision algorithms. It is shown that BSBTA outperforms BTA in terms of the average number of responded bits and timeslots for one tag identification.