github-readme-stats
github-readme-stats copied to clipboard
How to solve "Maximum retries exceeded"
As you may see, demo service "https://github-readme-stats.vercel.app" is hitting the API Limit. Causing your stats not displaying. (even if it's not, if too many users are using the default demo service it will happen again.)

How to Fix?
Well, there are 2 methods.
1. Set it up yourself using Vercel (requires some step)
2. Use URL provided by others (The easiest step)
Method 1
please check the docs, there are specific instructions for setting up.
Method 2 (Works for me)
Change https://github-readme-stats.vercel.app to another URL provided below.
here are some you can use. (These links are collected from the web)
https://github.com/PencilNavigator/readme-stats-URL/blob/main/URL.md
How can i help?
Its easy! Follow the docs where there are specific instructions for setting up, and then share your Vercel URL by making an Issue Here.
If you like this post, please give a Thumbs up and a Heart below, and also star my link repository!
Thank you, this solved the problem for me.
Thanks
Thank you.
https://github-readme-stats.zohan.tech (by Zo-Bro-23)
thanks for providing 2 different options.
Thanks @PencilNavigator, Method 2 worked!
https://readme-stats.clckblog.space/
by @CLCK0622 (Kevin Zhong)
@PencilNavigator thanks for opening the issue and recommending potential solutions.
As easy it is to use URLs provided by the community members, I will still strongly recommend just deploying it on your own Vercel instance (it's easy, fast & better) using your own PAT.
The issue with using someone else's URL is:
- If many people use the same URL it will again hit the limits
- Either their Vercel instance will hit the limit in that case the person's account might get charged extra or blocked
- Or their own GitHub PAT might get exhausted which is same as the issue happening to us
- If you use some other URL you won't get the bug fixes or updates to the stats card, and have to wait for them to update their fork & deploy again to get the changes. (But if you have your own fork you can do this on your own)
@anuraghazra I did mention that in βmethod 1". But i think not everyone wants to setup their own vercel instance. Using a URL provided by others is way easier for most users, and thats the exact reason why the main https://github-readme-stats.vercel.app/ failed (Too many people are using it).
I think this is really a good way for helping others as well as solving this problem permanently. What's more, as the names are provided below, others can ask them to synchronize the forks. Though not the best but also acceptable. Looking forward to your merging this into README.
@anuraghazra Your own profile's README stats is down.
Screenshot on 2023/1/18 13:38 UTC+8

@rickstaa can you please pin this issue? I keep having to reference it when answering similar issues :)
@rickstaa can you please pin this issue? I keep having to reference it when answering similar issues :)
As GitHub only allows three pins, I currently do not have a way to pin it. I already pined #1471, which is meant for this problem. People, however, keep making their own issues without looking at the pins π .

