The attack in Almar district of Faryab province, bordering Turkmenistan, highlights the heavy toll of such attacks on civilians after 13 years of war.
No group claimed responsibility for the suicide bombing, which comes just before another round of peace negotiations between the government and Taliban militants are due to start.
"This morning a suicide bomber detonated his explosives- laden vest in a market in Almar," Faryab governor Abdul Sattar Barez told AFP.
Almar district chief Saleh Mohammad Saleh confirmed the death toll, adding that some of the wounded were in a critical condition.
"We had received intelligence report that a suicide attacker has entered the market in Almar, so we set up a police check point to search for him," local police commander Saif, who goes by one name, told AFP.
"We were looking for him when he blew himself up near an armoured military vehicle," Saif said, adding that the attacker was aged between 20 and 25.
Civilians often fall victim to such attacks, with almost 1,000 Afghan civilians killed during the first four months of the year, according to the UN mission in Afghanistan.
