diff --git a/cmd/serve/restic/restic.go b/cmd/serve/restic/restic.go
index 044cc4178..0b1a170d9 100644
--- a/cmd/serve/restic/restic.go
+++ b/cmd/serve/restic/restic.go
@@ -434,17 +434,14 @@ func (s *server) listObjects(w http.ResponseWriter, r *http.Request, remote stri
 		}
 	}
 
-	data, err := json.Marshal(ls)
+	w.Header().Set("Content-Type", "application/vnd.x.restic.rest.v2")
+	enc := json.NewEncoder(w)
+	err = enc.Encode(ls)
 	if err != nil {
-		fs.Errorf(remote, "list marshal failed: %v", err)
+		fs.Errorf(remote, "failed to write list: %v", err)
 		http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
 		return
 	}
-	// fs.Debugf(remote, "ls result = %s", data)
-
-	w.Header().Set("Content-Type", "application/vnd.x.restic.rest.v2")
-
-	_, _ = w.Write(data)
 }
 
 // createRepo creates repository directories.