diff --git a/analysis/app/compare.go b/analysis/app/compare.go
index 0f22147..0ed01bd 100644
--- a/analysis/app/compare.go
+++ b/analysis/app/compare.go
@@ -22,6 +22,8 @@
 
 // A resultGroup holds a list of results and tracks the distinct labels found in that list.
 type resultGroup struct {
+	// The (partial) query string that resulted in this group.
+	Q string
 	// Raw list of results.
 	results []*benchfmt.Result
 	// LabelValues is the count of results found with each distinct (key, value) pair found in labels.
@@ -52,13 +54,13 @@
 }
 
 // splitOn returns a new set of groups sharing a common value for key.
-func (g *resultGroup) splitOn(key string) ([]string, []*resultGroup) {
+func (g *resultGroup) splitOn(key string) []*resultGroup {
 	groups := make(map[string]*resultGroup)
 	var values []string
 	for _, res := range g.results {
 		value := res.Labels[key]
 		if groups[value] == nil {
-			groups[value] = &resultGroup{}
+			groups[value] = &resultGroup{Q: key + ":" + value}
 			values = append(values, value)
 		}
 		groups[value].add(res)
@@ -69,7 +71,7 @@
 	for _, value := range values {
 		out = append(out, groups[value])
 	}
-	return values, out
+	return out
 }
 
 // valueSet is a set of values and the number of results with each value.
@@ -229,7 +231,7 @@
 	var found int
 	for _, qPart := range queries {
 		keys := queryKeys(qPart)
-		group := &resultGroup{}
+		group := &resultGroup{Q: qPart}
 		if prefix != "" {
 			qPart = prefix + " " + qPart
 		}
@@ -264,21 +266,15 @@
 		group := groups[0]
 		// Matching a single upload with multiple files -> split by file
 		if len(group.LabelValues["upload"]) == 1 && len(group.LabelValues["upload-part"]) > 1 {
-			var values []string
-			values, groups = group.splitOn("upload-part")
-			q := make([]string, len(values))
-			for i, v := range values {
-				q[i] = "upload-part:" + v
-			}
-			queries = q
+			groups = group.splitOn("upload-part")
 		}
 	}
 
 	var buf bytes.Buffer
 	// Compute benchstat
 	c := new(benchstat.Collection)
-	for i, g := range groups {
-		c.AddResults(queries[i], g.results)
+	for _, g := range groups {
+		c.AddResults(g.Q, g.results)
 	}
 	benchstat.FormatHTML(&buf, c.Tables())
 
diff --git a/analysis/appengine/template/compare.html b/analysis/appengine/template/compare.html
index ec24663..afe1cea 100644
--- a/analysis/appengine/template/compare.html
+++ b/analysis/appengine/template/compare.html
@@ -53,13 +53,20 @@
 #labels .diff {
   padding-bottom: 1em;
 }
-#labels .diff table td {
+#labels .diff table td, #labels .diff .query {
   max-width: 20em;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 
+.benchstat tr.configs th {
+  max-width: 0;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
 .benchstat { border-collapse: collapse; }
 .benchstat th:nth-child(1) { text-align: left; }
 .benchstat tbody td:nth-child(1n+2):not(.note) { text-align: right; padding: 0em 1em; }
@@ -108,7 +115,7 @@
               <th class="label">{{$label}}</th>
               <td>
                 {{range $index, $group := $.Groups}}
-                Query {{$index}}: 
+                <div class="query">{{$group.Q}}:</div>
                 <table>
                   {{with index $group.LabelValues $label}}
                     {{range .TopN 4}}
