Camavinga — one of the most coveted young players in European football — had one year left on his deal at Renne, and sources told ESPN that Madrid paid €30 million for his signature, but the fee could go to €45m with add-ons.
The Ligue 1 club did not want to lose him on a free transfer next summer.
Camavinga is on international duty with France Under-21s — undergoing a medical on Tuesday at their Clairefontaine base — but has made three appearances at senior level.
He burst onto the scene when he made his Ligue 1 debut with Rennes in April 2019 aged just 16.
In August that year, he was named man of the match in a 2-1 win over Paris Saint-Germain and began to attract attention from a host of top clubs.
Real Madrid have tracked him since then, with former coach Zinedine Zidane a fan.
ESPN reported that Camavinga was open to a move to the Premier League this summer, but he has finally opted for Madrid.
At 18, he has already made 71 appearances in Ligue 1, and made his Champions League debut in 2020-21 as Rennes were eliminated at the group stage.