diff --git a/lib/src/command/lish.dart b/lib/src/command/lish.dart
index 9a45636..53525ec 100644
--- a/lib/src/command/lish.dart
+++ b/lib/src/command/lish.dart
@@ -151,7 +151,7 @@
   }
 
   /// Returns the value associated with [key] in [map]. Throws a user-friendly
-  /// error if [map] doens't contain [key].
+  /// error if [map] doesn't contain [key].
   dynamic _expectField(Map map, String key, http.Response response) {
     if (map.containsKey(key)) return map[key];
     invalidServerResponse(response);
diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart
index 5e71fba..14743da 100644
--- a/lib/src/entrypoint.dart
+++ b/lib/src/entrypoint.dart
@@ -542,7 +542,7 @@
   /// The [packagePathsMapping] is a mapping from package names to paths where
   /// the packages are located. (The library is located under
   /// `lib/` relative to the path given).
-  bool _isPackagePathsMappingUptodateWithLockfile(
+  bool _isPackagePathsMappingUpToDateWithLockfile(
           Map<String, String> packagePathsMapping) =>
       lockFile.packages.values.every((lockFileId) {
         // It's very unlikely that the lockfile is invalid here, but it's not
@@ -605,7 +605,7 @@
       packagePathsMapping[package] = packagePath;
     }
 
-    if (!_isPackagePathsMappingUptodateWithLockfile(packagePathsMapping)) {
+    if (!_isPackagePathsMappingUpToDateWithLockfile(packagePathsMapping)) {
       outOfDate();
     }
   }
@@ -661,7 +661,7 @@
       packagePathsMapping[pkg.name] =
           root.path('.dart_tool', p.fromUri(pkg.rootUri));
     }
-    if (!_isPackagePathsMappingUptodateWithLockfile(packagePathsMapping)) {
+    if (!_isPackagePathsMappingUpToDateWithLockfile(packagePathsMapping)) {
       outOfDate();
     }
 
diff --git a/lib/src/error_group.dart b/lib/src/error_group.dart
index 1702fc8..313e4c5 100644
--- a/lib/src/error_group.dart
+++ b/lib/src/error_group.dart
@@ -46,7 +46,7 @@
   /// we can check if it has listeners and signal errors on it.
   _ErrorGroupFuture _done;
 
-  /// Returns a [Future] that completes successully when all members of [this]
+  /// Returns a [Future] that completes successfully when all members of [this]
   /// are complete, or with an error if any member receives an error.
   ///
   /// This [Future] is effectively in the group in that an error on it won't be
diff --git a/lib/src/global_packages.dart b/lib/src/global_packages.dart
index 71053d6..d1074c0 100644
--- a/lib/src/global_packages.dart
+++ b/lib/src/global_packages.dart
@@ -758,7 +758,7 @@
       }
 
       // Write this as the system encoding since the system is going to execute
-      // it and it might contain non-ASCII caharacters in the pathnames.
+      // it and it might contain non-ASCII characters in the pathnames.
       writeTextFile(binStubPath, bash, encoding: const SystemEncoding());
 
       // Make it executable.
diff --git a/lib/src/io.dart b/lib/src/io.dart
index 4396b93..afe9102 100644
--- a/lib/src/io.dart
+++ b/lib/src/io.dart
@@ -259,7 +259,7 @@
   var whitelistFilter = createFileFilter(whitelist);
 
   // This is used in some performance-sensitive paths and can list many, many
-  // files. As such, it leans more havily towards optimization as opposed to
+  // files. As such, it leans more heavily towards optimization as opposed to
   // readability than most code in pub. In particular, it avoids using the path
   // package, since re-parsing a path is very expensive relative to string
   // operations.
diff --git a/lib/src/lock_file.dart b/lib/src/lock_file.dart
index 5da71a2..21d2c84 100644
--- a/lib/src/lock_file.dart
+++ b/lib/src/lock_file.dart
@@ -240,7 +240,7 @@
   /// This file is planned to eventually replace the `.packages` file.
   ///
   /// If [entrypoint] is passed, an accompanying [entrypointSdkConstraint]
-  /// should be given, these identifiy the current package in which this file is
+  /// should be given, these identify the current package in which this file is
   /// written. Passing `null` as [entrypointSdkConstraint] is correct if the
   /// current package has no SDK constraint.
   Future<String> packageConfigFile(
diff --git a/lib/src/log.dart b/lib/src/log.dart
index 79a73eb..4e592d9 100644
--- a/lib/src/log.dart
+++ b/lib/src/log.dart
@@ -60,8 +60,8 @@
 final _noColor = getSpecial('\u001b[39m');
 final _bold = getSpecial('\u001b[1m');
 
-/// All color codees.
-var _allColors = [_cyan, _green, _magenta, _red, _yellow, _blue, ''];
+/// All color codes.
+final _allColors = [_cyan, _green, _magenta, _red, _yellow, _blue, ''];
 
 /// An enum type for defining the different logging levels a given message can
 /// be associated with.
diff --git a/lib/src/package.dart b/lib/src/package.dart
index b52e9b6..1392dd2 100644
--- a/lib/src/package.dart
+++ b/lib/src/package.dart
@@ -220,7 +220,7 @@
     if (!dirExists(beneath)) return [];
 
     // This is used in some performance-sensitive paths and can list many, many
-    // files. As such, it leans more havily towards optimization as opposed to
+    // files. As such, it leans more heavily towards optimization as opposed to
     // readability than most code in pub. In particular, it avoids using the
     // path package, since re-parsing a path is very expensive relative to
     // string operations.
diff --git a/lib/src/pubspec.dart b/lib/src/pubspec.dart
index 6b78916..4786470 100644
--- a/lib/src/pubspec.dart
+++ b/lib/src/pubspec.dart
@@ -633,7 +633,7 @@
         if (sourceNames.length > 1) {
           _error('A dependency may only have one source.', specNode.span);
         } else if (sourceNames.isEmpty) {
-          // Default to a hosted dependency if no source is specifid.
+          // Default to a hosted dependency if no source is specified.
           sourceName = 'hosted';
           descriptionNode = nameNode;
         }
diff --git a/lib/src/rate_limited_scheduler.dart b/lib/src/rate_limited_scheduler.dart
index 99f9ce3..2c76412 100644
--- a/lib/src/rate_limited_scheduler.dart
+++ b/lib/src/rate_limited_scheduler.dart
@@ -95,7 +95,7 @@
   ///
   /// When [callback] returns, all jobs that where prescheduled by [callback]
   /// that have not started running will be removed from the work queue
-  /// (if they have been added seperately by [schedule] they will still be
+  /// (if they have been added separately by [schedule] they will still be
   /// executed).
   Future<R> withPrescheduling<R>(
     FutureOr<R> Function(void Function(J) preschedule) callback,
diff --git a/lib/src/sdk/dart.dart b/lib/src/sdk/dart.dart
index 2837ca4..328995d 100644
--- a/lib/src/sdk/dart.dart
+++ b/lib/src/sdk/dart.dart
@@ -31,7 +31,7 @@
   static final String _rootDirectory = () {
     if (runningFromDartRepo) return p.join(dartRepoRoot, 'sdk');
 
-    // The Dart exectuable is in "/path/to/sdk/bin/dart", so two levels up is
+    // The Dart executable is in "/path/to/sdk/bin/dart", so two levels up is
     // "/path/to/sdk".
     var aboveExecutable = p.dirname(p.dirname(Platform.resolvedExecutable));
     assert(fileExists(p.join(aboveExecutable, 'version')));
diff --git a/lib/src/solver/incompatibility.dart b/lib/src/solver/incompatibility.dart
index c5ec0e2..26e72f3 100644
--- a/lib/src/solver/incompatibility.dart
+++ b/lib/src/solver/incompatibility.dart
@@ -12,7 +12,7 @@
 ///
 /// See https://github.com/dart-lang/pub/tree/master/doc/solver.md#incompatibility.
 class Incompatibility {
-  /// The mutually-incompatibile terms.
+  /// The mutually-incompatible terms.
   final List<Term> terms;
 
   /// The reason [terms] are incompatible.
diff --git a/lib/src/solver/incompatibility_cause.dart b/lib/src/solver/incompatibility_cause.dart
index 86bede5..4202e82 100644
--- a/lib/src/solver/incompatibility_cause.dart
+++ b/lib/src/solver/incompatibility_cause.dart
@@ -33,7 +33,7 @@
 /// conflict resolution.
 class ConflictCause implements IncompatibilityCause {
   /// The incompatibility that was originally found to be in conflict, from
-  /// which the target incompatiblity was derived.
+  /// which the target incompatibility was derived.
   final Incompatibility conflict;
 
   /// The incompatibility that caused the most recent satisfier for [conflict],
diff --git a/lib/src/solver/version_solver.dart b/lib/src/solver/version_solver.dart
index 78c80a1..92ff7d2 100644
--- a/lib/src/solver/version_solver.dart
+++ b/lib/src/solver/version_solver.dart
@@ -70,7 +70,7 @@
   final Set<String> _overriddenPackages;
 
   /// The set of packages for which the lockfile should be ignored and only the
-  /// most recent versions shuld be used.
+  /// most recent versions should be used.
   final Set<String> _useLatest;
 
   /// The set of packages for which we've added an incompatibility that forces
@@ -181,7 +181,7 @@
       }
     }
 
-    // If *all* terms in [incompatibility] are satsified by [_solution], then
+    // If *all* terms in [incompatibility] are satisfied by [_solution], then
     // [incompatibility] is satisfied and we have a conflict.
     if (unsatisfied == null) return #conflict;
 
diff --git a/lib/src/source.dart b/lib/src/source.dart
index fed9fe4..ce35fb0 100644
--- a/lib/src/source.dart
+++ b/lib/src/source.dart
@@ -52,7 +52,7 @@
 abstract class Source {
   /// The name of the source.
   ///
-  /// Should be lower-case, suitable for use in a filename, and unique accross
+  /// Should be lower-case, suitable for use in a filename, and unique across
   /// all sources.
   String get name;
 
diff --git a/lib/src/source/path.dart b/lib/src/source/path.dart
index 7ee64bc..45b827a 100644
--- a/lib/src/source/path.dart
+++ b/lib/src/source/path.dart
@@ -128,7 +128,7 @@
   dynamic serializeDescription(String containingPath, description) {
     if (description['relative']) {
       return {
-        'path': relativePathWithPosixSeperators(
+        'path': relativePathWithPosixSeparators(
             p.relative(description['path'], from: containingPath)),
         'relative': true
       };
@@ -138,7 +138,7 @@
 
   /// On both Windows and linux we prefer `/` in the pubspec.lock for relative
   /// paths.
-  static String relativePathWithPosixSeperators(String path) {
+  static String relativePathWithPosixSeparators(String path) {
     assert(p.isRelative(path));
     return p.posix.joinAll(p.split(path));
   }
diff --git a/test/list_package_dirs/ignores_updated_pubspec_test.dart b/test/list_package_dirs/ignores_updated_pubspec_test.dart
index fb4f5fd..a1db04e 100644
--- a/test/list_package_dirs/ignores_updated_pubspec_test.dart
+++ b/test/list_package_dirs/ignores_updated_pubspec_test.dart
@@ -30,7 +30,7 @@
     // Note: Using canonicalize here because pub gets the path to the
     // entrypoint package from the working directory, which has had symlinks
     // resolve. On Mac, "/tmp" is actually a symlink to "/private/tmp", so we
-    // need to accomodate that.
+    // need to accommodate that.
 
     await runPub(args: [
       'list-package-dirs',
diff --git a/test/list_package_dirs/includes_dev_dependencies_test.dart b/test/list_package_dirs/includes_dev_dependencies_test.dart
index 65db401..ef06dff 100644
--- a/test/list_package_dirs/includes_dev_dependencies_test.dart
+++ b/test/list_package_dirs/includes_dev_dependencies_test.dart
@@ -29,7 +29,7 @@
     // Note: Using canonicalize here because pub gets the path to the
     // entrypoint package from the working directory, which has had symlinks
     // resolve. On Mac, "/tmp" is actually a symlink to "/private/tmp", so we
-    // need to accomodate that.
+    // need to accommodate that.
     await runPub(args: [
       'list-package-dirs',
       '--format=json'
diff --git a/test/list_package_dirs/lists_dependency_directories_test.dart b/test/list_package_dirs/lists_dependency_directories_test.dart
index 91c9de0..4baaa56 100644
--- a/test/list_package_dirs/lists_dependency_directories_test.dart
+++ b/test/list_package_dirs/lists_dependency_directories_test.dart
@@ -30,7 +30,7 @@
         // Note: Using canonicalize here because pub gets the path to the
         // entrypoint package from the working directory, which has had symlinks
         // resolve. On Mac, "/tmp" is actually a symlink to "/private/tmp", so we
-        // need to accomodate that.
+        // need to accommodate that.
         await runPub(args: [
       'list-package-dirs',
       '--format=json'