Duplicate of #https://github.com/anuraghazra/github-readme-stats/issues/1471.
The usefulness of #2415 is the number of community URLs it lists. People find it much easier to choose one URL to use than to deploy and set it up themselves. Maybe consider replacing #1471 with #2415 for the pin; it's fine either way though.
The usefulness of #2415 is the number of community URLs it lists. People find it much easier to choose one URL to use than to deploy and set it up themselves. Maybe consider replacing #1471 with #2415 for the pin; it's fine either way, though.
I see. I can add those URLs to the comment by @anuraghazra in #1471. I, however, think these personal instances will likely be quickly overloaded due to the popularity of this repository. π I think the only way forward is to make it easier for people to deploy their own Vercel instance (i.e. https://github.com/anuraghazra/github-readme-stats/pull/2424) or to implement #2179.
@rickstaa the links provided here are in a seperate repository. if we collected a decent amount of links, we can do a dynamic distribution between links to balance the load between all instead of putting all the load on the main one. With a little bit of coding, you can easily do that on vercel. (i am already doing that, and it's also one of the reason i created the readme-stats-URL repository.)
@rickstaa the links provided here are in a seperate repository. if we collected a decent amount of links, we can do a dynamic distribution between links to balance the load between all instead of putting all the load on the main one. With a little bit of coding, you can easily do that on vercel. (i am already doing that, and it's also one of the reason i created the readme-stats-URL repository.)
Or maybe we can proxy to a random instance, but I don't see how that's different from using multiple PATs (IP address maybe?).
@rickstaa the links provided here are in a seperate repository. if we collected a decent amount of links, we can do a dynamic distribution between links to balance the load between all instead of putting all the load on the main one. With a little bit of coding, you can easily do that on vercel. (i am already doing that, and it's also one of the reason i created the readme-stats-URL repository.)
Or maybe we can proxy to a random instance, but I don't see how that's different from using multiple PATs (IP address maybe?).
It's the same you will always have to deal with GitHubs 5000 points GraphQL limit.
Nah, a HTTP 302 redirect. (does not use the original URL).
Check this issue (sorry it's in chiense) https://github.com/XIU2/CloudflareSpeedTest/issues/168 This project "CloudflareSpeedTest" has a default Speedtest link, since too many people were using the default link and reached cloudflare's limit, they speed limited the main URL. The owner found out a way of doing a HTTP 302 Redirect to a random link provided by the community (people can join with a usable link under that issue).
We can do the same thing with this project. After the link is Community-Provided, with tons of different URL and tons of different PAT's, it is likely hard to hit the limit.
I shared my personal URL in the attempt of encouraging others to deploy their own Vercel instance, not to encourage others to use mine. Since many people have started using my URL I decided to delete the Vercel instance and delete the profile README from my GitHub profile. The URL can be deleted from @PencilNavigator 's list as well, since it has no active deployment. It's sad, anyway, that I was forced to delete my Vercel instance and I can't include stats in my profile README because most of the people think that it's easier to use my personal URL.

I agree; 300 is a lot π
I can't include stats in my profile README because most of the people think that it's easier to use my personal URL
You can always deploy again (and not share the URL with anyone), or use someone else's URL (feel free to use mine: https://github-readme-stats.zohan.tech)!
@Zo-Bro-23 I could, but my profile is pretty easy to reach, especially after I've commented on several issues regarding this topic, so the new URL could be stolen too. Anyway, thank you for your personal URL, but I think I'll look for another solution!
but I think I'll look for another solution!
I had the same problem but created a new branch and ran my own cards. π Anyway, we are looking to improve the GRS deployment by implementing it as a GitHub action (see https://github.com/anuraghazra/github-readme-stats/issues/2179). This will lead to more accurate stats and better loading times and allows people to update the cards at any frequency they like. π
People may still find it easier to use a given URL than set up an action, so we will have to come up with some creative solutions. Having multiple PATs is probably the best solution, but we have to figure out why they're getting banned by GitHub (maybe we should use real emails instead of anonymous ones).
It's sad, anyway, that I was forced to delete my Vercel instance and I can't include stats in my profile README because most of the people think that it's easier to use my personal URL.
Yes that sucks, I've asked people in multiple issues to not use anyone's personal Vercel instance (because of obvious reasons) and instead deploy on their own.
This https://github-readme-stats-ruby-one.vercel.app/ url is @claudiotancredi's and if all of you start using it his PAT & Vercel instance will get exhausted.
https://github.com/anuraghazra/github-readme-stats/issues/2404#issuecomment-1383185498
@PencilNavigator
Using a URL provided by others is way easier for most users, and thats the exact reason why the main https://github-readme-stats.vercel.app/ failed (Too many people are using it).
yes agree, but the problem is the URLs provided by others won't have multiple PATs (thus only 5k API Limit) + No Vercel Pro. So these URLs are more susceptible to downtime.
While github-readme-stats's instance have more tolerance, yes it might go down but it will go backup after 1h or so. Not to mention, personal deployed instance will have the best stability.
@rickstaa
Anyway, we are looking to improve the GRS deployment by implementing it as a GitHub action (see https://github.com/anuraghazra/github-readme-stats/issues/2179).
Now here's the interesting part.
Yes github-action will be a much accurate & stable solution. But consider this, the whole reason github-readme-stats is this much popular is because of it's accessibility and ease of integration. (just paste a link and done!). People are hesitant to deploy on their own Vercel instance (even though it's just 5 clicks to deploy) thus opting for using the URLs provided by community members for the convenience it provides.
Now take this scenario, GithubAction setup will be 2x more cumbersome than just pasting a link in your readme. π so it will be hard to convince people to migrate to the action.
@rickstaa
Anyway, we are looking to improve the GRS deployment by implementing it as a GitHub action (see #2179).
Now here's the interesting part.
Yes github-action will be a much accurate & stable solution. But consider this, the whole reason github-readme-stats is this much popular is because of it's accessibility and ease of integration. (just paste a link and done!). People are hesitant to deploy on their own Vercel instance (even though it's just 5 clicks to deploy) thus opting for using the URLs provided by community members for the convenience it provides.
I agree that using a simple URL to generate the cards is easiest for most people. π I, however, am afraid we will get even more downtime if we grow even more. I was therefore looking to persuade people to use a different option since people are not using their own Vercel instance. π
My hope was that 40% more tech-savvy (or less lazy) users would switch to a GitHub action or the Private Vercel instance if it offered less downtime (and more accurate stats). In that case, we can use environment variables to enable these more accurate stats on the GitHub action (see https://github.com/anuraghazra/github-readme-stats/pull/2159 for an example). But maybe this is just wishful thinking. π
Now take this scenario, Github Action setup will be 2x more cumbersome than just pasting a link in your readme. π so it will be hard to convince people to migrate to the action.
If deployed on the marketplace (see https://github.com/anuraghazra/github-readme-stats/issues/2179#issuecomment-1398449921), setting GRS up with this action would essentially be four easy steps:
- Add the action YAML script to your readme.
- Add a PAT to the readme (see https://docs.github.com/en/actions/security-guides/automatic-token-authentication).
- Wait till the action has at least run one time.
- Reference the generated picture URL in your readme.
@anuraghazra With enough vercel instances in my repository, i can create a service that equally spreads the request to all links provided (load balancing for short).
The github-readme-stats URL shouldn't even be provided by you, it should be a community thing to do.
One-man's power is always not enough. Groups of people has better power.