Jacob Boyes was watching a CCTV monitor in the back of Carleton Stores in Pontefract when the hooded man entered the premises shortly before 6.30pm on Monday evening.
He walked over to the counter and pulled out sword, which was around 18” long, and pulled a mask over the bottom half of his face before turning to Mr Boyes’ mother, Tracy and said: “Give me all the money now, I’m not messing around,” and threw a yellow JD Sports bag at her.
He then tried to get into the till himself, but at this point Mr Boyes hit the panic button in the back room and then ran through to the front of the shop. The robber then fled the premises on Carleton Glen.
It is thought he got into a silver-coloured Vauxhall Astra at the end of the road where a getaway driver was waiting.
Mr Boyes, 20, who has run the shop with his mother for the last two years, said: “When you have shop like this you always expect something to happen but when you see the size of the blade and it’s pointing at your mum, it’s terrifying.
“We were both shaking afterwards, but the police were really quick to come, there were armed police and dog units here.
“We’ve never had anything like this happen to us before. I really hope they catch him.”
The suspect is described as a white male, in his early 20s and of slim build. He had dark hair and brown eyes.
The robber was wearing blue Adidas tracksuit bottoms and a light-green or brown hooded top.
Det Insp David Rogerson, of Wakefield CID, said: “This was clearly a very distressing incident for the victim and our enquiries remain ongoing.
“Armed officers attended the scene yesterday evening and neighbourhood patrols are continuing in the area.
“I would ask for anyone with information on the incident to please contact police. I would also ask anyone who saw a silver car driving in the area at the time of the incident to get in contact with officers.”
Anyone with information is asked to contact Wakefield CID on 101, quoting crime reference 13180376752 or information can be passed to independent charity Crimestoppers on 0800 555 111.