The 38-year-old leading Grand Slam winner earned a total of $106.3 million over the past 12 months, making him the first tennis player to top Forbes' world's 100 highest-paid athletes list.
Federer overtook football GOAT Lionel Messi.
Here's more on the same.
"The coronavirus pandemic triggered salary cuts for soccer stars Messi and Ronaldo, clearing the way for a tennis player to rank as the world's highest-paid athlete for the first time," said Kurt Badenhausen, senior editor at Forbes.
"Roger Federer is the perfect pitchman for companies, resulting in an unparalleled endorsement portfolio of blue-chip brands worth $100m a year for the tennis great."
The veteran tennis ace moved up four places after earning £86.2m in the past year - about £81m of it in endorsements. Footballers Cristiano Ronaldo (£85m), Messi (£84m) and Neymar (£77.5m) come next. Meanwhile, American basketball player LeBron James (£71.5m) completes the top five.
According to Forbes. Osaka raked in $37.4m (£30.7m) in prize money and endorsements over the last year.
The sum was £1.15m more than the amount earned by 23-time Grand Slam singles winner Williams.
In the overall list, Osaka is ranked 29th, whereas, Serena is 33rd.
Forbes' list takes into consideration factors such as prize money, salaries and endorsements from June 1, 2019.
The top 100 athletes made a combined total of $3.6 billion during the past year, a 9% decline from the previous one.
It's likely that athletes' lofty earnings will take even more of a hit in the future with the economic situation impacted by the coronavirus pandemic.
Badenhausen highlighted how the COVID-19 crisis has impacted the world's wealthiest athletes.
"The global health crisis proves that when the economy fails, even the world's wealthiest athletes take a big hit," added Badenhausen.
"Salaries and endorsement income have skyrocketed the past decade, but both are headed for precipitous falls, as revenues plummet for major sports leagues and companies tighten their marketing budgets."
Love Sports news?
Subscribe to stay updated.