Rapid development and deployment of vehicular ad-hoc networks (VANETs) require an efficient and scalable media access control (MAC) protocol to support high-priority safety applications and infotainment requirements. This paper proposes SATMAC, a self-adaptive time division multiple access (TDMA)-based MAC protocol for VANETs. In order to improve the stability of the time slot scheduling in VANETs, a slot status updating strategy is carefully designed, which utilizes accurate information of the two-hop neighbors and the rough information of the three-hop neighbors to detect the potential packet collisions and avoids potential collisions by adjusting the occupied time slot. Besides, an adaptive frame length (the number of time slots contained in a frame) approach is proposed on the basis of the slot adjustment to support various densities of vehicles, where the frame length between neighbors can be inconsistent. We conduct theoretical analysis and extensive simulations in a realistic VANET environment to evaluate SATMAC. Simulation results show that compared with IEEE 802.11p and LTE-V2X PC5 Mode 4, SATMAC significantly improves PDR of beacons over 60%. Moreover, our SATMAC design is further implemented and validated on our FPGA-based testbed.