A report by The Children's Society says many poor families are forced to cut back on basic essentials to pay for uniforms, costing more than £300 a year.
The Society said uniform policies risk dividing pupils into the 'haves and have-nots', leaving those without the right kit at risk of bullying,.
The findings, based on a poll of around 1,000 parents, found that nearly 800,000 pupils go to school in poorly fitting uniforms because their parents cannot afford to keep buying new items, while a further 400,000 have been sent home for wearing 'incorrect' clothes.
Around a quarter of a million children are said to have had their school chosen for them based on the cost of its uniform.
On average, families with school-age children spend £316 a year on items for a child at a state secondary and £251 annually on average for a child at a state primary.
Shoes were the most expensive item at £56 on average for secondary-school children and £53 for primary-age pupils, followed by coats and bags (£55 for secondary and £44 for primary).
Blazers cost parents with secondary-school children £42 on average, and £32 for primary-school children.
One parent said: "My oldest daughter, they sent her home and said she wasn't allowed to come back until she had the correct shoes. So then I had to write a letter to say that we'll be able to get some in a week or so, I didn't have any money."Another told researchers: "School uniform is a constant source of anxiety. I go without so my children can always have what is needed."
The report, entitled The Wrong Blazer, stated: "In many cases, parents have to cut back on other essentials in order to afford uniform costs.
"More than one million children live in families that have cut back spending on food or other basic essentials as a result of the cost of school uniforms. More than half a million are... [in] debt as a result of uniform costs."
One of the key reasons for high uniform spending are policies that force parents to buy items from specialist shops.
Families who had to shop in a specific place saw costs pushed up by £48 on average for secondary-school children and £93 for primary pupils.
More on Parentdish: School took pupils shoe shopping