It would allow children to transfer from city elementary schools to private and parochial schools if their school ranks in the bottom 10 percent in district test scores.
Each student would receive about $3,700 in state money.
State Senator James Meeks pushed the voucher bill through the senate with a few votes to spare.
However, it still faces hurdles: for instance, teachers' unions are opposed.
The unions argue that public money should not go to private schools and say students left behind could suffer.