diff --git a/internal/http3/http3_synctest_test.go b/internal/http3/http3_synctest_test.go
new file mode 100644
index 0000000..ad26c6d
--- /dev/null
+++ b/internal/http3/http3_synctest_test.go
@@ -0,0 +1,48 @@
+// Copyright 2024 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:build go1.24 && goexperiment.synctest
+
+package http3
+
+import (
+	"slices"
+	"testing"
+	"testing/synctest"
+)
+
+// runSynctest runs f in a synctest.Run bubble.
+// It arranges for t.Cleanup functions to run within the bubble.
+func runSynctest(t *testing.T, f func(t testing.TB)) {
+	synctest.Run(func() {
+		ct := &cleanupT{T: t}
+		defer ct.done()
+		f(ct)
+	})
+}
+
+// runSynctestSubtest runs f in a subtest in a synctest.Run bubble.
+func runSynctestSubtest(t *testing.T, name string, f func(t testing.TB)) {
+	t.Run(name, func(t *testing.T) {
+		runSynctest(t, f)
+	})
+}
+
+// cleanupT wraps a testing.T and adds its own Cleanup method.
+// Used to execute cleanup functions within a synctest bubble.
+type cleanupT struct {
+	*testing.T
+	cleanups []func()
+}
+
+// Cleanup replaces T.Cleanup.
+func (t *cleanupT) Cleanup(f func()) {
+	t.cleanups = append(t.cleanups, f)
+}
+
+func (t *cleanupT) done() {
+	for _, f := range slices.Backward(t.cleanups) {
+		f()
+	}
+}
diff --git a/internal/http3/http3_test.go b/internal/http3/http3_test.go
index f490ad3..f6fb2e9 100644
--- a/internal/http3/http3_test.go
+++ b/internal/http3/http3_test.go
@@ -2,17 +2,14 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build go1.24 && goexperiment.synctest
+//go:build go1.24
 
 package http3
 
 import (
 	"encoding/hex"
 	"os"
-	"slices"
 	"strings"
-	"testing"
-	"testing/synctest"
 )
 
 func init() {
@@ -25,41 +22,6 @@
 	os.Setenv("GODEBUG", os.Getenv("GODEBUG")+",asynctimerchan=0")
 }
 
-// runSynctest runs f in a synctest.Run bubble.
-// It arranges for t.Cleanup functions to run within the bubble.
-func runSynctest(t *testing.T, f func(t testing.TB)) {
-	synctest.Run(func() {
-		ct := &cleanupT{T: t}
-		defer ct.done()
-		f(ct)
-	})
-}
-
-// runSynctestSubtest runs f in a subtest in a synctest.Run bubble.
-func runSynctestSubtest(t *testing.T, name string, f func(t testing.TB)) {
-	t.Run(name, func(t *testing.T) {
-		runSynctest(t, f)
-	})
-}
-
-// cleanupT wraps a testing.T and adds its own Cleanup method.
-// Used to execute cleanup functions within a synctest bubble.
-type cleanupT struct {
-	*testing.T
-	cleanups []func()
-}
-
-// Cleanup replaces T.Cleanup.
-func (t *cleanupT) Cleanup(f func()) {
-	t.cleanups = append(t.cleanups, f)
-}
-
-func (t *cleanupT) done() {
-	for _, f := range slices.Backward(t.cleanups) {
-		f()
-	}
-}
-
 func unhex(s string) []byte {
 	b, err := hex.DecodeString(strings.Map(func(c rune) rune {
 		switch c {
diff --git a/internal/http3/qpack_decode_test.go b/internal/http3/qpack_decode_test.go
index 1b779aa..3b9a995 100644
--- a/internal/http3/qpack_decode_test.go
+++ b/internal/http3/qpack_decode_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build go1.24
+//go:build go1.24 && goexperiment.synctest
 
 package http3
 
