When actors commit to a role, the last thing they want to do is give it up. They want to keep working until the last day of shooting. But a lot of things can go wrong in the middle of a big budget production. There could be contract or budget issues. Or worse! The studio might need to replace a major actor for a bunch of different reasons. Perhaps they got badly injured and needed months to recover or maybe their behavior on the set was unacceptable and they got fired. Whatever the reasons, the actors on this list learned that they aren’t as indispensable as they thought.
Christian Bale Replaced Leonardo DiCaprio in ‘American Psycho’
‘American Psycho’ was a comedy slasher based on the 1991 novel of the same name by author Bret Easton Ellis. It starred actor Christian Bale as the character Patrick Bateman. The role was supposed to go to Leonardo DiCaprio, but the film’s director, Mary Harron, felt that DiCaprio’s pretty boy good looks wouldn’t convince anyone that he was a psychotic killer. So, the role was given to Bale whose suspenseful performance won audiences over.
Katherine Heigl Replaced Anne Hathaway in ‘Knocked Up’
Anne Hathaway was supposed to play the lead role in the comedic film ‘Knocked Up,’ but the actress couldn’t see eye to with the studio regarding a scene where her character was intended to be in labor. So, she got the boot and the studio hired Katherine Heigl to take over. In the end, Heigl did an amazing job, despite the fact that she wasn’t the casting crew’s first choice.
Mark Wahlberg Replaced Ryan Goslin in ‘The Lovely Bones’
‘The Lovely Bones’ was a dramatic film that dealt with the murder of a little girl and starred amazing performers like Stanley Tucci, Rachael Weisz, and of course, Mark Wahlberg. But did you know that Wahlberg’s character was originally intended for Ryan Gosling? Rumor has it that Gosling quit the movie because of creative differences. However, others claim he was let go because he packed on a few pounds and had grown a beard.
Ben Whishaw Replaced Colin Firth in ‘Paddington’
Audiences didn’t see Ben Whishaw in the film ‘Paddington,’ but they definitely heard him as he took on the role of the adorable bear in a red hat and blue coat. Whishaw did a marvelous job bringing the furry character to life, but the role had originally gone to Colin Firth. Unfortunately, the director felt that Firth’s voice didn’t match Paddington Bear. So, the studio went looking for another performer and found a perfect match with Whishaw.
Scarlett Johansson Replaced Samantha Morton in ‘Her’
When writer and director Spike Jonze came up with ‘Her,’ a film about an introverted writer who buys a computer operating system to help him write. Eventually, he falls in love with the AI. In the beginning, Jonze believed that actress Samantha Morton would be the perfect actress for the role. But during editing, it became clear Morton wasn’t right for the job whatsoever. So, he hired Scarlett Johansson to do the voice-over work for the highly intelligent AI.
Paul Dano Replaced Kel O’Neill in ‘There Will Be Blood’
Actor Kel O’Neill was hired to play the role of Eli the pastor in the movie "There Will Be Blood". But after only two weeks, (yeah!) O’Neill realized he wasn't comfortable with Daniel Day-Lewis’ crazy antics on set. Years later, O'Neill was interviewed by Vulture and denied those claims. O'Neill explained that at the time, he wasn't able to go the extra mile for the director. After the actor got fired, the studio hired Paul Dano to play Eli. The film opened to dazzling reviews, mostly praising Dano’s impressive performance.
Kevin Peter Hall Replaced Jean-Claude Van Damme in ‘Predator’
‘Predator’ was a thriller sci-fi film about an alien hunter targeting a team of soldiers in Central America. Martial arts actor Jean-Claude Van Damme was going to be the man inside the Predator suit, but the role went to Kevin Peter Hall instead. Although the studio never gave an official reason for the cast change, Van Damme said in an interview that he was fired because he refused to do a stunt that nearly broke his leg and that he considered too dangerous.
Melissa McCarthy Replaced Julianne Moore in ‘Can You Ever Forgive Me?’
Julianne Moore was picked to play Lee Israel in the dramatic film ‘Can You Ever Forgive Me?’ about a celebrity biographer who turns to deception when she can’t get herself published. But the directors and the actress didn’t see eye to eye on how the character should be played, particularly because Moore wanted to don a fat suit to make her character more realistic. In the end, the actress dropped out of the project a week before production started and the role was given to Melissa McCarthy, who earned an Academy Awards nomination for Best Actress.
Martin Sheen Replaced Harvey Keitel in ‘Apocalypse Now’
Harvey Keitel was a terrific actor, but he wasn’t the casting director’s initial choice for the role of Captain Benjamin L. Williard in ‘Apocalypse Now.’ Despite this, they still hired him, but the director didn’t feel he could play Williard right. Then he remembered Martin Sheen, the actor who was originally offered the role. Sheen had been offered the part first but turned down the role because of other commitments. Regardless, the director wanted him, so he reached out again and insisted until the actor said yes.
Michael Biehn Replaced James Remar in ‘Alien’
While Sigourney Weaver is the first name that comes to mind when someone mentions the ‘Alien’ film franchise, Michael Biehn, who played Hicks, was also one of the many memorable characters in the first movie. But a lot of fans don’t realize that the role had gone to actor James Remar. Sadly, the actor was dealing with real-life personal demons in the form of controlled substances that caused him more trouble than any xenomorph ever could. So the studio had no choice but to replace him with Biehn.
Hugo Weaving Replaced James Purefoy in ‘V for Vendetta’
‘V for Vendetta’ is set in a dystopian Britain where a freedom fighter named V used extreme tactics to fight oppression. One of the film’s star was Hugo Weaving, but fans might not realize that actor James Purefoy had filmed a couple of scenes for the film first. Unfortunately, due to some major creative differences, Purefoy ended up leaving the project. In the end, the studio found Weaving and made $132.5 million at the box office.
Ed Harris Replaced Dennis Hopper in ‘The Truman Show’
‘The Truman Show’ was a film about an insurance salesperson played by Jim Carrey, who discovers his life is a TV show. The movie had many major talents like Ed Harris, but his character, Christof, was supposed to go to Dennis Hopper. Nevertheless, the director found a replacement for the role because he didn’t feel that Hopper was the right fit. There were also rumors that Hopper kept fudging up his lines, which also led to the decision of letting him go.
Sandra Bullock Replaced Lori Petty in ‘Demolition Man’
‘Demolition Man’ was a sci-fi action film about a convicted killer played by Wesley Snipes, who gets sentenced to cryogenic suspended animation along with the cop who apprehended him, played by Silvester Stallone. Years later, Snipes’ character gets revived and goes on a killing spree, forcing authorities to revive Stallone’s character to stop him. Fans of the film will recall that the cop assigned to work with Stallone’s character was played by Sandra Bullock. But the role had originally gone to Lori Petty, but she reportedly butted heads with Stallone, so the studio replaced her with Bullock.
Christopher Plummer Replaced Kevin Spacey in ‘All the Money in the World’
‘All the Money in the World’ was a crime thriller full of amazing talents like Christopher Plummer and Mark Wahlberg. It’s no wonder the film became a blockbuster hit and raked in $57 million. But during casting, Plummer’s role had gone to Kevin Spacey. Unfortunately, allegations about Spacey came to light and the studio didn’t want to risk the scandal distracting audiences from the movie, so Plummer was hired to take his place.
Michelle Pfeiffer Replaced Annette Bening in ‘Batman Returns’
Fans of ‘Batman Returns’ can’t think of an actress who was better suited for the role of Catwoman than Michelle Pfeiffer. Not only did the actress look amazing in leather, but she could crack that whip like no one else. But did you know that the role had originally gone to Annette Bening? The actress was stoked to be playing Catwoman ... until she learned she was pregnant. Hiding a baby bump back in those days would have been impossible since Catwoman's leather suit was too tight and CGI wasn't as advanced as it is today. On top of that, the stunts would have been too dangerous for an expectant mother, so she had to be replaced.
Jodie Foster Replaced Nicole Kidman in ‘Panic Room’
Nicole Kidman was supposed to star in the thriller movie ‘Panic Room,’ but the actress sustained a knee injury which aggravated an earlier injury she had suffered from while shooting ‘Moulin Rouge!’ This meant she had to bow out of the film. Luckily for studio execs, Jodie Foster was available after the film she was directing came to a halt. Why was Jodie's movie stopped? In a strange turn of events, the other star of the film, Russell Crowe, had suffered an injury, too. So, Foster starred in ‘Panic Room’ while Crowe recuperated.
Hugh Jackman Replaced Dougray Scott in ‘X-Men’
Hugh Jackman’s hair, facial structure and incredible musculature made him the perfect actor to play Wolverine in the ‘X-Men’ film franchise. But it was actually Dougray Scott, who starred in film’s like ‘Mission Impossible 2’ and ‘Taken 3’ who had originally landed the role. However, the actor had other film commitments, so the studio found Jackman, who took on the role of Wolverine like the Hollywood boss that he is.
Michael J. Fox Replaced Eric Stoltz in ‘Back to the Future’
Michael J. Fox did a terrific job playing Marty McFly, a teenager who travels back and forth through time in a DeLorean in ‘Back to the Future’. But he wasn’t available for the role so Eric Stoltz was hired to take his place. Unfortunately, Stoltz’s interpretation of Marty was way too serious and lacked the comedic elements that the director needed for the film. So, the studio reached out to Fox and found a way to work around the original scheduling conflict and the rest, as they say, is history.
Eddie Murphy Replaced Sylvester Stallone in ‘Beverly Hills Cop’
Eddie Murphy’s comedic performance was such a hit in ‘Beverly Hills Cop’ that it’s hard to imagine anyone else playing the lead role. Nevertheless, Sylvester Stallone, better known for films like “Rocky” and “Rambo,” was supposed to be the film’s lead, but he allegedly wanted his character to be a little less comical and more heroic. So, ultimately, the director picked someone who was better suited for the role.
Viggo Mortensen Replaced Stuart Townsend in ‘The Lord of the Rings’
Viggo Mortensen did a terrific job as Aragorn in ‘The Lord of the Rings’ trilogy, but he wasn’t the studio’s first choice. The director had originally asked Stuart Townsend, which embodied the character to the core. But a few days into production, the director realized Townsend was too young to play the role, so he had him replaced with Mortensen. Townsend was reportedly quite disappointed over losing out on the role. Who wouldn't be?
Sofia Coppola Replaced Winona Ryder in ‘The Godfather Part III’
Al Pacino, Andy Garcia and Diane Keaton were among the star-studded cast in ‘The Godfather Part III,’ but there was one actress who could have appeared in the film, but didn’t. Winona Ryder was originally cast to play Mary Corleone, but she got sick rather suddenly and doctors recommended that she get some rest. But the show, or in this case, the film had to go on. So, the director hired Sofia Coppola, who was on hand to start shooting right away.
Anthony Hopkins Replaced Sean Connery in ‘The Silence of the Lambs’
Can you imagine anyone other than Anthony Hopkins playing Hannibal Lecter in ‘The Silence of the Lambs’? How about James Bond actor Sean Connery? Well, it almost happened! The film’s director wanted to make it so. Then the director heard that Connery had made a public comment about passing on the script after he read it. So, the director decided to go with someone else and that someone was none other than the amazing Anthony Hopkins.
Don Cheadle Replaced Terrence Howard in ‘Iron Man 2’
Terrence Howard did an amazing job as Lieutenant Colonel James ‘Rhodey’ Rhodes in the ‘Iron Man’ film franchise. In fact, the studio loved him so much that they offered him a three-film contract. But while the second film was in production, Howard and the studio got into a spat over his salary. This led to a heated battle of words that led to the actor’s dismissal. Afterwards, the studio heads hired Don Cheadle to take on the role of Rhodes.
Susan Hayward Replaced Judy Garland in ‘The Valley of the Dolls’
At the time, Judy Garland was considered one of the biggest talents in Hollywood ever since she played Dorothy in ‘The Wizard of Oz.’ Sadly, she also had some behavioral problems on set connected to her substance control issues. In fact, while on the set of ‘The Valley of the Dolls,’ her attitude got out of hand and she was also late for work. So, the studio was forced to replace her with Susan Hayward, who was a more reliable and compliant actress.
Perry King Replaced Richard Gere in ‘The Lords of Flatbush’
Richard Gere’s major theatrical debut in Hollywood was going to be in the coming-of-age drama film ‘The Lords of Flathbush,’ but for an up-and-coming actor, he sure didn’t seem to know his place. He had reportedly behaved very badly while on the set and fought with actors like his co-star Sylvester Stallone. At that point, the director had no choice but to fire Gere. Then he hired Perry King to play David ‘Chico’ Tyrell.
Rose Huntington-Whiteley Replaced Megan Fox in ‘Transformers’
Megan Fox had placed Mikaela Banes in the previous ‘Transformers’ films and was set to reprise her role in ‘Transformers: Dark of the Moon.’ Unfortunately, during the shoot, director Michael Bay got into a huge fight with the actress over her needing to get a tanner look and also gaining about 9 pounds. Fox lashed out and called Bay a horrible person to work with. So, the director retaliated and fired her. Since the film still needed someone to play her character, the director went with Rosie Huntington-Whiteley who stepped into the role.
Harrison Ford Replaced Tom Selleck in ‘Raiders of the Lost Ark’
Harrison Ford as archaeologist Indiana Jones seems like a no-brainer, especially given that the actor has portrayed the role in several films since ‘Raiders of the Lost Ark.’ But can you imagine Tom Selleck as Indiana Jones? It almost happened. Selleck had gotten the role and would have played the character onscreen if he hadn’t been tied up with a previous commitment to his TV show. So, the director had no other choice than to hire Ford, instead, and it was an excellent choice!
George Clooney Replaced Robert Downey Jr. in ‘Gravity’
Director Alfonso Cuaron originally offered Robert Downey Jr the lead role in the film ‘Gravity’ because he was well aware of his impressive Hollywood resume and knew he could do it. But when the cameras started rolling, Cuaron realized that he had made a mistake. It’s not to say that Downey wasn’t a great actor. He just wasn’t the right fit for the role. So, the director started looking again and eventually found George Clooney, who did a great job.
Taylor Lautner Replaced Tyler Posey in ‘Twilight’
Taylor Lautner hit the jackpot when he was cast as Jacob Black, a werewolf in the ‘Twilight’ film franchise. But before Lautner got the gig, the role was offered to actor Tyler Posey, who coincidentally played a werewolf in the MTV series ‘Teen Wolf’ a few years later. The director was reportedly looking for someone who was more muscular for the role. But even though Posey and Lautner had become passing acquaintances, he had no idea that he had lost the role to him until a couple of months later.
Kenneth Branagh Replaced Hugh Grant in ‘Harry Potter’
‘Harry Potter’ fans are pretty much familiar with the actors who have appeared in the film’s magical franchise, and Hugh Grant’s name isn’t one of them. Nevertheless, it could have been. It turns out that Grant was supposed to play Gilderoy Lockhart. He even dyed his hair blond to match the character’s hair, but the actor ran into a major scheduling conflict with the film’s production time table. So, the casting crew had no choice but to replace him with Branagh.
Chris Hemsworth Replaced Tom Hiddelston in ‘Thor’
Tom Hiddleston nailed it as Loki, the God of Mischief, in the Marvel universe film franchise, but can anyone imagine the actor as Thor? Well, at some point, the studio considered him for the part. Then they changed their minds and decided that a lesser known actor should play Thor. It’s why Chris Hemsworth picked up the God of Thunder’s Mjölnir hammer instead of Hiddleston. But don’t feel too bad for the latter as Disney+ gave his character his own TV series.
Claire Danes Replaced Natalie Portman in ‘Romeo + Juliet’
Claire Danes and Leonardo DiCaprio were a perfect match for the ill-fated love birds in the film ‘Romeo + Juliet.’ Danes’ performance as Juliet was remarkable, but most fans aren’t aware that actress Natalie Portman had landed the part first. But as she started filming, the director realized that she looked a lot older than DiCaprio, who was 21 at the time. So, they decided to recast the role and Danes got the part.
John Travolta Replaced Henry Winkler in ‘Grease’
Even those who have never seen the film ‘Grease,’ know that John Travolta played the slick haired, leather jacket wearing Danny Zuko alongside actress Olivia Newton-John. But the director wanted the role to go to Henry Winkler since he had played a somewhat similar character in the sitcom “Happy Days.” But the director discovered that Winkler didn’t have a great singing voice, which was required for the role. So, the actor was replaced by Travolta.
Lucy Liu Replaced Thandie Newton in ‘Charlie’s Angels’
Thandie Newton as Alex Munday? If it sounds insane it’s because Lucy Liu did such a great job in the “Charlie’s Angels” film series, that it’s impossible seeing anyone else play Alex. But it turns out that the casting crew had picked Newton first. Then the actress got into an argument with the film’s director because she felt objectified and claimed her role was racially stereotyping her. So, she was asked to step down and Lucy Liu was brought in to take her place.
Alicia Silverstone Replaced Sarah Michelle Gellar in ‘Clueless’
Long before she started slaying vampires on “Buffy the Vampire Slayer,” Sarah Michelle Gellar starred in the soap opera “All My Children.” Despite this, the director wanted her to play Cher in ‘Clueless.’ Unfortunately, Gellar’s schedule made it impossible to commit to the role despite having been picked for it. Luckily, the director found an equally perfect fit in the form of Alicia Silverstone.
Rachel McAdams Replaced Britney Spears in ‘The Notebook’
When the creators behind ‘The Notebook’ started casting for the role of Allie Hamilton, they originally wanted the singer, Britney Spears. But when Rachel McAdams arrived to audition, she fit into the character so perfectly that the casting agents offered her the role on the spot. McAdams went on to star alongside Ryan Gosling in the romantic film, but there was some tension between the two actors. Despite this, they managed to make a great movie.
Daniel Day-Lewis Replaced Liam Neeson in ‘Lincoln’
When Steven Spielberg decided to do a movie about Abraham Lincoln, the 16th president of the United States, he set his sights on Liam Neeson for the film ‘Lincoln.’ But once the cameras started rolling, Spielberg was underwhelmed by what he saw and felt that Neeson was no longer the right fit for the lead role. So, he went looking for a new lead and found one in Daniel Day-Lewis. The actor even won an Oscar for his portrayal in the film.
Sir Ian McKellen Replaced Sean Connery in ‘The Lord of the Rings’
Can you imagine Sean Connery as Gandalf in ‘The Lord of the Rings’? It could have happened. The Bond actor was the film creator’s first choice, after all. Even Sir Ian McKellen knew this. But Connery was quoted in an interview saying this about the film franchise: “I never understood it. I read the book. I read the script. I saw the movie. I still don’t understand it.” Luckily, McKellen was suited for the role of the franchise’s beloved wizard.
Leonardo DiCaprio Replaced Matthew McConaughey in ‘Titanic’
During an interview on “The Late Show With Stephen Colbert,” Kate Winslet who played Rose in ‘Titanic’ claimed that the studio wanted Matthew McConaughey for the role of Jack. In fact, Winslet did script readings alongside the actor. But when director James Cameron locked eyes on Leonardo DiCaprio, he became convinced that he was the right actor for the role of Jack. And fans of the film agreed.
Jodie Foster Replaced Meg Ryan in ‘The Silence of the Lambs’
The sweet and bubbly Meg Ryan who is best known for films like ‘Sleepless in Seattle’ and ‘When Harry Met Sally,’ had never starred in a film as dark as this before. So, even though she landed the role, she was unsettled as she kept reading the script. And in the end, she just wasn’t the right fit. So, the film’s director, Jonathan Demme, found Jodie Foster, who matched better with the character, Clarice.
Maria Bello Replaced Rachel Weisz in ‘The Mummy: Tomb of the Dragon Emperor’
Rachel Weisz played Evelyn in the first two ‘The Mummy’ films. But the film’s producers replaced her with Maria Bellow during third film ‘The Mummy: Tomb of the Dragon Emperor.’ To this day, no one has confirmed why the recast ever occurred, but according to the rumor mill, Weisz quit because of creative differences with the script. Regardless, Bello did an amazing job stepping into Weiz’s role.
Mark Ruffalo Replaced Edward Norton in ‘The Avengers’
Edward Norton had played Bruce Banner, aka The Incredible Hulk in the first Hulk movie, but ‘The Avengers’ producers didn’t ask him to reprise his role. Instead, they hired Mark Ruffalo. As fans started to inquire why, Marvel released a statement claiming that they required “an actor who embodies the creativity and collaborative spirit of our other talented cast members.” Although Ruffalo and Norton look nothing alike, Ruffalo embodied the character like a pro.
Miley Cyrus Replaced Chloë Grace Moretz in ‘Bolt’
At the time, 11-year-old Chloe Grace Moretz did the animated voice of the character Penny, who was Bolt’s owner. Moretz recorded all of her scenes before Disney chose to recast the role with Miley Cyrus. But audiences were still able to hear to Moretz in the film as they kept her voice for the scenes that showed a young version of Penny. But all the other scenes were redone with Cyrus.
Zach Braff Replaced Holly Hunter in ‘Chicken Little’
For ‘Chicken Little,’ producers originally thought of the main character as a little girl, which is why they hired actress Holly Hunter to lend her voice. But months of work were scrapped when producers gave in to the studio’s demands to make the character a boy. So, Hunter was asked to step aside and ‘Scrubs’ actor Zach Braff stepped in to redo all of her lines.
Jack Haley Replaced Buddy Ebsen in ‘The Wizard of Oz’
While fans of the 1930s classic ‘The Wizard of Oz’ saw actor Jack Haley do a terrific job as The Tin Man, he was not the original actor to take on the role. It was Buddy Ebsen, who played Jed on ‘The Beverly Hillbillies.’ Unfortunately, Ebsen was allergic to The Tin Man’s makeup and wound up in the hospital for two weeks because he had inhaled too much aluminum dust. So, the studio had no choice but to replace him with Haley, who was originally supposed to play The Scarecrow.
Maggie Gyllenhaal Replaced Katie Holmes in ‘The Dark Knight’
Katie Holmes did a remarkable job playing Rachel Dawes, a love interest for Batman in ‘Batman Begins.’ But when asked to return for the sequel ‘The Dark Knight,’ the actress opted not to return because she wanted to work on other projects. It was a decision she told MTV she did not regret at all because she got to work on a film called ‘Mad Money.’ So, producers had to hired Maggie Gyllenhaal to take Holmes’ place.
Ross Marquand Replaced Hugo Weaving in ‘Avengers: Endgame’
Hugo Weaving had played Johann Schmidt, the character who would eventually become Red Skull in ‘Captain American: The First Avenger.’ But when the sequel, ‘Avengers: Endgame’ showed Red Skull making a shocking return, audiences noticed that Weaving had not reprised the role. The character was voiced by Ross Marquand, an actor on ‘The Walking Dead’ who was able to mimic Weaving’s voice flawlessly.
Bryce Dallas Howard Replaced Rachelle Lefevre in ‘Twilight’
Rachelle Lefevre played the vampire Victoria in the first two ‘Twilight’ films, but during the third film, Lefevre was replaced by actress Bryce Dallas Howard, which left the original star turned. Lefevre then made a statement to Access Hollywood that read: "I was fully committed to the 'Twilight' saga, and to the portrayal of Victoria. I turned down several other film opportunities and, in accordance with my contractual rights, accepted only roles that would involve very short shooting schedules," she said. "I was happy with my contract with Summit and was fully prepared to continue to honor it. Summit chose simply to recast the part."
Michael Gambon Replaced Richard Harris in ‘Harry Potter’
Richard Harris played Albus Dumbledore in the first two ‘Harry Potter’ films. Sadly, the 72-year-old actor passed away after the second film. Although Harris had done a remarkable job, the studio needed a new Dumbledore, so after a bit of brainstorming, they hired Michael Gambon to take over the role for future appearances. Ironically, late actor Peter O’Toole was considered for the role before Gambon, but O’Toole was already suffering from health problems, so they went with Gambon.
Mads Mikkelsen Replaced Johnny Depp in ‘Fantastic Beasts 3’
Johnny Depp was supposed to play Grindelwald in ‘Fantastic Beasts 3.’ But he was replaced after losing his libel case against a UK newspaper in November 2020 relating to allegations made by his ex-wife Amber Heard. Depp claimed he was asked to resign despite claiming his innocence. Regardless, the studio found Mads Mikkelsen, who was best known for playing Tonny in the first two ‘Pusher’ films, to take over the role.