How the ranking works
Every score on UpvoteEats comes from what people wrote on Reddit. Here is how we get from thousands of comments to one number, and where the method falls short.
Last updated .
The Toronto edition covers 2,821 ranked restaurants, built from 140,144 mentions by 88,284 distinct voices.
1. Where the words come from
We read the last three years of r/FoodToronto, every thread. We also read r/askTO and r/toronto, but only threads about food, picked out by keywords and then checked by a model so a thread about a patio permit doesn’t sneak in. Deleted and removed comments, bots, and replies buried deep in a thread are skipped.
2. Finding every mention
A language model reads each comment and pulls out every restaurant it mentions. For each one it records how the writer felt on a 1 to 5 scale, whether they actually ate there or are passing on what a friend said, and which dishes they talked about. Before any of this runs on the full archive, it has to score well against a set of comments we labelled by hand, including the tricky ones: sarcasm, lists of ten places in one breath, and “it used to be good.”
3. Matching names to real places
People write “the Pai,” “Pai Northern,” and “pai on duncan” and mean the same restaurant. We group those spellings together and match each group to a real location using OpenStreetMap. Common names, chains, moves and closures are where mistakes hide, so every match gets checked, ambiguous ones get a second look by a stronger model, and whatever is still unclear goes to a person.
4. One person, one voice
If someone praises the same spot in thirty comments, that is still one opinion. We average each Redditor’s ratings for a restaurant first, so a superfan can’t carry a place and a single grudge can’t sink one. The counts you see on the site (“212 Redditors”) are these distinct voices, not raw comment counts.
Despite the name, we don’t rank by upvotes. An upvote only means people saw a comment and liked it. We read what the comment says, and whether the person who wrote it ate there.
5. Recent opinions count more
Kitchens change hands and chefs move on. A comment loses half its weight every 18 months, so what people said last spring matters more than what they said three years ago. Secondhand opinions (“my coworker swears by it”) count half as much as firsthand ones.
6. Three raves don’t beat two hundred solid reviews
A place with three glowing comments has a perfect average, but we know very little about it. So every restaurant starts out as if about ten people had rated it exactly average, and real opinions pull it up or down from there. With a handful of voices a place barely moves. With hundreds, the starting point hardly matters. Statisticians call this Bayesian shrinkage. Places with fewer than five voices aren’t scored at all.
7. From an average to a score out of 10
Averages on a 1 to 5 scale bunch up, because people mostly talk about places they like. So we measure how far each place sits above or below the typical ranked place in Toronto, and turn that distance into a score from 0 to 10 with one decimal. A typical place lands around 7, which is still somewhere people like and would send a friend to. Only the few places Reddit clearly loves more than the rest reach the 9s, and places people keep warning each other about can score well below 5.
8. Dish rankings
The same method runs again for each dish, using only what people said about that dish at that restaurant. That’s why a bakery can top the croissant list without appearing on the sandwich list. Places at the top of a dish ranking are marked Top pick, and strong runners-up are Worth trying. Neighbourhood versions of a dish page only exist when at least 3 places in that area qualify.
9. What we leave out
- National chains are hidden. You already know what a chain tastes like.
- Nobody can pay to be listed, ranked higher or removed from a list.
- Closed restaurants stay findable but are marked closed and left out of the main rankings.
10. Quotes and privacy
- We show at most about 25 words from any comment, always linked back to the full comment on Reddit.
- Usernames are never shown or stored in a readable form.
- The “What Reddit says” summaries are paraphrased, not stitched together from quotes.
- If a comment is deleted or removed on Reddit, it disappears from this site at the next refresh.
- Want something taken down sooner? Use the removal request form.
11. Where this falls short
Reddit isn’t everyone. Its users skew younger and more downtown, and some cuisines and suburbs get talked about far less than they deserve. A new place needs time to collect enough voices. Treat a score as a strong signal from a lot of people who care about food, not a verdict.
12. How often it updates
We pull new threads once a month, re-score everything, and re-check for deleted comments. The date at the top of each ranking shows when it was last refreshed.