diff --git a/server_apps.go b/server_apps.go
index b8359c231e0aff7fa4d991e784b03959179a3cb4..a9d76f0dc8c60fb892ff1e83bdaf1c5e6929a2bc 100644
--- a/server_apps.go
+++ b/server_apps.go
@@ -16,6 +16,7 @@ import (
 	"path"
 	"regexp"
 	"strings"
+	"strconv"
 	"time"
 
 	"github.com/go-git/go-git/v5"
@@ -705,6 +706,7 @@ func (s *server) handleAppTargz(w http.ResponseWriter, r *http.Request) {
 	for _, app := range apps {
 		if app.repository == fmt.Sprintf("%s/%s", orga, repo) {
 			w.Header().Add("Content-Type", "application/x-gzip")
+			w.Header().Add("Content-Length", strconv.Itoa(len(app.appInfo.targz)))
 			w.Write(app.appInfo.targz)
 			return
 		}
diff --git a/server_mirror.go b/server_mirror.go
index 2f514e240a852d0e721ecb30cfaa3d7a395e4a18..a37ff1fb82a83dd58debf534240b7bf319433a2f 100644
--- a/server_mirror.go
+++ b/server_mirror.go
@@ -10,6 +10,7 @@ import (
 	"net/http"
 	"regexp"
 	"strings"
+	"strconv"
 )
 
 func (s *server) cacheTarball(rel *GLRelease, data io.Reader) error {
@@ -49,6 +50,7 @@ func (s *server) serveMirroredFile(w http.ResponseWriter, r *http.Request, rel *
 		b := s.cache[rel.TagName][artifact]
 		s.cacheMu.RUnlock()
 		w.Header().Add("Content-Type", "application/octet-stream")
+		w.Header().Add("Content-Length", strconv.Itoa(len(b)))
 		w.Write(b)
 		return
 	}
@@ -103,6 +105,7 @@ func (s *server) serveMirroredFile(w http.ResponseWriter, r *http.Request, rel *
 		b := s.cache[rel.TagName][artifact]
 		s.cacheMu.RUnlock()
 		w.Header().Add("Content-Type", "application/octet-stream")
+		w.Header().Add("Content-Length", strconv.Itoa(len(b)))
 		w.Write(b)
 		return
 	}