Low-income families in the United States tend to live in neighborhoods that offer limited opportunities for upward income mobility. One potential explanation for this pattern is that low-income families prefer such neighborhoods for other reasons, such as affordability or proximity to family and jobs. An alternative explanation is that families do not move to high-opportunity areas because of barriers that prevent them from making such moves. We test between these two explanations using a randomized controlled trial with housing voucher recipients in Seattle and King County. We provided services to reduce barriers to moving to high-upward-mobility neighborhoods: customized search assistance, landlord engagement, and short-term financial assistance. The intervention increased the fraction of families who moved to high-upward-mobility areas from 14% in the control group to 54% in the treatment group. Families induced to move to higher opportunity areas by the treatment do not make sacrifices on other dimensions of neighborhood quality and report much higher levels of neighborhood satisfaction. These findings imply that most low-income families do not have a strong preference to stay in low-opportunity areas; instead, barriers in the housing search process are a central driver of residential segregation by income. Interviews with families reveal that the capacity to address each family's needs in a specific manner – from emotional support to brokering with landlords to financial assistance – was critical to the program's success. Using quasi-experimental analyses and comparisons to other studies, we show that more standardized policies – increasing voucher payment standards in high-opportunity areas or informational interventions – have much smaller impacts. We conclude that redesigning affordable housing policies to provide customized assistance in housing search could reduce residential segregation and increase upward mobility substantially.