Trump had boasted earlier this week that almost a million people had requested tickets for the event at Tulsa’s Bank of Oklahoma Center, the BBC reported.
But the 19,000-seat arena was far from full and plans for him to address an outside “overflow” area were abandoned.
There had been concerns about holding the rally during the pandemic.
Coronavirus was one issue Mr Trump touched on in his wide-ranging, almost two-hour-long speech to cheering supporters in Oklahoma, a Republican heartland.
Trump said he told officials to slow down Covid-19 testing because so many cases were being detected, in remarks later described as a joke.
Those attending the rally had to sign a waiver protecting the Trump campaign from responsibility for any illness. Hours before the event began, officials said six staff members involved in organising the rally had tested positive.
However, it is unclear why attendance was lower than initially anticipated. Mr Trump referred to those in the stadium as “warriors”, while blaming the media and protesters for keeping supporters away. There were some volatile scenes outside the venue but no serious trouble was reported.
Trump’s re-election campaign event was one of the biggest indoor gatherings held in the US since the country’s Covid-19 outbreak began, and came at a time when Oklahoma is seeing a rise in confirmed cases.
More than 2.2 million cases of Covid-19 and 119,000 associated deaths have been reported in the US, according to data from Johns Hopkins University.
In his opening remarks, Trump said there had been “very bad people outside, they were doing bad things”, but did not elaborate. Black Lives Matter activists were among the counter-protesters to gather outside the venue before the event.
On the coronavirus response, Trump said he had encouraged officials to slow down testing because it led to more cases being discovered. He described testing as a “double-edged sword”.
“Here is the bad part: When you do testing to that extent, you are going to find more people, you will find more cases,” he told the cheering crowd. “So I said ‘slow the testing down’. They test and they test.”
The coronavirus, Trump said, had many names, including “Kung Flu”, a xenophobic term that appears to be a reference to China, where Covid-19 originated.
Almost 120,000 people have died with Covid-19 in the US since the pandemic began, a number that health experts say could have been much higher had testing not been ramped up. Testing, health officials say, is important to understand where and how widely coronavirus is spreading, and therefore prevent further deaths.
A White House official later said the president was “obviously kidding” about Covid-19 testing.
Taking aim at his Democratic presidential rival, Trump described Joe Biden as “a helpless puppet of the radical left”.
The president also struck a combative tone when he touched on anti-racism protests – and the toppling of statues – which began after the killing of an unarmed black man, George Floyd, by police in Minneapolis.
“The unhinged left-wing mob is trying to vandalise our history, desecrate our monuments – our beautiful monuments – tear down our statues and punish, cancel and persecute anyone who does not conform to their demands for absolute and total control. We’re not conforming,” he told the crowd.