diff --git a/encode/json.go b/encode/json.go
index ce5916205f754b1c5ccd9e0bafc25ba4678fc11b..7c6087568351431f545f6aeb89277f8dfcfe85bb 100644
--- a/encode/json.go
+++ b/encode/json.go
@@ -11,7 +11,9 @@ import (
 // при кодировании или декодировании JSON.
 const bufferSize = 4096
 
-var JSON = &jsonCodec{}
+func JSONCodec() Codec {
+	return &jsonCodec{}
+}
 
 type jsonCodec struct{}
 
diff --git a/encode/reader_test.go b/encode/reader_test.go
index f023937ec1b11be327e7e5aafaad1d1421f828cf..a83b1cc3489ac09612d88e7f8cc89dba9ef525ec 100644
--- a/encode/reader_test.go
+++ b/encode/reader_test.go
@@ -15,7 +15,7 @@ func TestReader(t *testing.T) {
 	}
 	t.Run("json", func(t *testing.T) {
 		t.Run("primitive", func(t *testing.T) {
-			reader := encode.NewReader[int](encode.JSON, strings.NewReader("5"))
+			reader := encode.NewReader[int](encode.JSONCodec(), strings.NewReader("5"))
 
 			next := reader.Next()
 			assert.True(t, next)
@@ -27,7 +27,7 @@ func TestReader(t *testing.T) {
 			assert.Equal(t, 5, current)
 		})
 		t.Run("struct", func(t *testing.T) {
-			reader := encode.NewReader[user](encode.JSON, strings.NewReader(`{"name":"Gopher"}`))
+			reader := encode.NewReader[user](encode.JSONCodec(), strings.NewReader(`{"name":"Gopher"}`))
 
 			next := reader.Next()
 			assert.True(t, next)
@@ -39,7 +39,7 @@ func TestReader(t *testing.T) {
 			assert.Equal(t, user{"Gopher"}, current)
 		})
 		t.Run("valid array", func(t *testing.T) {
-			reader := encode.NewReader[int](encode.JSON, strings.NewReader("[1, 2, 3]"))
+			reader := encode.NewReader[int](encode.JSONCodec(), strings.NewReader("[1, 2, 3]"))
 			var result []int
 			for reader.Next() {
 				result = append(result, reader.Current())
@@ -49,7 +49,7 @@ func TestReader(t *testing.T) {
 			assert.Equal(t, []int{1, 2, 3}, result)
 		})
 		t.Run("invalid array", func(t *testing.T) {
-			reader := encode.NewReader[int](encode.JSON, strings.NewReader(`[1, 2, "3", 4]`))
+			reader := encode.NewReader[int](encode.JSONCodec(), strings.NewReader(`[1, 2, "3", 4]`))
 			var result []int
 			for reader.Next() {
 				result = append(result, reader.Current())
@@ -61,7 +61,7 @@ func TestReader(t *testing.T) {
 	})
 	t.Run("yaml", func(t *testing.T) {
 		t.Run("struct", func(t *testing.T) {
-			reader := encode.NewReader[user](encode.YAML, strings.NewReader(`name: "Gopher"`))
+			reader := encode.NewReader[user](encode.YAMLCodec(), strings.NewReader(`name: "Gopher"`))
 			next := reader.Next()
 			assert.True(t, next)
 			err := reader.Err()
@@ -73,7 +73,7 @@ func TestReader(t *testing.T) {
 			input := `name: "Gopher"
 ---
 name: "John"`
-			reader := encode.NewReader[user](encode.YAML, strings.NewReader(input))
+			reader := encode.NewReader[user](encode.YAMLCodec(), strings.NewReader(input))
 			var result []user
 			for reader.Next() {
 				result = append(result, reader.Current())
diff --git a/encode/writer_test.go b/encode/writer_test.go
index 10ee250cac526b53e8a305e4f5b9d5ffa4e4e377..3364f8e4db9f121d60df5ac431bcaa7c88d3282c 100644
--- a/encode/writer_test.go
+++ b/encode/writer_test.go
@@ -16,7 +16,7 @@ func TestWriter(t *testing.T) {
 	t.Run("json", func(t *testing.T) {
 		t.Run("valid array", func(t *testing.T) {
 			buf := &bytes.Buffer{}
-			writer := encode.NewWriter[int](encode.JSON, buf)
+			writer := encode.NewWriter[int](encode.JSONCodec(), buf)
 
 			err := writer.Write(1, 2, 3)
 			require.NoError(t, err)
@@ -31,7 +31,7 @@ func TestWriter(t *testing.T) {
 		})
 		t.Run("struct", func(t *testing.T) {
 			buf := &bytes.Buffer{}
-			writer := encode.NewWriter[user](encode.JSON, buf)
+			writer := encode.NewWriter[user](encode.JSONCodec(), buf)
 
 			err := writer.Write(user{"Gopher"}, user{"John"})
 			require.NoError(t, err)
@@ -45,7 +45,7 @@ func TestWriter(t *testing.T) {
 	t.Run("yaml", func(t *testing.T) {
 		t.Run("valid array", func(t *testing.T) {
 			buf := &bytes.Buffer{}
-			writer := encode.NewWriter[user](encode.YAML, buf)
+			writer := encode.NewWriter[user](encode.YAMLCodec(), buf)
 
 			err := writer.Write(
 				user{Name: "Gopher"},
diff --git a/encode/yaml.go b/encode/yaml.go
index d85ec2ad18eb41e333b05aac8b23cc89fb50962e..54dd3cfdd83f48ab09cbde8268950d95766a9791 100644
--- a/encode/yaml.go
+++ b/encode/yaml.go
@@ -8,7 +8,9 @@ import (
 	"gopkg.in/yaml.v3"
 )
 
-var YAML = &yamlCodec{}
+func YAMLCodec() Codec {
+	return &yamlCodec{}
+}
 
 type yamlCodec struct{}