Return to

Making a universal dislike button!

Youtube is taking away the dislike button. I’d like to put it back, and more. Basically a database of URLs that match up with a number of likes and dislikes, both submitted by users of the service.

I envision a browser plugin that pops up a simple colored ratio bar with a like and dislike button, for every unique link visited. Or, users can manually submit links. Maybe to prevent abuse a comment must be submitted, and users have to login using a Github account or something (or heaven forbid, solve a captcha).

I think the minimum viable product will be simply a Django/Flask site that interfaces with the database, with manual link submission/retrieval. This will be the main goal for Devember. I might also want to limit it to just Youtube videos (urls) for now.

The browser plugin can come later, as I have no idea how those are made. It’d be interesting if it could hook into the current like/dislike buttons.

Ideally there’d be a system for owners of content to moderate comments or request removal, though there will be a need for abuse prevention there as well.

No github repo yet, will edit in a link later…

changed framework options


I think this is a very simple and accomplishable project. The extension would give you the DOM access you would need to give you YouTube site interaction. I have only been working on extensions here and there for the past year or so I am rather new to the space. But IMO if you have reasonable knowledge of JS. Plugins were much simpler than I was expecting getting started, of course they can be more complicated if you wanted.

As far as the method, I’m sure URL would be fine, as I am reasonably confident in saying a given video ID will not change unless the video is removed, (and even then I am not sure if the ID is released) I would likely shorten the entry in the db just as the video ID an not the whole URL (I am assuming that’s what you meant anyway, but I just wanted to clarify my thoughts)

I don’t think it needs to be more complicated than that IMHO. Maybe something like this

Extension → DOM access → (dis)like REST query and display value next to dislike button

CSS can be easily injected, or included in the extension package if necessary

As chromium based extension grants your background script the tab information object that includes the entire URL you would use including all of the events needed to cause the query. This obviously would only work when the watch page was loaded, and not as videos were loaded during a search. However I think that could be solved with some effort.

Extension → attach listener to dislike button (not straightforward imo but not difficult in the case of YouTube) → Button press invokes REST query to increase dislike count.

I hope I was able to help or encourage. I think you have neat and simple idea, especially if you need a learning project. I think this project could really catch on. I’m not well versed in modern frameworks for this kind of thing, but it would be a project Id be willing to contribute to possibly. I just wanted to share my $0.02


I agree with @VnUgE, this seems like a great idea for a project, and I can see it catching on. And this seems like something that I’d be happy to contribute to as well. Best of luck, I hope to follow this one closely.


Hey, thanks for the information! It’s a good start for doing research about writing an extension, and how it will interact with sites. Unfortunately, don’t know any JS…

As for what I meant with URLs, you’re right in that grabbing a video ID is a solid way for YT, though I think I’d like for this tool to be available for more than just videos, hence any URL. I’ll probably limit it to just YT to make it simple, and then migrate the database later? Dunno if that’ll cause any headaches.

Current progress is mostly doing chunks of the Flask tutorial so that at least there’s a dummy site to interact with. This is my first time attempting a complete application, not just little scripts here and there. Thanks everyone for the encouragement!



Will still be working on this, just been a little sidetracked with finals, woodworking projects, and cooking.


well you inspired me to google and i found a git with this very thing.
looked at the code, didnt seem to complex.

Return YouTube Dislike

select your browser and …
anyways… it worked, i now see the dislike counts on youtube.


cheers taotien
sorry my dyslexia and lazy reading got the best of me. i actually googled your git thinking it was someone else
my bad and thanks again :wink:


Return dislike … appears to be initially using Youtube APIs to retrieve the actual dislike ratio, and later (after Google/Youtube has killed the API) plans on using heuristics to estimate what the full userbase’s dislike ratio might be.

You seem to be designing a completely independent overlay system; I think there was a project a while back that attempted to make an overlay system for comments — it was called Dissenter or something like that — might be worth glancing over its implementation to see if there was anything of use there.

That in particular could be an interesting problem to solve, if you decide to expand beyond Youtube, where the URL format is static and well understood. Many links now include all kinds of tracking information appended to them, or have excess cruft for readability that has no effect on the page returned. For example:

Might all return the same article, so in your rating database, they should be treated as one. While the page could have a <link rel="canonical" that would let you match equivalent pages, it should be considered that the canonical URL might change if the post/article is retitled, or some CMSs might not be using canonical at all.

While I am thinking about overlay systems, it may be worth your while to look at SponsorBlock to see how it is interfacing with Youtube; though it is overlaying video skipping functionality rather than voting or comments.

1 Like

