Does Reddit have an astroturfing problem? What the data suggests
Data analysis of Reddit’s knife-related subreddits indicates that a significant share of buying advice comes from a small, brand-loyal subset of accounts.
Deep dive
- The study used a named-entity recognition (NER) model to categorize brand mentions in 'what should I buy' threads.
- Statistical modeling (shuffling authors) proved that recommendations are significantly more concentrated than random chance would predict for specific brands.
- Analysis of account histories showed that 'brand-loyal' accounts are aged similarly to regular accounts and contribute to other subreddits, suggesting they are either highly dedicated fans or sophisticated paid accounts that avoid detection.
- The study underscores that public metadata cannot reveal intent or financial backing; it only reveals patterns of behavior.
Decoder
- Astroturfing: The practice of masking the sponsors of a message or organization to make it appear as though it originates from a grassroots participant.
- NER (Named-Entity Recognition): A natural language processing technique used to identify and classify key entities like brand names or product models in unstructured text.
Original article
One chef's-knife brand gets 31% of its "what should I buy" mentions from 5% of the accounts, four times what chance predicts. So I pulled those accounts' full Reddit histories.
I like to cook, and cooking turned into an obsession with high-end Japanese chef's knives. When I want to buy a knife, or anything else, I type the product name into Google and add the word "reddit". A lot of people do this. Mike Riggs wrote it up in Reason in 2022 as "the Reddit hack", after Dmitri Brereton's essay on Google search made the same point: a query with "reddit" on the end returns humans instead of affiliate pages. The bet behind the habit is that a stranger in r/chefknives has no reason to lie to you about a knife.
That bet has an obvious weak point. If Reddit is where buyers go for unpaid opinions, Reddit is where a brand would want to plant paid ones. I wanted to know whether the knife subreddits I read, and scrape for New Knife Day, show any sign of that. Not a hunch about one suspicious comment, but something I could count and someone else could recount.
Why the question is testable at all
Last year I fine-tuned a small named-entity model, GLiNER, to pull brands, models and steels out of knife comments. From "picked up a Mazaki in white #2, way better than my old Fibrox" it returns Mazaki as a brand, Fibrox as a model and white #2 as a steel. That model runs over every comment the New Knife Day scraper collects from six subreddits: r/knives, r/knifeclub, r/chefknives, r/japaneseknives, r/FixedBladeEdc and r/KnifeSteels.
So for every comment I already have who wrote it, which brands it names, and whether the thread it sits in is someone asking what to buy. That is enough to ask a narrow question: in the threads where a recommendation changes a purchase, who is doing the recommending?
What astroturfing would look like in the data
Nobody publishes their shill accounts, so I had to decide in advance what paid posting would leave behind. The market for it is not hidden. REDCmts sells one Reddit comment for $9.99 and 100 for $699.99, from what it calls "real, aged accounts", and shows a gallery of brand mentions it says it delivered. Soar says its accounts are "aged and manually warmed" for weeks before a single brand mention. Bazzly advertises automated replies to every post that looks like someone shopping.
Taking those sales pages as the description of the product, a paid campaign for one brand, delivered through a handful of prepared accounts, should show up as:
- A small group of accounts writing a disproportionate share of the brand mentions in "what should I buy" threads.
- Those accounts naming one brand almost every time they name any.
- Thin accounts: few comments, low scores, no real standing in the subreddit.
- Young accounts, or accounts with histories that are hidden or wiped.
- Accounts that post mostly in knife subreddits, since the knife comments are what is being paid for.
- Links to a store or an affiliate page.
Every one of those is also what a devoted fan, a maker's employee posting on their own time, or a brand's own subreddit regulars wandering into a buying thread would produce. Public Reddit data can show that recommendations are concentrated, and cannot show why. Everything below is about the first half.
The corpus, and the refresh that changed the answer
The scraper stores each new post and its comments shortly after posting. That turned out to be the wrong moment for this question: a buying thread collects its recommendations over the following day or two, and r/knives posts had 1.5 stored comments each. A refresh pass went back to 3,607 posts older than 48 hours and refetched their comment trees, which took the corpus from 21,673 comments to 51,129. Before the refresh the test below found nothing, because about 800 buying-thread mentions were too few to tell 7.6% from the 7.1% chance gives.
What the data supports
Here is the test in one example. Take the 1,471 brand mentions in buying threads and deal the author names back out at random, so a busy account still gets many mentions and a quiet one few. Do that 1,000 times. On average the 49 brand-loyal accounts end up with 7.9% of the mentions, and in 95 of every 100 deals their share lands between 6.3% and 10.1%.
Their real share is 11.3%. Only 2 of the 1,000 deals reached it. In counts, about one buying-thread recommendation in nine comes from these 49 accounts, where chance gives one in thirteen. That is about 50 extra recommendations out of 1,471.
Where the extra share lands matters more than its size. If knife Reddit as a whole were being gamed, every subreddit would sit above chance. Two do, r/chefknives and r/knifeclub. r/knives, the largest, is within half a point of chance. A paid campaign is bought by one brand, so it should also show up brand by brand, and it does. Three brands get far more of their buying advice from the brand-loyal accounts than chance gives, one large brand gets slightly less, and three get none. That is the shape a few targeted campaigns would leave, and also the shape a few loud fan bases would leave.
The brands are coded because a concentration statistic is not evidence that any brand paid for anything, and the brand with the strongest signal also has a large, loud fan base.
On corpus data, the brand-loyal accounts also match two more of the predictions above. The accounts are thin: a median of 12 comments in these six subreddits, and a median score of 1, so nobody is upvoting them into prominence. They are loyal to one brand: two thirds of each account's brand mentions go to the same brand. That is three of the six predictions, all the corpus can test. Age, knife focus and store links need each account's whole Reddit history.
Their full Reddit histories look ordinary
I took the 23 brand-loyal accounts behind the three brands with a signal and fetched everything Reddit would return for each: up to about 2,000 comments and their submissions, account creation date and karma. For comparison, 23 other 10-plus-comment authors from the same corpus, drawn at random from the same comment-count range. Eight brand-loyal histories and seven comparison histories were hidden, suspended or deleted; the rest were readable.
A prepared paid account should be young, post mostly in the subreddits it is paid to post in, and push one brand. The brand-loyal accounts are 4.5 years old at the median, the same as the comparison accounts. Only 3% of their comments are in the six knife subs, against 10% for the comparison group, and they spread over 66 subreddits to the comparison group's 47. Across their whole history they name seven knife brands, not one. Store links are rare in both groups.
I compared about two dozen features in all. With 15 and 16 readable accounts, none of the differences is larger than splitting 31 people into two random groups would often produce, and the ones that lean anywhere lean toward the brand-loyal accounts being less knife-focused.
That is not what a warmed, single-purpose account looks like. It is what a person who is on Reddit a lot, and who has strong feelings about one knife maker, looks like. It is also what a well-run paid account would look like, which is why the vendors sell aged accounts instead of fresh ones. The eight hidden brand-loyal histories could hold the whole story and I cannot read them.
What this method cannot catch
- Bought aged accounts. Several commenters pointed out that old accounts with long, varied histories sell for cents in bulk.
- Moderators. The corpus only holds comments that survived moderation. A moderator who removes criticism of one brand, or approves one seller's posts, leaves no trace in it.
- Votes. Nothing here tests upvotes. A paid comment that gets bought upvotes looks the same to this method as one that earned them.
- No known shills to test against. The method has never been run on accounts known to be paid, so nobody knows how many paid accounts it misses.
- "None of the results are significant." That is true of the account-history comparison and not of the main result.
Shortcomings
- The brand detector is the stock GLiNER model, not the knife-tuned one from the earlier write-up, because that repo shipped without weights.
- "Buying thread" is a regex over titles and bodies.
- The brand-loyal group is 49 accounts and the per-brand results rest on 15 to 20 of them.
- I tested eight brands and six subreddits, and with that many tests one or two will look unusual by luck.
- The comparison accounts were drawn from the brand-loyal accounts' comment-count range, not paired account by account.
- Histories are capped at what Reddit's listing returns, around 2,000 comments.
- Reddit's listings stop near 1,000 posts per subreddit, so the kitchen subs cover about a year and r/knives and r/knifeclub only the weeks before the refresh.
What I take from it
Adding "reddit" to a knife search still gets you humans, mostly. For a couple of brands, a quarter to a third of the buying advice comes from accounts that mostly recommend that brand. Whether those are fans or paid, I do not know, and after reading their histories I lean toward fans and hold the lean loosely.
The practical check is the one the data endorses: when a knife recommendation comes from an account you do not recognize, click through and see whether it has ever named a different brand. In this corpus that one question separates the brand-loyal accounts from everyone else better than karma does. It fails on a hidden history, and it will not catch the paid comment from a bought aged account. I do not think anything a reader can do will.
Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi