Best known for playing Legolas in the Lord of the Rings and Hobbit films and Will Turner in the Pirates of the Caribbean series. He has also appeared in such films as Troy, Kingdom of Heaven, and New York, I Love You. In 2019, he began starring in Amazon's neo-noir series Carnival Row.
He and his sister participated in poetry and Bible reading competitions while growing up. He was brought up as a member of the Church of England.
He was named a UNICEF Goodwill Ambassador in 2009.
After his mother's husband, the anti-Apartheid novelist Harry Saul Bloom, died, his mother told him that his real father was family friend Colin Stone. He dated his Elizabethtown co-star Kirsten Dunst in 2005. He had a son named Flynn with model Miranda Kerr, whom he was married to from 2010 to 2013. He got engaged to pop star Katy Perry in 2019 and in August 2020, they welcomed a daughter named Daisy together.
He co-starred with Colin Firth in the 2010 drama Main Street.