To assign teachers to schools, a modified version of the well-known deferred acceptance mechanism has been proposed in the literature and is used in practice. We show that this mechanism fails to be fair and efficient for both teachers and schools. We identify a class of strategy-proof mechanisms that cannot be improved upon in terms of both efficiency and fairness. Using a rich dataset on teachers’ applications in France, we estimate teachers preferences and perform a counterfactual analysis. The results show that these mechanisms perform much better than the modified version of deferred acceptance. For instance, the number of teachers moving from their positions more than triples under our mechanism.