got an error today with it.
one of my info sec channels sent a reminder.
i clicked on the stream and it had
4 likes - 3.6k dislikes. ?
now i know the channels not that popular, so i hit refresh and dislikes switched to 0.

il let you know if it happens again.

edit and its stopped working completley :frowning:

good effort while it lasted, thanks.

1 Like

YouTube is going all the way with it’s removal…

After today (December 13), developers will also lose access to the dislike API data from YouTube. Thus, the various extensions that brought back the dislike counter will not be accurate or of much use.

Apart from extensions, websites that display dislikes will also not be able to show accurate and real-time dislikes on YouTube videos, as pointed out by an individual.

Today would be the last day to see the public dislike count on @YouTube on alternative live counter websites before its API data on them becomes inaccessible tomorrow. (Source)

Update 31 (December 14)

04:56 pm (IST): It appears that the Return YouTube Dislike extension and presumably others have stopped working for some users already. An individual took to Twitter to report the issue by sharing a screenshot.

So the extention stopped working cus of YouTube’s API (or lack thereof) but for a split second when i open a video I can still see the dislike counter before it goes to “NAN”. So maybe there is still a way to circumvent the API. (Source)

1 Like

Instead of a simple dislike button, we now need to divulge written input, on why the content is not stellar [IF it didn’t achieve straight rubbish status]… Maybe continuously throw in a final quip of [Insert dislike button YT]

Demonetization engaged, to an empty pot


Sadly, the “like” data I think is more usable for trends and interests for the marketing entities that pay hand over fist for that data for their sales departments.

I think people are more likely (ha ha ha pun) to put in the effort to press the like button then they are the dislike… Also, in a culture of everybody wins and gets a trophy for participation it helps to coddle us along and hide the ugly truth of life… Some people may not like you or what you do or say. The only opinion that matters is your own when you go to sleep at night, or at least it should be.


I’m reading way to much into it.

1 Like

Not quite sure what to make of this, since, while this mentions the NaN bug, the scheduled date for API access to be removed was December 13, no? So from then on, that extension has been purely pulling from its external dislike database?

1 Like

hmm looks like its going to datamine you as much as the dislike count.

our backend will switch to using a combination of scraped dislike stats, estimates extrapolated from extension user data and estimates based on view\like ratios.

so they are saying they will be guestimating?.
by looking at my likes and dislikes. sorry mate. time to admit this is done imo.
unless you can access the dislike counter that they replace the old one with your gonna be guessing.
it might be educated guessing but its still a guess. :frowning:

1 Like

As I mentioned before, it sounds like the plan is to turn it into the kind of system @taotien was planning on building, although also incorporating some estimation to fill in the “gap” for videos with little data available.

It is open source though, is it not? I would hope that an opt-in would be required before your personal dislike submission is sent to Anarios’ database.

I have no idea what the extension is even able to submit at the moment, but the userscript only seems to be requesting dislike/like data, using the following endpoint,…

1 Like

Could you imagine the size of the database for this app though…

You could try to group and anonymise requests like SponsorBlock is doing, to avoid the overhead of caching the database locally but still having some privacy,

I think at this point they are trying their best to cut down on any negative vibes that gets put onto videos in their platform including of a dislike button. Looking at it from the grand scheme of things is makes sense on their end from a ‘Think positive’ attitude.

We’ll see if this change impacts the platform as bad as folks are saying. As far as I’m aware no other org has the time or money to bank roll a Youtube like platform so it is what it is.

Heck I’d like for video replies to come back but they won’t :stuck_out_tongue:

make a separate service that keeps traks of likes/dislikes for everything: every web page everywhere. Just make it part of the browser instead of the webpage and I would even add a ratio rating too to emphasize when somthing is… steaming garbage, or really great. Who says you have to rely on the youtube api? It’s just a boolean (1 bit) for each url. ez pz lemon squeezy
Honestly the hardest part will be creatng the web service that provides the api. You’ll want to have authentication so that not just anyone can make requests to it, but after you do that the rest is easy.

No, this is damage control plain and simple. You can no longer tell that the coverage of the holocough and new movie trailers are getting railed harder than Alexis Texas on spring break.

YouTube, I suspect, has an internal policy where they want to be more like short-format Netflix. Curated content, but with ads on top of a subscription fee. They want this because they have an agenda, and their own platform is used to amplify the opposition to their agenda.

mate its no such thing… over the past 12 months mainstream media has been caught repeatedly lying.
everything from trumps pee tapes, jan 6th to covid numbers to kyle rittenhouse.
as a result joe public has been hitting these media outlets with dislikes.

they dont like it so asked for censorship. they got it, with glee apparently.

so no mate if you think the reasons for youtubes changes are anything more than an attempt at censorship of political opinion. your being naive.