Around 3,000 of migrants are stranded outside Budapest's main railway station after police blocked off the entrance.
Hungary has defended its decision, saying that it is trying to enforce to European Union rules and prevent them from leaving for Germany and other countries west of Hungary.
Previously, authorities had been allowing migrants to travel to Western Europe without checking passports, but the Keleti train station was closed yesterday.
Hungary also erected 100 miles of razor-wire fence along the Serbian border to keep migrants out.
Many of the migrants are fleeing from Syria and Afghanistan and are trying to make their way to countries such as Austria and Germany to claim asylum.
Hungarian police said citizen patrols were assisting them in keeping order.
Volunteer groups accustomed to providing food, clothing and medical assistance to a few hundred migrants at a time struggled with the large number of people staying in every corner of the station’s sunken plaza.
More than 150,000 migrants have reached Hungary this year, most coming through the southern border with Serbia. Many apply for asylum but quickly try to leave for richer EU countries.
Speaking outside Keleti train station last night, one man from Syria said he had spent €370 on train tickets for his family to Munich, and now had "no money, no food, no anything".
European ministers have called an emergency meeting for September 14 to discuss the migrant crisis.