Rob Jetten's centrist-liberal party D66 are in a neck-and-neck race with anti-Islam populist Geert Wilders in the Dutch election, according to almost complete results.

With almost 99% of votes counted, both D66 and Wilders' Freedom Party were heading for 26 seats in the 150-member parliament, a projection from Dutch news agency ANP said on Thursday.

Initial exit polls had put Jetten in the lead. Millions of Dutch people have turned a page; they've said goodbye to a politics of negativity, he told supporters.

A downbeat Wilders had earlier conceded the result was not what he wanted, having lost 11 seats, but said he had still achieved his second-best result ever.

But as the final results trickled in on Thursday, the race became so close that the lead flipped between the two frontrunners. The last preliminary results from the capital Amsterdam showed Rob Jetten's liberals moving significantly ahead by more than 15,000 votes.

Both parties secured less than 17% of the national vote, with three other parties trailing not far behind, including the conservative-liberal VVD with 22 seats, followed by the left-wing GreenLeft-Labour party and the Christian Democrats.

Wilders led the polls throughout the election campaign, despite pulling the plug on his coalition in June over asylum and migration disputes, leading many mainstream leaders to express reluctance to cooperate with him again.

While acknowledging the challenges ahead, the charismatic 38-year-old Jetten has set his sights on forming a coalition aimed at addressing pressing issues like the chronic housing shortage affecting nearly 400,000 Dutch households.

What a fantastic result - two years ago we could not have dared to dream of this, remarked CDA leader Henri Bontenbal as his party experienced a significant resurgence in this election.