Police say Williams was one of two 19-year-old men at the club who were allegedly involved in an argument around 1.30am (WST) on Thursday.
The other man was ejected from the venue and when Williams left, he saw the man outside.
Williams is then alleged to have punched the man who was taken to Albany Regional Hospital with a broken jaw.
The footballer was charged with assault occasioning bodily harm and will appear in court on January 24.
Williams made his debut for the Magpies against the Adelaide Crows in round nine this year.
Collingwood issued a statement confirming reports that Williams had been charged.
"As this is a police matter, the club will be making no further comment at this time," the AFL club said.