We present an O( √ n log n)-approximation algorithm for the problem of finding the sparsest spanner of a given directed graph G on n vertices. A spanner of a graph is a sparse subgraph that approximately preserves distances in the original graph. More precisely, given a graph G = (V, E) with nonnegative edge lengths d : E → R≥0 and a stretch k ≥ 1, a subgraph H = (V, EH) is a k-spanner of G if for every edge (s, t) ∈ E, the graph H contains a path from s to t of length at most k · d(s, t). The previous best approximation ratio was ˜O(n2/3 ), due to Dinitz and Krauthgamer (STOC ’11). We also improve the approximation ratio for the important special case of directed 3-spanners with unit edge lengths from ˜O( √ n) to O(n1/3 log n). The best previously known algorithms for this problem are due to Berman, Raskhodnikova and Ruan (FSTTCS ’10) and Dinitz and Krauthgamer. The approximation ratio of our algorithm almost matches Dinitz and Krauthgamer’s lower bound for the ...