街的走线为昔日油麻地的原始海岸线。上海街于1887年建成时，因为位于众坊街和当时的差馆街交界有第一代的油麻地警署，因此定名为差馆街（Station Street）。1898年11月12日以差馆为中心分成南北两段。直至1909年3月19日，因香港岛有差馆上街，为免引起混乱，把全段易名为上海街。1970年代以前，弥敦道还没发展，上海街是当时主要的营商地点，但现只剩下一些售卖与中国传统有关的商店，如裙褂店及风水店。上海街原本为3线南行，1970年代由于兴建地铁关系，上海街由荔枝角道至众坊街一段的右边行