To solve problems of low positioning accuracy and long time-consuming in indoor visible light three-dimensional positioning system, a visible light three-dimensional positioning method based on the improved hybrid bat algorithm (IHBA) is proposed in this paper. Firstly, some beacon points are set at the beginning of the IHBA to reduce the number of iterations. Secondly, weight coefficient is defined to improve positioning accuracy when the fitness function is constructed. Thirdly, aiming at controlling the search speed reasonably, an adaptive search factor is introduced while the bat individual update formula is designed. Finally, the chaotic perturbation operation is used to avoid the algorithm falling into local optimum. In indoor simulation environment, the size of which is 5m×5m×3m, the average positioning error of the IHBA is 1.16cm and the positioning time is 1.85s. To verify the actual effectiveness of IHBA, a receiver is placed in the experimental environment, the size of which is 1.5m×1.2m×2m. Through the optical power detected by the receiver, the processor calculate its coordinates with IHBA. The average positioning error of the IHBA is 3.64cm and the positioning time is 0.89s. In this paper, the three-dimensional positioning system based on the IHBA algorithm can achieve high-precision and low-time positioning, and it has practical application value in existing indoor positioning methods.