Queue fairness sounds like a solved problem: serve people in the order they arrived. It works at a bakery. It fails on the internet, because arrival order at a hyped drop is not really arrival order. It is a ranking of who automated earliest, whose connection is closest to the data centre, and whose script retried fastest in the opening second. Two fans who both clicked at the advertised minute can be ten thousand places apart for reasons neither of them chose. Waiting room systems built for drops answer this with a randomised start: everyone present when the sale opens is shuffled into a random order, and only arrivals after that moment join in strict time order. The person who arrived an hour early gets no advantage over the person who arrived a minute early, which sounds like a flaw until you ask what the hour early advantage was ever measuring. It was measuring willingness to run a script or park a browser tab. Neither is fandom. Both are infrastructure.
Fairness is a published rule, not a feeling
The randomised start only works socially if it is explained before the drop, on the waiting room page, in plain language: arrive before the start and your position is drawn at random from everyone waiting; arrive after and you join the back of the line. Customers who understand the rule plan for it calmly. Customers who discover it afterwards, having camped a tab for three hours, experience it as a betrayal, and they are not entirely wrong, because the store changed what their effort meant without telling them. The mechanic is fair. The surprise is not.
After the start, strict order matters just as much. Estimated wait times and position displays should be honest rather than soothing; a queue that lies about position to reduce visible churn teaches visitors to open five tabs and a second browser, which is the behaviour the queue exists to prevent.
Related reading on this site: Home and Your Queue Position Is Not a Promise. Batch Releases Make Sure of It. cover the neighbouring problems in more depth.
Randomisation has limits worth naming
A randomised start does nothing about how many identities one operator brings to the draw. Ten thousand bot entries in the shuffle still take most of the good positions, which is why randomisation is a fairness layer on top of bot controls and verified entry, never a substitute for them. It also slightly penalises the genuine early fan, and stores should be honest that this is a deliberate trade: a small cost to the most eager honest customers, in exchange for removing a huge advantage from the least honest ones.
The window length matters. A randomisation window of a few minutes before the start captures the scripted rush without punishing anyone who planned their morning around the drop. A window of several hours turns the whole sale into a lottery and burns the goodwill the mechanic was meant to protect.
Frequently asked questions
How does a randomised queue start work?
Everyone waiting when the sale opens is placed into a randomly shuffled order, regardless of exactly when they arrived during the pre start window. Visitors who arrive after the start join the queue in normal arrival order behind that initial group.
Why is first come first served unfair online?
Because at drop scale, arrival order is dominated by automation, connection speed, and server distance rather than by how promptly a person acted. Scripts and bots reliably beat honest browsers in a pure speed race, so strict arrival order rewards the best tooling.
Does randomising the queue stop bots?
Not by itself. Bots can still enter the draw in bulk unless entry requires verification and bot controls are in place. Randomisation removes the speed advantage; identity and bot controls limit how many entries one operator can hold.
Should stores announce the randomised start in advance?
Yes. Explaining the rule on the waiting room page before the drop lets customers plan, and prevents the anger that comes from discovering afterwards that early arrival conferred no advantage. The mechanic is defensible; the surprise is what damages trust.