diff --git a/api/next/77320.txt b/api/next/77320.txt
new file mode 100644
index 0000000..df007f9
--- /dev/null
+++ b/api/next/77320.txt
@@ -0,0 +1 @@
+pkg testing/synctest, func Subtest(*testing.T, string, func(*testing.T)) #77320
diff --git a/doc/next/6-stdlib/99-minor/testing/synctest/77320.md b/doc/next/6-stdlib/99-minor/testing/synctest/77320.md
new file mode 100644
index 0000000..53b3639
--- /dev/null
+++ b/doc/next/6-stdlib/99-minor/testing/synctest/77320.md
@@ -0,0 +1 @@
+The new [Subtest] helper function combines [testing.(*T).Run] and [testing/synctest.Test].
diff --git a/src/testing/synctest/synctest.go b/src/testing/synctest/synctest.go
index f254d56..7827849 100644
--- a/src/testing/synctest/synctest.go
+++ b/src/testing/synctest/synctest.go
@@ -330,3 +330,14 @@
time.Sleep(d)
Wait()
}
+
+// Subtest runs f in a bubble as a subtest of t called name.
+//
+// It is exactly equivalent to calling t.Run with a function that calls [Test].
+func Subtest(t *testing.T, name string, f func(*testing.T)) {
+ t.Helper()
+ t.Run(name, func(t *testing.T) {
+ t.Helper()
+ Test(t, f)
+ })
+}