Abstract. We deal with the problem of finding such an orientation of a given graph that the largest number of edges leaving a vertex (called the outdegree of the orientation) is small. For any ε ∈ (0, 1) we show anÕ(|E(G)|/ε) time algorithm 3 which finds an orientation of an input graph G with outdegree at most (1 + ε)d * , where d * is the maximum density of a subgraph of G. It is known that the optimal value of orientation outdegree is d * . Our algorithm has applications in constructing labeling schemes, introduced by Kannan et al. in [18] and in approximating such graph density measures as arboricity, pseudoarboricity and maximum density. Our results improve over the previous, 2-approximation algorithms by Aichholzer et al.