He had starring roles in the British war drama Private Peaceful (2012), the romantic film How I Live Now (2013), For Those in Peril (2013), for which he won a BAFTA Scotland Award, and Marrowbone (2017).
MacKay co-starred in the Marc Evans-directed musical film Hunky Dory opposite Minnie Driver, Aneurin Barnard and Kimberley Nixon, which is set in 1970s Swansea.
In 2014, MacKay played the role of Joe, a 20-year-old struggling to come out in a homophobic Britain in 1984 in the film Pride (based on a true story) also starring Bill Nighy.
In July 2015, MacKay filled the title role of Lewis Aldridge in the BBC's two-part television adaptation of Sadie Jones’ debut novel The Outcast.
In 2017, he played Jack, the main character in Marrowbone, a psychological horror film directed and written by Sergio G. Sánchez, and also starring Anya Taylor-Joy, Charlie Heaton and Mia Goth.
[16] That same year, MacKay played the lead role of lance corporal William Schofield, a young British World War I soldier in 1917, directed by Sam Mendes.
[18] MacKay stars in Nathalie Biancheri's film Wolf alongside Lily-Rose Depp, for which principal photography began in Ireland in August 2020.
[24] In 2023, Mackay starred in LGBT revenge thriller Femme alongside Nathan Stewart-Jarrett, for which he won Best Joint Lead Performance in the British Independent Film Awards.
"[32] The Independent writer Alexandra Pollard wrote that MacKay's roles are tactically "chosen to broaden his perspective on the world" and that he is "clearly intensely thoughtful, in both conversation and in his career.
[34] In November of that year, MacKay married his long-term girlfriend Doone Forsyth,[35] a makeup artist and hair stylist whom he met on the set of 1917, and the couple have two children.