diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 759eea2..60f763c 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -18,7 +18,7 @@
     strategy:
       fail-fast: false
       matrix:
-        go: ['1.17', '1.18', 'tip']
+        go: ['1.18', '1.19', 'tip']
         # Supported macOS versions can be found in
         # https://github.com/actions/virtual-environments#available-environments.
         os: ['macos-10.15', 'macos-11']
@@ -106,7 +106,7 @@
     strategy:
       fail-fast: false
       matrix:
-        go: ['1.17', '1.18', 'tip']
+        go: ['1.18', '1.19', 'tip']
         os: ['ubuntu-20.04', 'ubuntu-18.04']
     steps:
       - name: Update Go version using setup-go
@@ -166,7 +166,7 @@
     strategy:
       fail-fast: false
       matrix:
-        go: ['1.17', '1.18']
+        go: ['1.18', '1.19']
     steps:
       - name: Update Go version using setup-go
         uses: actions/setup-go@v2
diff --git a/fuzz/fuzz_test.go b/fuzz/fuzz_test.go
index ab1a091..cbc4cc6 100644
--- a/fuzz/fuzz_test.go
+++ b/fuzz/fuzz_test.go
@@ -15,7 +15,7 @@
 package pprof
 
 import (
-	"io/ioutil"
+	"os"
 	"runtime"
 	"testing"
 
@@ -28,13 +28,13 @@
 	}
 
 	const path = "testdata/"
-	files, err := ioutil.ReadDir(path)
+	files, err := os.ReadDir(path)
 	if err != nil {
 		t.Errorf("Problem reading directory %s : %v", path, err)
 	}
 	for _, f := range files {
 		file := path + f.Name()
-		inbytes, err := ioutil.ReadFile(file)
+		inbytes, err := os.ReadFile(file)
 		if err != nil {
 			t.Errorf("Problem reading file: %s : %v", file, err)
 			continue
diff --git a/go.mod b/go.mod
index f3f4da9..e1e10df 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
 module github.com/google/pprof
 
-go 1.17
+go 1.18
 
 require (
 	github.com/chzyer/readline v1.5.0
diff --git a/internal/driver/driver_test.go b/internal/driver/driver_test.go
index 2564eb0..a966f89 100644
--- a/internal/driver/driver_test.go
+++ b/internal/driver/driver_test.go
@@ -18,7 +18,6 @@
 	"bytes"
 	"flag"
 	"fmt"
-	"io/ioutil"
 	"net"
 	_ "net/http/pprof"
 	"os"
@@ -117,7 +116,7 @@
 			flags := strings.Split(tc.flags, ",")
 
 			// Encode profile into a protobuf and decode it again.
-			protoTempFile, err := ioutil.TempFile("", "profile_proto")
+			protoTempFile, err := os.CreateTemp("", "profile_proto")
 			if err != nil {
 				t.Errorf("cannot create tempfile: %v", err)
 			}
@@ -145,7 +144,7 @@
 			setCurrentConfig(baseConfig)
 
 			// Read the profile from the encoded protobuf
-			outputTempFile, err := ioutil.TempFile("", "profile_output")
+			outputTempFile, err := os.CreateTemp("", "profile_output")
 			if err != nil {
 				t.Errorf("cannot create tempfile: %v", err)
 			}
@@ -180,14 +179,14 @@
 			if err := PProf(o2); err != nil {
 				t.Errorf("%s: %v", tc.source, err)
 			}
-			b, err := ioutil.ReadFile(outputTempFile.Name())
+			b, err := os.ReadFile(outputTempFile.Name())
 			if err != nil {
 				t.Errorf("Failed to read profile %s: %v", outputTempFile.Name(), err)
 			}
 
 			// Read data file with expected solution
 			solution = "testdata/" + solution
-			sbuf, err := ioutil.ReadFile(solution)
+			sbuf, err := os.ReadFile(solution)
 			if err != nil {
 				t.Fatalf("reading solution file %s: %v", solution, err)
 			}
@@ -215,7 +214,7 @@
 				}
 				t.Errorf("%s\n%s\n", solution, d)
 				if *updateFlag {
-					err := ioutil.WriteFile(solution, b, 0644)
+					err := os.WriteFile(solution, b, 0644)
 					if err != nil {
 						t.Errorf("failed to update the solution file %q: %v", solution, err)
 					}
diff --git a/internal/driver/fetch.go b/internal/driver/fetch.go
index 0b36165..26fee83 100644
--- a/internal/driver/fetch.go
+++ b/internal/driver/fetch.go
@@ -18,7 +18,6 @@
 	"bytes"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"net/http"
 	"net/url"
 	"os"
@@ -507,7 +506,7 @@
 func statusCodeError(resp *http.Response) error {
 	if resp.Header.Get("X-Go-Pprof") != "" && strings.Contains(resp.Header.Get("Content-Type"), "text/plain") {
 		// error is from pprof endpoint
-		if body, err := ioutil.ReadAll(resp.Body); err == nil {
+		if body, err := io.ReadAll(resp.Body); err == nil {
 			return fmt.Errorf("server response: %s - %s", resp.Status, body)
 		}
 	}
diff --git a/internal/driver/fetch_test.go b/internal/driver/fetch_test.go
index bdd1732..289dc24 100644
--- a/internal/driver/fetch_test.go
+++ b/internal/driver/fetch_test.go
@@ -22,7 +22,6 @@
 	"crypto/x509"
 	"encoding/pem"
 	"fmt"
-	"io/ioutil"
 	"math/big"
 	"net"
 	"net/http"
@@ -52,7 +51,7 @@
 	saveHome := os.Getenv(homeEnv())
 	savePath := os.Getenv("PPROF_BINARY_PATH")
 
-	tempdir, err := ioutil.TempDir("", "home")
+	tempdir, err := os.MkdirTemp("", "home")
 	if err != nil {
 		t.Fatal("creating temp dir: ", err)
 	}
@@ -530,7 +529,7 @@
 		t.Skip("test assumes tcp available")
 	}
 	saveHome := os.Getenv(homeEnv())
-	tempdir, err := ioutil.TempDir("", "home")
+	tempdir, err := os.MkdirTemp("", "home")
 	if err != nil {
 		t.Fatal("creating temp dir: ", err)
 	}
@@ -564,7 +563,7 @@
 	}()
 	defer l.Close()
 
-	outputTempFile, err := ioutil.TempFile("", "profile_output")
+	outputTempFile, err := os.CreateTemp("", "profile_output")
 	if err != nil {
 		t.Fatalf("Failed to create tempfile: %v", err)
 	}
@@ -603,7 +602,7 @@
 		t.Skip("test assumes tcp available")
 	}
 	saveHome := os.Getenv(homeEnv())
-	tempdir, err := ioutil.TempDir("", "home")
+	tempdir, err := os.MkdirTemp("", "home")
 	if err != nil {
 		t.Fatal("creating temp dir: ", err)
 	}
@@ -645,7 +644,7 @@
 	}()
 	defer l.Close()
 
-	outputTempFile, err := ioutil.TempFile("", "profile_output")
+	outputTempFile, err := os.CreateTemp("", "profile_output")
 	if err != nil {
 		t.Fatalf("Failed to create tempfile: %v", err)
 	}
@@ -665,7 +664,7 @@
 		Symbolize: "remote",
 	}
 
