The 20-year-old man charged over the shooting of two US police officers had been at the protest earlier that night.
St Louis county prosecutor Robert McCulloch said 20-year-old Jeffrey Williams is charged with two counts of first-degree assault, one count of firing a weapon from a vehicle and three counts of armed criminal action.
The officers were shot early on Thursday outside the Ferguson Police Department during a protest hours after the city's police chief resigned in the wake of a scathing federal Justice Department report.
Mr McCulloch also said Williams told police he was firing at someone in which he was in a dispute, not at the police officers.
The officers were released later on Thursday.
St Louis County police chief Jon Belmar said Williams is black. The protests in Ferguson were originally sparked by the police shooting of an unarmed black 18-year-old Michael Brown.
Williams is being held on 300,000 US dollars bond.