diff --git a/internal/event/core/event.go b/internal/event/core/event.go
index e37b494..a6cf0e6 100644
--- a/internal/event/core/event.go
+++ b/internal/event/core/event.go
@@ -12,7 +12,7 @@
 	"golang.org/x/tools/internal/event/label"
 )
 
-// Event holds the information about an event of note that ocurred.
+// Event holds the information about an event of note that occurred.
 type Event struct {
 	at time.Time
 
diff --git a/internal/lsp/cache/snapshot.go b/internal/lsp/cache/snapshot.go
index 0faaacd..e611d62 100644
--- a/internal/lsp/cache/snapshot.go
+++ b/internal/lsp/cache/snapshot.go
@@ -191,7 +191,7 @@
 	s.view.optionsMu.Unlock()
 
 	// Forcibly disable GOPACKAGESDRIVER. It's incompatible with the
-	// packagesinternal APIs we use, and we really only support the go commmand
+	// packagesinternal APIs we use, and we really only support the go command
 	// anyway.
 	env := append(append([]string{}, inv.Env...), "GOPACKAGESDRIVER=off")
 	cfg := &packages.Config{
@@ -1283,7 +1283,7 @@
 		}
 		result.ids[k] = ids
 	}
-	// Copy the set of initally loaded packages.
+	// Copy the set of initially loaded packages.
 	for id, pkgPath := range s.workspacePackages {
 		// Packages with the id "command-line-arguments" are generated by the
 		// go command when the user is outside of GOPATH and outside of a
diff --git a/internal/lsp/diff/difftest/difftest.go b/internal/lsp/diff/difftest/difftest.go
index 513a925..c8a97fa 100644
--- a/internal/lsp/diff/difftest/difftest.go
+++ b/internal/lsp/diff/difftest/difftest.go
@@ -178,7 +178,7 @@
 		LineEdits: []diff.TextEdit{{Span: newSpan(2, 4), NewText: "C\n\n"}},
 	},
 	{
-		Name: "mulitple_replace",
+		Name: "multiple_replace",
 		In:   "A\nB\nC\nD\nE\nF\nG\n",
 		Out:  "A\nH\nI\nJ\nE\nF\nK\n",
 		Unified: UnifiedPrefix + `
diff --git a/internal/lsp/general.go b/internal/lsp/general.go
index 558767b..b0099e3 100644
--- a/internal/lsp/general.go
+++ b/internal/lsp/general.go
@@ -141,7 +141,7 @@
 	s.stateMu.Lock()
 	if s.state >= serverInitialized {
 		defer s.stateMu.Unlock()
-		return errors.Errorf("%w: initalized called while server in %v state", jsonrpc2.ErrInvalidRequest, s.state)
+		return errors.Errorf("%w: initialized called while server in %v state", jsonrpc2.ErrInvalidRequest, s.state)
 	}
 	s.state = serverInitialized
 	s.stateMu.Unlock()
diff --git a/internal/lsp/lsprpc/lsprpc.go b/internal/lsp/lsprpc/lsprpc.go
index dc3e29c..623533f 100644
--- a/internal/lsp/lsprpc/lsprpc.go
+++ b/internal/lsp/lsprpc/lsprpc.go
@@ -302,7 +302,7 @@
 		// the user.
 		event.Error(ctx, "unable to check daemon socket owner, failing open", err)
 	} else if !ok {
-		// We succesfully checked that the socket is not owned by us, we fail
+		// We successfully checked that the socket is not owned by us, we fail
 		// closed.
 		return nil, fmt.Errorf("socket %q is owned by a different user", address)
 	}
diff --git a/internal/lsp/protocol/typescript/code.ts b/internal/lsp/protocol/typescript/code.ts
index 5eb081a..7509532 100644
--- a/internal/lsp/protocol/typescript/code.ts
+++ b/internal/lsp/protocol/typescript/code.ts
@@ -769,7 +769,7 @@
 // some of the intersection types A&B are ok as struct{A;B;} and some
 // could be expanded, and ClientCapabilites has to be expanded,
 // at least for workspace. It's possible to check algorithmically,
-// but much simpler just to check explicity.
+// but much simpler just to check explicitly.
 function goIntersectionType(n: ts.IntersectionTypeNode, nm: string): string {
   if (nm == 'ClientCapabilities') return expandIntersection(n);
   if (nm == 'ServerCapabilities') return expandIntersection(n);
diff --git a/internal/lsp/source/completion/completion.go b/internal/lsp/source/completion/completion.go
index b87154a..19fcb5f 100644
--- a/internal/lsp/source/completion/completion.go
+++ b/internal/lsp/source/completion/completion.go
@@ -699,7 +699,7 @@
 		}
 
 		// Then sort by label so order stays consistent. This also has the
-		// effect of prefering shorter candidates.
+		// effect of preferring shorter candidates.
 		return c.items[i].Label < c.items[j].Label
 	})
 }
@@ -1003,8 +1003,8 @@
 	c.setMatcherFromPrefix(c.surrounding.Prefix())
 }
 
-// isValidIdentifierChar returns true if a byte is a valid go identifier character
-// i.e unicode letter or digit or undescore
+// isValidIdentifierChar returns true if a byte is a valid go identifier
+// character, i.e. unicode letter or digit or underscore.
 func isValidIdentifierChar(char byte) bool {
 	charRune := rune(char)
 	return unicode.In(charRune, unicode.Letter, unicode.Digit) || char == '_'
diff --git a/internal/lsp/source/completion/printf.go b/internal/lsp/source/completion/printf.go
index c90a365..ce74af5 100644
--- a/internal/lsp/source/completion/printf.go
+++ b/internal/lsp/source/completion/printf.go
@@ -71,7 +71,7 @@
 				if kind == kindAny {
 					kind = v.kind
 				} else if v.kind != kindAny {
-					// If mulitple verbs refer to the same operand, take the
+					// If multiple verbs refer to the same operand, take the
 					// intersection of their kinds.
 					kind &= v.kind
 				}
diff --git a/internal/lsp/source/extract.go b/internal/lsp/source/extract.go
index 4aee845..e163554 100644
--- a/internal/lsp/source/extract.go
+++ b/internal/lsp/source/extract.go
@@ -175,7 +175,7 @@
 // It also replaces the selected block of code with a call to the extracted
 // function. First, we manually adjust the selection range. We remove trailing
 // and leading whitespace characters to ensure the range is precisely bounded
-// by AST nodes. Next, we determine the variables that will be the paramters
+// by AST nodes. Next, we determine the variables that will be the parameters
 // and return values of the extracted function. Lastly, we construct the call
 // of the function and insert this call as well as the extracted function into
 // their proper locations.
@@ -197,7 +197,7 @@
 
 	// TODO: Support non-nested return statements.
 	// A return statement is non-nested if its parent node is equal to the parent node
-	// of the first node in the selection. These cases must be handled seperately because
+	// of the first node in the selection. These cases must be handled separately because
 	// non-nested return statements are guaranteed to execute. Our control flow does not
 	// properly consider these situations yet.
 	var retStmts []*ast.ReturnStmt
@@ -248,7 +248,7 @@
 	// Some variables on the left-hand side of our assignment statement may be free. If our
 	// selection begins in the same scope in which the free variable is defined, we can
 	// redefine it in our assignment statement. See the following example, where 'b' and
-	// 'err' (both free variables) can be redefined in the second funcCall() while maintaing
+	// 'err' (both free variables) can be redefined in the second funcCall() while maintaining
 	// correctness.
 	//
 	//
@@ -404,7 +404,7 @@
 			pkg, extractedBlock); err != nil {
 			return nil, err
 		}
-		// Collect the additional return values and types needed to accomodate return
+		// Collect the additional return values and types needed to accommodate return
 		// statements in the selection. Update the type signature of the extracted
 		// function and construct the if statement that will be inserted in the enclosing
 		// function.
@@ -854,8 +854,8 @@
 	}, true, nil
 }
 
-// objUsed checks if the object is used within the range. It returns the first occurence of
-// the object in the range, if it exists.
+// objUsed checks if the object is used within the range. It returns the first
+// occurrence of the object in the range, if it exists.
 func objUsed(info *types.Info, rng span.Range, obj types.Object) (bool, *ast.Ident) {
 	var firstUse *ast.Ident
 	for id, objUse := range info.Uses {
diff --git a/internal/lsp/source/highlight.go b/internal/lsp/source/highlight.go
index d18a971..3af3f49 100644
--- a/internal/lsp/source/highlight.go
+++ b/internal/lsp/source/highlight.go
@@ -333,13 +333,13 @@
 		return
 	}
 
-	// Find labeled branch statements in any loop
+	// Find labeled branch statements in any loop.
 	ast.Inspect(loop, func(n ast.Node) bool {
 		b, ok := n.(*ast.BranchStmt)
 		if !ok {
 			return true
 		}
-		// Statment with labels that matches the loop.
+		// statement with labels that matches the loop
 		if b.Label != nil && labelDecl(b.Label) == loopLabel {
 			result[posRange{start: b.Pos(), end: b.End()}] = struct{}{}
 		}
diff --git a/internal/lsp/source/identifier_test.go b/internal/lsp/source/identifier_test.go
index f07e401..5e191e4 100644
--- a/internal/lsp/source/identifier_test.go
+++ b/internal/lsp/source/identifier_test.go
@@ -16,7 +16,7 @@
 func TestSearchForEnclosing(t *testing.T) {
 	tests := []struct {
 		desc string
-		// For convenience, consider the first occurence of the identifier "X" in
+		// For convenience, consider the first occurrence of the identifier "X" in
 		// src.
 		src string
 		// By convention, "" means no type found.
diff --git a/internal/lsp/testdata/keywords/accidental_keywords.go.in b/internal/lsp/testdata/keywords/accidental_keywords.go.in
index 711841c..3833081 100644
--- a/internal/lsp/testdata/keywords/accidental_keywords.go.in
+++ b/internal/lsp/testdata/keywords/accidental_keywords.go.in
@@ -4,7 +4,7 @@
 var apple = "apple"
 
 func _() {
-	foo.bar() // insert some extra statements to excercise our AST surgery
+	foo.bar() // insert some extra statements to exercise our AST surgery
 	variance := 123 //@item(kwVariance, "variance", "int", "var")
 	foo.bar()
 	println(var) //@complete(")", kwVariance)
diff --git a/internal/lsp/tests/tests.go b/internal/lsp/tests/tests.go
index 2456c2f..05bd5ee 100644
--- a/internal/lsp/tests/tests.go
+++ b/internal/lsp/tests/tests.go
@@ -784,9 +784,9 @@
 	t.Run("Link", func(t *testing.T) {
 		t.Helper()
 		for uri, wantLinks := range data.Links {
-			// If we are testing GOPATH, then we do not want links with
-			// the versions attached (pkg.go.dev/repoa/moda@v1.1.0/pkg),
-			// unless the file is a go.mod, then we can skip it alltogether.
+			// If we are testing GOPATH, then we do not want links with the versions
+			// attached (pkg.go.dev/repoa/moda@v1.1.0/pkg), unless the file is a
+			// go.mod, then we can skip it altogether.
 			if data.Exported.Exporter == packagestest.GOPATH {
 				if strings.HasSuffix(uri.Filename(), ".mod") {
 					continue
