diff --git a/edit.go b/edit.go
index 9cb49c9..4e00d1e 100644
--- a/edit.go
+++ b/edit.go
@@ -20,7 +20,6 @@
 
 type editData struct {
 	Snippet   *snippet
-	Share     bool
 	Analytics bool
 	GoVersion string
 	Gotip     bool
@@ -48,11 +47,6 @@
 
 	snip := &snippet{Body: []byte(s.examples.hello())}
 	if strings.HasPrefix(r.URL.Path, "/p/") {
-		if !allowShare(r) {
-			w.WriteHeader(http.StatusUnavailableForLegalReasons)
-			w.Write([]byte(`<h1>Unavailable For Legal Reasons</h1><p>Viewing and/or sharing code snippets is not available in your country for legal reasons. This message might also appear if your country is misdetected. If you believe this is an error, please <a href="https://golang.org/issue">file an issue</a>.</p>`))
-			return
-		}
 		id := r.URL.Path[3:]
 		serveText := false
 		if strings.HasSuffix(id, ".go") {
@@ -88,7 +82,6 @@
 	w.Header().Set("Content-Type", "text/html; charset=utf-8")
 	data := &editData{
 		Snippet:   snip,
-		Share:     allowShare(r),
 		GoVersion: runtime.Version(),
 		Gotip:     s.gotip,
 		Examples:  s.examples.examples,
diff --git a/edit.html b/edit.html
index 1045005..422d1f4 100644
--- a/edit.html
+++ b/edit.html
@@ -25,10 +25,8 @@
 				'runEl':        '#run, #embedRun',
 				'fmtEl':        '#fmt',
 				'fmtImportEl':  '#imports',
-				{{if $.Share}}
 				'shareEl':      '#share',
 				'shareURLEl':   '#shareURL',
-				{{end}}
 				'enableHistory': true,
 				'enableShortcuts': true,
 				'enableVet': true,
@@ -36,9 +34,7 @@
 			});
 			playgroundEmbed({
 				'codeEl':       '#code',
-				{{if $.Share}}
 				'shareEl':      '#share',
-				{{end}}
 				'embedEl':      '#embed',
 				'embedLabelEl': '#embedLabel',
 				'embedHTMLEl':  '#shareURL'
@@ -112,14 +108,12 @@
 					Imports
 				</label>
 			</div>
-			{{if $.Share}}
 			<input type="button" value="Share" id="share">
 			<input type="text" id="shareURL">
 			<label id="embedLabel">
 				<input type="checkbox" id="embed">
 				embed
 			</label>
-			{{end}}
 			<select class="js-playgroundToysEl">
 				{{range .Examples}}
 				<option value="{{.Path}}">{{.Title}}</option>
diff --git a/share.go b/share.go
index ef7a6d6..528f86d 100644
--- a/share.go
+++ b/share.go
@@ -11,7 +11,6 @@
 	"fmt"
 	"io"
 	"net/http"
-	"strings"
 )
 
 const (
@@ -53,11 +52,6 @@
 		http.Error(w, "Requires POST", http.StatusMethodNotAllowed)
 		return
 	}
-	if !allowShare(r) {
-		http.Error(w, "Either this isn't available in your country due to legal reasons, or our IP geolocation is wrong.",
-			http.StatusUnavailableForLegalReasons)
-		return
-	}
 
 	var body bytes.Buffer
 	_, err := io.Copy(&body, io.LimitReader(r.Body, maxSnippetSize+1))
@@ -82,37 +76,3 @@
 
 	fmt.Fprint(w, id)
 }
-
-// golang/go#65081: the IP prefixes below have been observed in proxied traffic
-// from go.dev to play.golang.org, and as of 2024-01-16 are incorrectly
-// identified as CN by X-AppEngine-Country. Using geoIP tooling, these were all
-// verified as having temporarily been categorized as CN in early January, but
-// are currently US.
-//
-// While this is being investigated, hard-code a temporary allow list for these
-// IPs to get the playground working again.
-//
-// Per https://www.gstatic.com/ipranges/goog.json, these are Google IPs.
-var temporaryAllowListIPPrefixes = []string{
-	"2600:1900:2001:2",
-	"2600:1900:2001:3",
-	"2600:1900:2000:1b",
-	"2600:1900:2000:1d",
-	"2600:1900:2000:38",
-	"2600:1900:2000:37",
-	"2600:1900:2000:9",
-}
-
-func allowShare(r *http.Request) bool {
-	if r.Header.Get("X-AppEngine-Country") != "CN" {
-		return true
-	}
-	for _, forward := range strings.Split(r.Header.Get("X-Forwarded-For"), ",") {
-		for _, prefix := range temporaryAllowListIPPrefixes {
-			if strings.HasPrefix(strings.TrimSpace(forward), prefix) {
-				return true
-			}
-		}
-	}
-	return false
-}
