We study the problem of computing the sharpest static-arbitrage upper bound on the price of a European basket option, given the bid–ask prices of vanilla call options in the underlying securities. We show that this semi-infinite problem can be recast as a linear program whose size is linear in the input data size. These developments advance previous related results, and enhance the practical value of static-arbitrage bounds as a pricing technique by taking into account the presence of bid–ask spreads. We illustrate our results by computing upper bounds on the price of a DJX basket option. The MATLAB code used to compute these bounds is available online at www.andrew.cmu.edu/user/jfp/arbitragebounds.html.