The premier said he was offering the apology after a colleague called him about the costume two days ago but declined to reveal what was said or who made the call.
“I am deeply ashamed of what I did,” he said.
“And I’m truly sorry for the hurt and pain that this will cause people right across the state, and particularly members of the Jewish community, Holocaust survivors, veterans and their families. I am truly sorry for the terrible mistake.”
Perrottet said the decision had caused him “much anxiety” throughout his life and when he received the call he decided he should be the one to reveal the “terrible mistake”.
But he denied someone was threatening him to reveal a photo from the party in 2003.
“I don’t know of that,” he said.
“I don’t know if one exists. I’ve not seen one. I don’t know.”
Rather, the premier said there had been “times throughout many years” when he’d thought about speaking of what he’d done.
He said he was “naive” and “didn’t understand the significance of that decision”.
Perrottet last year said he was horrified by fans allegedly raising their arms in Nazi salutes at the Australia Cup final and supported calls for them to face lifetime bans.
Asked about those comments in the context of today’s revelation, he said he’d “become a very passionate supporter of the Jewish people” and come to understand their experiences through conversations and reading books.
Perrottet said his parents spoke to him the day after the party, telling him what he did was “wrong and insensitive”.
The premier said he didn’t know how many people knew about him wearing the costume or for how long.
He couldn’t remember whether he apologised to the Jewish friends he had when he was 21.
The premier said his 21st was a “uniform party” with family and friends.
Other costumes included sailors and no one else wore a Nazi costume or anything offensive that Perrottet could recall.
Perrottet, 40, said he spoke to Jewish leaders before the press conference and apologised for the “terrible hurt” he knew it would cause the Jewish community.
Perrottet, who informed Treasurer Matt Kean and Deputy Premier Paul Toole, plans to speak to the RSL and other organisations this afternoon.
The premier said he hadn’t thought about how damaging the revelation could be for his re-election campaign.