We provide a mathematically proven, simple and efficient algorithm to build localised Wannier functions, with the only requirement that the system has vanishing Chern numbers. Our algorithm is able to build localised Wannier for topological insulators such as the Kane-Mele model. It is based on an explicit and constructive proof of homotopies for the unitary group. We provide numerical tests validating the methods for several systems, including the Kane-Mele model. arXiv:1812.06746v1 [math-ph] 17 Dec 2018 locality of Wannier functions, starting from an initial guess. This algorithm is able to yield exponentially localised Wannier functions [PP13], but depends strongly on the choice of the initial guess. Recent advances, based on the use of matrix logarithms [CLPS17], selected columns of the density matrix (SCDM [DLY15, DLY17]) or an extended set of projections [MCCL15], provide ways to automatically construct initial projections, without any specific physical input.However, in the topologically non-trivial FTRS case, such as the Kane-Mele model of topological insulators, substantial difficulties appear. Since no symmetric Bloch frame can exist, algorithms that do not explicitly break this symmetry fail. This means that the initial guess for the method of [MV97] has to break this symmetry manually, which often proves challenging in practice. In the method of [CLPS17], this manifests as a crossing of eigenvalues, making the logarithm ill-defined (see Appendix of [CLPS17]). In the SCDM method, this appears as a loss of rank, unless a system-specific choice of columns is imposed [Lin18].The goal of this paper is to provide an automatic method that constructs localised Wannier functions even in the FTRS case. Our method is based on a standard reduction of the problem of finding Wannier functions to that of finding homotopies in the unitary group U(N ). This problem was solved using matrix logarithms in [CLPS17], and using a multi-step logarithm based on a perturbation argument in [CHN16,CM17]. In this paper, we instead use a iterative method where the columns of the unitaries are contracted one by one. This method, which is natural and robust, implements an idea hinted at, but not detailed, in [FMP16a, p.81]. Unlike the similar method of [CHN16, CM17], it does not exploit the eigenstructure, which proves unstable in practice.We emphasise that methods to construct Wannier functions specifically for the case of Z2 insulators were proposed in [SV11], [SV12], [WST16] and [MCCL16]. These methods however require model-specific information, while our method is completely automatic.The paper is organised as follows. We present in Section 2 the definition of Wannier functions, and the equivalence between localised Wannier functions and smooth Bloch frames. Then, we recall in Section 3 the standard reduction from the problem of finding smooth Bloch frames to that of finding homotopies of unitary matrices. We explain in Section 4 the difficulties of this problem and our solution, which we illustrate numerically in Section 5.