-	certTempFile, err := ioutil.TempFile("", "cert_output")
+	certTempFile, err := os.CreateTemp("", "cert_output")
 	if err != nil {
 		t.Errorf("cannot create cert tempfile: %v", err)
 	}
@@ -673,7 +672,7 @@
 	defer certTempFile.Close()
 	certTempFile.Write(certBytes)
 
-	keyTempFile, err := ioutil.TempFile("", "key_output")
+	keyTempFile, err := os.CreateTemp("", "key_output")
 	if err != nil {
 		t.Errorf("cannot create key tempfile: %v", err)
 	}
diff --git a/internal/driver/settings.go b/internal/driver/settings.go
index 1e9154c..b784618 100644
--- a/internal/driver/settings.go
+++ b/internal/driver/settings.go
@@ -3,7 +3,6 @@
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"net/url"
 	"os"
 	"path/filepath"
@@ -33,7 +32,7 @@
 
 // readSettings reads settings from fname.
 func readSettings(fname string) (*settings, error) {
-	data, err := ioutil.ReadFile(fname)
+	data, err := os.ReadFile(fname)
 	if err != nil {
 		if os.IsNotExist(err) {
 			return &settings{}, nil
@@ -64,7 +63,7 @@
 		return fmt.Errorf("failed to create settings directory: %w", err)
 	}
 
-	if err := ioutil.WriteFile(fname, data, 0644); err != nil {
+	if err := os.WriteFile(fname, data, 0644); err != nil {
 		return fmt.Errorf("failed to write settings: %w", err)
 	}
 	return nil
diff --git a/internal/driver/settings_test.go b/internal/driver/settings_test.go
index e0ea14c..7d3aad9 100644
--- a/internal/driver/settings_test.go
+++ b/internal/driver/settings_test.go
@@ -1,7 +1,6 @@
 package driver
 
 import (
-	"io/ioutil"
 	"net/url"
 	"os"
 	"path/filepath"
@@ -13,7 +12,7 @@
 // and the name of the settings file. The caller must delete the directory when
 // done.
 func settingsDirAndFile(t *testing.T) (string, string) {
-	tmpDir, err := ioutil.TempDir("", "pprof_settings_test")
+	tmpDir, err := os.MkdirTemp("", "pprof_settings_test")
 	if err != nil {
 		t.Fatalf("error creating temporary directory: %v", err)
 	}
diff --git a/internal/driver/webui_test.go b/internal/driver/webui_test.go
index 2f9b89b..474bdad 100644
--- a/internal/driver/webui_test.go
+++ b/internal/driver/webui_test.go
@@ -16,7 +16,7 @@
 
 import (
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net"
 	"net/http"
 	"net/http/httptest"
@@ -116,7 +116,7 @@
 			t.Error("could not fetch", c.path, err)
 			continue
 		}
-		data, err := ioutil.ReadAll(res.Body)
+		data, err := io.ReadAll(res.Body)
 		if err != nil {
 			t.Error("could not read response", c.path, err)
 			continue
@@ -148,7 +148,7 @@
 					t.Error("could not fetch", c.path, err)
 					return
 				}
-				if _, err = ioutil.ReadAll(res.Body); err != nil {
+				if _, err = io.ReadAll(res.Body); err != nil {
 					t.Error("could not read response", c.path, err)
 				}
 			}()
diff --git a/internal/graph/dotgraph_test.go b/internal/graph/dotgraph_test.go
index 0a94495..b375bb6 100644
--- a/internal/graph/dotgraph_test.go
+++ b/internal/graph/dotgraph_test.go
@@ -18,7 +18,7 @@
 	"bytes"
 	"flag"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"reflect"
 	"strconv"
@@ -214,7 +214,7 @@
 
 func compareGraphs(t *testing.T, got []byte, wantFile string) {
 	wantFile = filepath.Join("testdata", wantFile)
-	want, err := ioutil.ReadFile(wantFile)
+	want, err := os.ReadFile(wantFile)
 	if err != nil {
 		t.Fatalf("error reading test file %s: %v", wantFile, err)
 	}
@@ -226,7 +226,7 @@
 		}
 		t.Errorf("Compose incorrectly wrote %s", string(d))
 		if *updateFlag {
-			err := ioutil.WriteFile(wantFile, got, 0644)
+			err := os.WriteFile(wantFile, got, 0644)
 			if err != nil {
 				t.Errorf("failed to update the golden file %q: %v", wantFile, err)
 			}
diff --git a/internal/proftest/proftest.go b/internal/proftest/proftest.go
index 160eb66..c4f8910 100644
--- a/internal/proftest/proftest.go
+++ b/internal/proftest/proftest.go
@@ -20,7 +20,6 @@
 	"encoding/json"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"os"
 	"os/exec"
 	"regexp"
@@ -31,14 +30,14 @@
 // differences. It is meant for testing purposes to display the
 // differences between expected and actual output.
 func Diff(b1, b2 []byte) (data []byte, err error) {
-	f1, err := ioutil.TempFile("", "proto_test")
+	f1, err := os.CreateTemp("", "proto_test")
 	if err != nil {
 		return nil, err
 	}
 	defer os.Remove(f1.Name())
 	defer f1.Close()
 
-	f2, err := ioutil.TempFile("", "proto_test")
+	f2, err := os.CreateTemp("", "proto_test")
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/report/report_test.go b/internal/report/report_test.go
index 9b394fb..b3e70b2 100644
--- a/internal/report/report_test.go
+++ b/internal/report/report_test.go
@@ -16,7 +16,7 @@
 
 import (
 	"bytes"
-	"io/ioutil"
+	"os"
 	"regexp"
 	"runtime"
 	"strings"
@@ -76,7 +76,7 @@
 			t.Fatalf("%s: %v", tc.want, err)
 		}
 
-		gold, err := ioutil.ReadFile(tc.want)
+		gold, err := os.ReadFile(tc.want)
 		if err != nil {
 			t.Fatalf("%s: %v", tc.want, err)
 		}
diff --git a/internal/report/source_test.go b/internal/report/source_test.go
index 2a6b9cf..2febfd1 100644
--- a/internal/report/source_test.go
+++ b/internal/report/source_test.go
@@ -17,7 +17,6 @@
 import (
 	"bytes"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"regexp"
@@ -123,7 +122,7 @@
 }
 
 func TestOpenSourceFile(t *testing.T) {
-	tempdir, err := ioutil.TempDir("", "")
+	tempdir, err := os.MkdirTemp("", "")
 	if err != nil {
 		t.Fatalf("failed to create temp dir: %v", err)
 	}
@@ -195,7 +194,7 @@
 				if err := os.MkdirAll(dir, 0755); err != nil {
 					t.Fatalf("failed to create dir %q: %v", dir, err)
 				}
-				if err := ioutil.WriteFile(path, nil, 0644); err != nil {
+				if err := os.WriteFile(path, nil, 0644); err != nil {
 					t.Fatalf("failed to create file %q: %v", path, err)
 				}
 			}
diff --git a/internal/symbolizer/symbolizer.go b/internal/symbolizer/symbolizer.go
index d243b80..87f202b 100644
--- a/internal/symbolizer/symbolizer.go
+++ b/internal/symbolizer/symbolizer.go
@@ -19,7 +19,7 @@
 
 import (
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 	"net/url"
 	"path/filepath"
@@ -110,13 +110,13 @@
 	if resp.StatusCode != http.StatusOK {
 		return nil, fmt.Errorf("http post %s: %v", source, statusCodeError(resp))
 	}
-	return ioutil.ReadAll(resp.Body)
+	return io.ReadAll(resp.Body)
 }
 
 func statusCodeError(resp *http.Response) error {
 	if resp.Header.Get("X-Go-Pprof") != "" && strings.Contains(resp.Header.Get("Content-Type"), "text/plain") {
 		// error is from pprof endpoint
-		if body, err := ioutil.ReadAll(resp.Body); err == nil {
+		if body, err := io.ReadAll(resp.Body); err == nil {
 			return fmt.Errorf("server response: %s - %s", resp.Status, body)
 		}
 	}
diff --git a/internal/transport/transport.go b/internal/transport/transport.go
index b5fb1dd..6c3bd0d 100644
--- a/internal/transport/transport.go
+++ b/internal/transport/transport.go
@@ -20,8 +20,8 @@
 	"crypto/tls"
 	"crypto/x509"
 	"fmt"
-	"io/ioutil"
 	"net/http"
+	"os"
 	"sync"
 
 	"github.com/google/pprof/internal/plugin"
@@ -86,7 +86,7 @@
 
 	if ca != "" {
 		caCertPool := x509.NewCertPool()
-		caCert, err := ioutil.ReadFile(ca)
+		caCert, err := os.ReadFile(ca)
 		if err != nil {
 			return fmt.Errorf("could not load CA specified by -tls_ca: %v", err)
 		}
diff --git a/profile/profile.go b/profile/profile.go
index 5a3807f..4ec00fe 100644
--- a/profile/profile.go
+++ b/profile/profile.go
@@ -21,7 +21,6 @@
 	"compress/gzip"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"math"
 	"path/filepath"
 	"regexp"
@@ -153,7 +152,7 @@
 // may be a gzip-compressed encoded protobuf or one of many legacy
 // profile formats which may be unsupported in the future.
 func Parse(r io.Reader) (*Profile, error) {
-	data, err := ioutil.ReadAll(r)
+	data, err := io.ReadAll(r)
 	if err != nil {
 		return nil, err
 	}
@@ -168,7 +167,7 @@
 	if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b {
 		gz, err := gzip.NewReader(bytes.NewBuffer(data))
 		if err == nil {
-			data, err = ioutil.ReadAll(gz)
+			data, err = io.ReadAll(gz)
 		}
 		if err != nil {
 			return nil, fmt.Errorf("decompressing profile: %v", err)
diff --git a/profile/profile_test.go b/profile/profile_test.go
index ee8da7e..7767004 100644
--- a/profile/profile_test.go
+++ b/profile/profile_test.go
@@ -18,7 +18,7 @@
 	"bytes"
 	"flag"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"reflect"
 	"strings"
@@ -49,7 +49,7 @@
 		"java.heap",
 		"java.contention",
 	} {
-		inbytes, err := ioutil.ReadFile(filepath.Join(path, source))
+		inbytes, err := os.ReadFile(filepath.Join(path, source))
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -61,12 +61,12 @@
 		js := p.String()
 		goldFilename := path + source + ".string"
 		if *update {
-			err := ioutil.WriteFile(goldFilename, []byte(js), 0644)
+			err := os.WriteFile(goldFilename, []byte(js), 0644)
 			if err != nil {
 				t.Errorf("failed to update the golden file file %q: %v", goldFilename, err)
 			}
 		}
-		gold, err := ioutil.ReadFile(goldFilename)
+		gold, err := os.ReadFile(goldFilename)
 		if err != nil {
 			t.Fatalf("%s: %v", source, err)
 		}
@@ -134,7 +134,7 @@
 func TestCheckValid(t *testing.T) {
 	const path = "testdata/java.cpu"
 
-	inbytes, err := ioutil.ReadFile(path)
+	inbytes, err := os.ReadFile(path)
 	if err != nil {
 		t.Fatalf("failed to read profile file %q: %v", path, err)
 	}
@@ -196,7 +196,7 @@
 // temp filename. This is useful to recover a profile when the test
 // fails.
 func leaveTempfile(b []byte) string {
-	f1, err := ioutil.TempFile("", "profile_test")
+	f1, err := os.CreateTemp("", "profile_test")
 	if err != nil {
 		panic(err)
 	}
