We introduce FlowCutter, a novel algorithm to compute a set of edge cuts or node separators that optimize cut size and balance in the Pareto-sense. Our core algorithm heuristically solves the balanced connected st-edge-cut problem, where two given nodes s and t must be separated by removing edges to obtain two connected parts. Using the core algorithm as subroutine, we build variants that compute node separators which are independent of s and t. From the computed Pareto-set, we can identify cuts with a particularly good tradeoff between cut size and balance that can be used to compute contraction and minimum fill-in orders, which can be used in Customizable Contraction Hierarchies (CCH), a speed-up technique for shortest path computations. Our core algorithm runs in O(c|E|) time where E is the set of edges and c is the size of the largest outputted cut. This makes it wellsuited for separating large graphs with small cuts, such as road graphs, which is the primary application motivating our research. For road graphs, we present an extensive experimental study demonstrating that FlowCutter outperforms the current state-of-the-art both in terms of cut sizes and CCH performance. By evaluating FlowCutter on a standard graph partitioning benchmark, we further show that FlowCutter also finds small, balanced cuts on non-road graphs. Another application is the computation of small tree-decompositions.To evaluate the quality of our algorithm in this context, we entered the PACE 2016 challenge [13] and won the first place in the corresponding sequential competition track. We can therefore conlude that our FlowCutter algorithm finds small, balanced cuts on a wide variety of graphs.