Emojery vs Return YouTube Dislike
Both projects show reactions the platform doesn't. Only one of them can tell you whether the number on the screen is actually real.
TL;DR
Return YouTube Dislike (RYD) gives each browser install a random number and trusts it. Reinstall the extension or open a new browser profile. You get a fresh "user", forever. Emojery asks for one sign-in with a provider you already use and turns the opaque id it returns into a one-way account identifier, so one provider account = one vote, the same way
most social networks already work.
RYD is a great project that filled a real gap when YouTube hid the dislike button. We respect it. It's open source, GPL-3, and one of the reasons users still have any signal at all. This page is not a take-down. It is an explanation of why the numbers differ and what each project is actually measuring.
At a glance
| Emojery | Return YouTube Dislike |
| Who counts as a user | One provider account = one account | One random number per install, no verification |
| Cost of making 100 fake "users" | 100 provider accounts, each a public enrollment in the log (hard, slow, visible) | 100 reinstalls or browser profiles (free, instant) |
| What you actually see | Real reactions from verified people | An estimate: archived counts + extrapolation from votes |
| Sign-in to read counts | No — reads need no account and send no identifier | No — reads are fully anonymous |
| Sign-in to submit a reaction | Yes — one sign-in with a provider you already use | No |
| If you reinstall the extension | Same account (the same provider account still resolves to it) | Brand-new "user" with a clean slate |
| If you open a private window | Sign in again, but it's still you | You become a different person to the server |
| "Delete my account" | Yes — one button, erases your account record + reverses your reactions out of the counters | No formal flow; clearing the random ID doesn't undo votes |
| Source code | github.com/khasky/emojery — GPL-3
| github.com/Anarios/return-youtube-dislike — GPL-3
|
Why the difference matters
Who is "a user" in each project?
In Emojery, your account is derived from the opaque id your sign-in provider returns, through a one-way transformation: the same provider account always lands on the same Emojery account, and the stored identifier can never be turned back into the id. 2 installs with the same provider account = the same account. 2 browser profiles with the same provider account
= the same account. Reinstalling = the same account. We never store the id itself, and never ask for a name or an email.
In RYD, your account identifier is a 36-character random string generated by
crypto.getRandomValues the first time the extension registers. Reinstall → new identity. Different browser → new identity. New profile → new identity. The server has no way to tell them apart from a real new person.
Verifiable in the RYD source — see generateUserID() and
register() in
Extensions/combined/ryd.background.js.
What does the number on the screen actually mean?
RYD's own website is upfront about this: the count you see is a
mix of historical dislike data scraped before YouTube removed the public counter, plus an extrapolation built from how the extension's anonymous users vote. The README and the official site both describe it as an estimate.
Emojery doesn't estimate. The number under a Facebook post, a GitHub repo, or an Amazon product is the literal count of verified accounts that clicked that emoji. If you didn't react, you're not in it. If you
reinstall, you don't suddenly become 2 people.
How easy is it to fake votes?
RYD does not ignore this problem. Every vote triggers a proof-of-work puzzle the browser has to solve before the server accepts it — a small CPU cost designed to make industrial botting uneconomic. That part is well-engineered (you can read
solvePuzzle in the same background file). But the cost is a fraction of a second per vote and applies per browser install, not per person. Spinning up many installs is cheap; solving a few seconds of CPU is cheaper.
Emojery costs real-world effort to fake. To create another voter you need another account at Google, Apple, Microsoft or Twitch, and each one shows up as an enrollment in the public log. That's the same friction every mainstream login flow uses, and it's why 10 throwaway accounts are 10 reactions instead of 10,000, in the open.
5 million people can't be wrong, right?
RYD has millions of installs. Most users, rightly, don't care about identity models; they install it because YouTube took away a useful signal and any signal is better than none. We agree. For "rough thermometer on a viral video", an estimate is fine.
Emojery is built for a different job: reactions on
specific things — a Facebook post, a single GitHub repo, an Amazon product. There the difference between "real" and "estimated" matters, because one is feedback and the other is vibes.
Which one should you pick?
Pick RYD if you only need a rough idea of how a YouTube video is landing, and you don't want to sign in for anything. It is a great fit for that.
Pick Emojery if you want reactions across the many sites Emojery supports, and you want the counts to reflect actual people who showed up, not anonymous numbers a re-installed browser hands out for free. What that looks like on YouTube, counted thumbs down included, is on emoji reactions for YouTube.
Leaning toward switching? The
Return YouTube Dislike alternative guide covers the move itself.
Fair-play notes
Every technical claim about RYD on this page is verifiable in their public GPL-3 source:
github.com/Anarios/return-youtube-dislike. We link the exact file (ryd.background.js) so you can check us.
We are not affiliated with RYD. We didn't fork it. The two projects target different platforms and solve different problems.
"Estimated" is not a slur. RYD's own homepage and README describe the count that way. We just think it's worth telling users which kind of number they're looking at.