diff --git a/internal/discovery.go b/internal/discovery.go
index 534d131..bd41a8f 100644
--- a/internal/discovery.go
+++ b/internal/discovery.go
@@ -20,9 +20,6 @@
 	// proxy client.
 	LatestVersion = "latest"
 
-	// MasterVersion signifies the version at master.
-	MasterVersion = "master"
-
 	// UnknownModulePath signifies that the module path for a given package
 	// path is ambiguous or not known. This is because requests to the
 	// frontend can come in the form of <import-path>[@<version>], and it is
@@ -30,6 +27,12 @@
 	UnknownModulePath = "unknownModulePath"
 )
 
+// DefaultBranches are default branches that are supported by pkgsite.
+var DefaultBranches = map[string]bool{
+	"main":   true,
+	"master": true,
+}
+
 // ModuleInfo holds metadata associated with a module.
 type ModuleInfo struct {
 	ModulePath        string
diff --git a/internal/frontend/fetch_test.go b/internal/frontend/fetch_test.go
index 7c10d87..7f92034 100644
--- a/internal/frontend/fetch_test.go
+++ b/internal/frontend/fetch_test.go
@@ -44,7 +44,12 @@
 		{
 			name:     "path at master package is in module root",
 			fullPath: testModulePath,
-			version:  internal.MasterVersion,
+			version:  "master",
+		},
+		{
+			name:     "path at main package is in module root",
+			fullPath: testModulePath,
+			version:  "main",
 		},
 		{
 			name:     "path at latest package is in module root",
@@ -64,7 +69,12 @@
 		{
 			name:     "directory at master package is not in module root",
 			fullPath: testModulePath + "/bar",
-			version:  internal.MasterVersion,
+			version:  "master",
+		},
+		{
+			name:     "directory at main package is not in module root",
+			fullPath: testModulePath + "/bar",
+			version:  "main",
 		},
 	} {
 		t.Run(test.name, func(t *testing.T) {
diff --git a/internal/frontend/unit.go b/internal/frontend/unit.go
index 591eab8..6320f4c 100644
--- a/internal/frontend/unit.go
+++ b/internal/frontend/unit.go
@@ -95,7 +95,7 @@
 	}
 
 	recordVersionTypeMetric(ctx, info.requestedVersion)
-	if info.requestedVersion == internal.MasterVersion {
+	if _, ok := internal.DefaultBranches[info.requestedVersion]; ok {
 		// Since path@master is a moving target, we don't want it to be stale.
 		// As a result, we enqueue every request of path@master to the frontend
 		// task queue, which will initiate a fetch request depending on the
@@ -106,7 +106,7 @@
 		go func() {
 			ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
 			defer cancel()
-			if _, err := s.queue.ScheduleFetch(ctx, info.modulePath, internal.MasterVersion, ""); err != nil {
+			if _, err := s.queue.ScheduleFetch(ctx, info.modulePath, info.requestedVersion, ""); err != nil {
 				log.Errorf(ctx, "serveDetails(%q): %v", r.URL.Path, err)
 			}
 		}()
diff --git a/internal/frontend/urlinfo.go b/internal/frontend/urlinfo.go
index f472a17..0db1485 100644
--- a/internal/frontend/urlinfo.go
+++ b/internal/frontend/urlinfo.go
@@ -170,13 +170,10 @@
 
 // isSupportedVersion reports whether the version is supported by the frontend.
 func isSupportedVersion(fullPath, requestedVersion string) bool {
-	if stdlib.Contains(fullPath) && requestedVersion == internal.MasterVersion {
-		return false
+	if _, ok := internal.DefaultBranches[requestedVersion]; ok {
+		return !stdlib.Contains(fullPath)
 	}
-	if requestedVersion == internal.LatestVersion || semver.IsValid(requestedVersion) {
-		return true
-	}
-	return requestedVersion == internal.MasterVersion
+	return requestedVersion == internal.LatestVersion || semver.IsValid(requestedVersion)
 }
 
 func setExperimentsFromQueryParam(ctx context.Context, r *http.Request) context.Context {
diff --git a/internal/frontend/urlinfo_test.go b/internal/frontend/urlinfo_test.go
index db1070d..209af0b 100644
--- a/internal/frontend/urlinfo_test.go
+++ b/internal/frontend/urlinfo_test.go
@@ -188,10 +188,12 @@
 		{sample.ModulePath, "v1.2.bad", false},
 		{sample.ModulePath, "latest", true},
 		{sample.ModulePath, "master", true},
+		{sample.ModulePath, "main", true},
 		{"net/http", "v1.2.3", true}, // isSupportedVersion expects the goTag is already converted to semver
 		{"net/http", "v1.2.3.bad", false},
 		{"net/http", "latest", true},
 		{"net/http", "master", false},
+		{"net/http", "main", false},
 	}
 	for _, test := range tests {
 		got := isSupportedVersion(test.path, test.version)
diff --git a/internal/postgres/path_test.go b/internal/postgres/path_test.go
index 9d75aaa..8dcb7b5 100644
--- a/internal/postgres/path_test.go
+++ b/internal/postgres/path_test.go
@@ -43,7 +43,7 @@
 		}
 		requested := m.Version
 		if testModule.isMaster {
-			requested = internal.MasterVersion
+			requested = "master"
 		}
 		if err := testDB.UpsertVersionMap(ctx, &internal.VersionMap{
 			ModulePath:       m.ModulePath,
@@ -224,7 +224,7 @@
 		}
 		requested := m.Version
 		if testModule.isMaster {
-			requested = internal.MasterVersion
+			requested = "master"
 		}
 		if err := bypassDB.UpsertVersionMap(ctx, &internal.VersionMap{
 			ModulePath:       m.ModulePath,
diff --git a/internal/postgres/unit.go b/internal/postgres/unit.go
index 9a88a33..49e9a15 100644
--- a/internal/postgres/unit.go
+++ b/internal/postgres/unit.go
@@ -47,11 +47,9 @@
 	if requestedModulePath != internal.UnknownModulePath {
 		query = query.Where(squirrel.Eq{"m.module_path": requestedModulePath})
 	}
-	switch requestedVersion {
-	case internal.LatestVersion:
-	case internal.MasterVersion:
-		query = query.Join("version_map vm ON m.id = vm.module_id").Where("vm.requested_version = 'master'")
-	default:
+	if _, ok := internal.DefaultBranches[requestedVersion]; ok {
+		query = query.Join("version_map vm ON m.id = vm.module_id").Where("vm.requested_version = ? ", requestedVersion)
+	} else if requestedVersion != internal.LatestVersion {
 		query = query.Where(squirrel.Eq{"version": requestedVersion})
 	}
 	var (
diff --git a/internal/proxy/server.go b/internal/proxy/server.go
index d59280c..51fffa1 100644
--- a/internal/proxy/server.go
+++ b/internal/proxy/server.go
@@ -118,8 +118,9 @@
 		s.handleList(m.ModulePath)
 		s.handleLatest(m.ModulePath, fmt.Sprintf("/%s/@latest", m.ModulePath))
 		// TODO(https://golang.org/issue/39985): Add endpoint for handling
-		// master version.
+		// master and main versions.
 		s.handleLatest(m.ModulePath, fmt.Sprintf("/%s/@v/master.info", m.ModulePath))
+		s.handleLatest(m.ModulePath, fmt.Sprintf("/%s/@v/main.info", m.ModulePath))
 	}
 	s.handleInfo(m.ModulePath, m.Version)
 	s.handleMod(m)
