diff --git a/api/next/51473.txt b/api/next/51473.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c47a629d73f5b887bf26c70bc46c08d65c039c2f
--- /dev/null
+++ b/api/next/51473.txt
@@ -0,0 +1 @@
+pkg runtime, func GOROOT //deprecated #51473
diff --git a/doc/next/6-stdlib/99-minor/runtime/51473.md b/doc/next/6-stdlib/99-minor/runtime/51473.md
new file mode 100644
index 0000000000000000000000000000000000000000..9083766a4d653b17278d9cba177cfcf49dfb8d82
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/runtime/51473.md
@@ -0,0 +1,3 @@
+The [GOROOT] function is now deprecated.
+In new code prefer to use the system path to locate the “go” binary,
+and use `go env GOROOT` to find its GOROOT.
diff --git a/src/runtime/extern.go b/src/runtime/extern.go
index 2019be4ddec4f3758507b069c5dd8a4a8eae164e..f8f81be8ef4357b94bb4b01461ba36f603eefaa4 100644
--- a/src/runtime/extern.go
+++ b/src/runtime/extern.go
@@ -336,6 +336,11 @@ var defaultGOROOT string // set by cmd/link
 // GOROOT returns the root of the Go tree. It uses the
 // GOROOT environment variable, if set at process start,
 // or else the root used during the Go build.
+//
+// Deprecated: The root used during the Go build will not be
+// meaningful if the binary is copied to another machine.
+// Use the system path to locate the “go” binary, and use
+// “go env GOROOT” to find its GOROOT.
 func GOROOT() string {
 	s := gogetenv("GOROOT")
 	if s != "" {