diff --git a/internal/frontend/search.go b/internal/frontend/search.go
index dab2666..081a6f3 100644
--- a/internal/frontend/search.go
+++ b/internal/frontend/search.go
@@ -44,8 +44,8 @@
 	}
 
 	ctx := r.Context()
-	query, filters := searchQueryAndFilters(r)
-	if !utf8.ValidString(query) {
+	cq, filters := searchQueryAndFilters(r)
+	if !utf8.ValidString(cq) {
 		return &serverError{status: http.StatusBadRequest}
 	}
 	if len(filters) > 1 {
@@ -57,7 +57,7 @@
 			},
 		}
 	}
-	if len(query) > maxSearchQueryLength {
+	if len(cq) > maxSearchQueryLength {
 		return &serverError{
 			status: http.StatusBadRequest,
 			epage: &errorPage{
@@ -66,7 +66,7 @@
 			},
 		}
 	}
-	if query == "" {
+	if cq == "" {
 		http.Redirect(w, r, "/", http.StatusFound)
 		return nil
 	}
@@ -89,7 +89,7 @@
 			},
 		}
 	}
-	if path := searchRequestRedirectPath(ctx, ds, query); path != "" {
+	if path := searchRequestRedirectPath(ctx, ds, cq); path != "" {
 		http.Redirect(w, r, path, http.StatusFound)
 		return nil
 	}
@@ -99,11 +99,11 @@
 		symbol = filters[0]
 	}
 	mode := searchMode(r)
-	page, err := fetchSearchPage(ctx, db, query, symbol, pageParams, mode == searchModeSymbol, s.getVulnEntries)
+	page, err := fetchSearchPage(ctx, db, cq, symbol, pageParams, mode == searchModeSymbol, s.getVulnEntries)
 	if err != nil {
-		return fmt.Errorf("fetchSearchPage(ctx, db, %q): %v", query, err)
+		return fmt.Errorf("fetchSearchPage(ctx, db, %q): %v", cq, err)
 	}
-	page.basePage = s.newBasePage(r, fmt.Sprintf("%s - Search Results", query))
+	page.basePage = s.newBasePage(r, fmt.Sprintf("%s - Search Results", cq))
 	page.SearchMode = mode
 	if s.shouldServeJSON(r) {
 		return s.serveJSONPage(w, r, page)
@@ -152,6 +152,11 @@
 // populate.
 type SearchPage struct {
 	basePage
+
+	// PackageTabQuery is the search query, stripped of any filters.
+	// This is used if the user clicks on the package tab.
+	PackageTabQuery string
+
 	Pagination pagination
 	Results    []*SearchResult
 }
@@ -187,7 +192,7 @@
 
 // fetchSearchPage fetches data matching the search query from the database and
 // returns a SearchPage.
-func fetchSearchPage(ctx context.Context, db *postgres.DB, query, symbol string,
+func fetchSearchPage(ctx context.Context, db *postgres.DB, cq, symbol string,
 	pageParams paginationParams, searchSymbols bool, getVulnEntries vulnEntriesFunc) (*SearchPage, error) {
 	maxResultCount := maxSearchOffset + pageParams.limit
 
@@ -196,7 +201,7 @@
 		// When using search grouping, do pageless search: always start from the beginning.
 		offset = 0
 	}
-	dbresults, err := db.Search(ctx, query, postgres.SearchOptions{
+	dbresults, err := db.Search(ctx, cq, postgres.SearchOptions{
 		MaxResults:     pageParams.limit,
 		Offset:         offset,
 		MaxResultCount: maxResultCount,
@@ -234,8 +239,9 @@
 
 	pgs := newPagination(pageParams, numPageResults, numResults)
 	sp := &SearchPage{
-		Results:    results,
-		Pagination: pgs,
+		PackageTabQuery: cq,
+		Results:         results,
+		Pagination:      pgs,
 	}
 	return sp, nil
 }
diff --git a/internal/frontend/search_test.go b/internal/frontend/search_test.go
index 5b24f20..de826e2 100644
--- a/internal/frontend/search_test.go
+++ b/internal/frontend/search_test.go
@@ -176,6 +176,7 @@
 			name:  "want expected search page",
 			query: "foo bar",
 			wantSearchPage: &SearchPage{
+				PackageTabQuery: "foo bar",
 				Pagination: pagination{
 					TotalCount:   1,
 					ResultCount:  1,
@@ -205,6 +206,7 @@
 			name:  "want only foo search page",
 			query: "package",
 			wantSearchPage: &SearchPage{
+				PackageTabQuery: "package",
 				Pagination: pagination{
 					TotalCount:   1,
 					ResultCount:  1,
diff --git a/static/frontend/search/search.tmpl b/static/frontend/search/search.tmpl
index b640197..88031d8 100644
--- a/static/frontend/search/search.tmpl
+++ b/static/frontend/search/search.tmpl
@@ -193,8 +193,12 @@
   <div>
     <nav class="go-TabNav">
       <ul>
-        <li {{if not (eq .SearchMode .SearchModeSymbol)}}aria-current="page"{{end}}><a href="{{.Pagination.URL .Pagination.Limit .SearchModePackage .Query}}">Packages</a></li>
-        <li {{if eq .SearchMode .SearchModeSymbol}}aria-current="page"{{end}}><a href="{{.Pagination.URL .Pagination.Limit .SearchModeSymbol .Query}}">Symbols</a></li>
+        <li {{if not (eq .SearchMode .SearchModeSymbol)}}aria-current="page"{{end}}>
+          <a href="{{.Pagination.URL .Pagination.Limit .SearchModePackage .PackageTabQuery}}">Packages</a>
+        </li>
+        <li {{if eq .SearchMode .SearchModeSymbol}}aria-current="page"{{end}}>
+          <a href="{{.Pagination.URL .Pagination.Limit .SearchModeSymbol .Query}}">Symbols</a>
+        </li>
       </ul>
       <hr />
     </nav>
diff --git a/tests/search/main.go b/tests/search/main.go
index 41cbba8..ee0a1ba 100755
--- a/tests/search/main.go
+++ b/tests/search/main.go
@@ -117,6 +117,9 @@
 		return nil, err
 	}
 	gotResults := searchPage.Results
+	if strings.ContainsAny(searchPage.PackageTabQuery, "#") {
+		output = append(output, "invalid package tab query, should not contain #: %q", searchPage.PackageTabQuery)
+	}
 	for i, want := range st.results {
 		got := &frontend.SearchResult{}
 		if len(gotResults) > i {
