What is the URL of the page with the issue?

pkg.go.dev

What is your user agent?

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Safari/605.1.15

Screenshot

Image

What did you do?

  1. Use public Wi-Fi connection (possibly with other golang devs?)
  2. Search pkg.go.dev
  3. Go to a package page
  4. Repeat a few times

What did you see happen?

429 Too Many Requests

Full response via xh:

HTTP/2.0 429 Too Many Requests
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
content-length: 142
content-type: text/html; charset=UTF-8
date: Mon, 18 Aug 2025 11:38:54 GMT

<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>429</title>429 Too Many Requests

What did you expect to see?

Error should not occur when using the site normally (browser/no automation).

Responses should include an indication of request budget at least in HTTP headers for scripting users/diagnosing.

Block time should be lower in less severe cases: I'm still waiting after 15 minutes. Or perhaps me checking every couple of minutes or so is prolonging the block? That isn't ideal, either.

Homepage route could be cached, marked cacheable and exempted from rate.

Comment From: seankhliao

how much is a few times, and any browser settings / extensions we should know about?

Comment From: alanpearce

It seems to vary, which is why I wasn't more specific. Sometimes it's around 3, sometimes it doesn't show up for quite a while.

Not to my knowledge, otherwise I would have mentioned.

Comment From: cagedmantis

cc @golang/pkgsite

Comment From: alanpearce

I think the public wifi was not the cause, actually. I've noticed that it's actually Dash triggering the rate limit when fetching/updating package documentation. I also assumed that browsing with a typical browser would be subject to different limits, but I guess only rudimentary IP blocking is in place at the moment.

I've sent a message to the developers of Dash so that they can improve their request scheduling or use go doc --http, but I still think that there are improvements that could be made on the server side.

Comment From: jba

there are improvements that could be made on the server side

What did you have in mind?

Comment From: alanpearce

I mentioned most ideas in the issue already, but here they are again:

Responses should include an indication of request budget at least in HTTP headers for scripting users/diagnosing.

Block time should be lower in less severe cases: I'm still waiting after 15 minutes. Or perhaps me checking every couple of minutes or so is prolonging the block? That isn't ideal, either.

Homepage route could be cached (server-side), marked cacheable (browser) and exempted from rate-limiting

Also just thought it might be reasonable that cookie'd users get a different limit