Weaver was born in 1981 on the 3rd of January in Bolton, England. He went to Rivington and Blackrod High School and studied acting at the Guildhall School of Music and Drama.
Weaver's first paid theatre role was in Trevor Nunn's 2004 production of Hamlet, at the Old Vic theatre in London. Weaver played the Prince of Denmark on Monday evenings and at all matinees, whilst Ben Whishaw took on the role for evening performances, from Tuesday to Saturday.
Weaver has appeared in minor roles in films such as Colour Me Kubrick (2005) (uncredited), The Merchant of Venice (2004), Marie Antoinette (2006), and Unmade Beds (2009); he also played "The Kid" in Doom, and an uncredited Gulf War soldier in Armistice (2014).
His theatre credits include Meshak in the Royal National Theatre's 2006-07 production of Helen Edmundson's Coram Boy.
Weaver plays fledgling Anglican curate Leonard Finch in the TV series Grantchester (since 2014), assisting the Vicar of Grantchester, James Norton's Sidney Chambers. In 2016 Weaver was voted 64th sexiest male in popular Bhutanese magazine Yeewong because of his role in Grantchester, gaining more votes than his co-star James Norton who was in 72nd place.
He is also known for his role as Rex in the game Xenoblade Chronicles 2 released in December 2017.