Born in Novo Delchevo, near to Sandanski, Karachanakov progressed through Pirin Blagoevgrad's youth system, having joined the club at the age of 14 in 2006.
He made his first team debut on 26 February 2011 in a 1–0 A PFG loss against Cherno More, coming on as a substitute for Anton Kostadinov. On 12 March, he scored his first goal in his first start, netting Pirin's only goal in their 2–1 loss against Litex Lovech.
Karachanakov finished the 2010–11 season with 16 appearances and four goals in all competitions, helping Pirin to secure their status in the top-flight of Bulgarian football league system. Finally, Pirin was relegated to fourth division, after the license necessary to play in the A PFG was denied by Bulgarian Football Federation.
On 18 June 2011, Karachanakov joined CSKA Sofia on a free transfer. He scored his first league goal for CSKA on 22 March 2012, in the 4–0 home win over Lokomotiv Sofia. He scored in his next two games as well, against Lokomotiv Plovdiv on 25 March and against Beroe Stara Zagora three days later.
On 31 August 2012, Karachanakov scored his first brace for the club, scoring twice in a 4–1 away win against Minyor Pernik. In October 2012, he sustained an injury during The Eternal Derby and was ruled out until the end of the season.
Karachanakov made a full recovery by June 2013. On 14 December 2013, he scored his first two goals (and second brace for the club) after coming back from injury in a 7–0 thrashing of Lyubimets 2007.
On 27 July 2014, Karachanakov scored the opening goal and assisted Sergiu Buș' second in the 2–0 win over Levski Sofia in The Eternal Derby. For his performance he won the Man of the Match award. In January 2015, he left the "armymen" due to a combination of financial reasons (unreceived salaries) and not being granted sufficient playing time.
His first goal for the Bulgarian U21 squad came in his second match on 29 February 2012 as he scored the only goal in a 1–0 friendly win against Poland U21.CSKA Sofia
Bulgarian Supercup (1): 2011