Solar energy is readily available in most climates and can be used for water purification. However, solar disinfection of drinking water mostly relies on ultraviolet light, which represents only 4% of the total solar energy, and this leads to a slow treatment speed. Therefore, the development of new materials that can harvest visible light for water disinfection, and so speed up solar water purification, is highly desirable. Here we show that few-layered vertically aligned MoS2 (FLV-MoS2) films can be used to harvest the whole spectrum of visible light (∼50% of solar energy) and achieve highly efficient water disinfection. The bandgap of MoS2 was increased from 1.3 to 1.55 eV by decreasing the domain size, which allowed the FLV-MoS2 to generate reactive oxygen species (ROS) for bacterial inactivation in the water. The FLV-MoS2 showed a ∼15 times better log inactivation efficiency of the indicator bacteria compared with that of bulk MoS2, and a much faster inactivation of bacteria under both visible light and sunlight illumination compared with the widely used TiO2. Moreover, by using a 5 nm copper film on top of the FLV-MoS2 as a catalyst to facilitate electron–hole pair separation and promote the generation of ROS, the disinfection rate was increased a further sixfold. With our approach, we achieved water disinfection of >99.999% inactivation of bacteria in 20 min with a small amount of material (1.6 mg l–1) under simulated visible light. Few-layered, vertically aligned MoS2 films can efficiently harvest visible light for photocatalytic water disinfection, allowing >99.999% bacteria to be rapidly inactivated.