diff --git a/main.go b/main.go
index 95a228c..e4fb276 100644
--- a/main.go
+++ b/main.go
@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"io"
 	"io/ioutil"
+	"mime"
 	"net/http"
 	"os"
 	"os/user"
@@ -93,31 +94,7 @@ func view(c *gin.Context) {
 	channelShortID := ""
 	var claim *chainquery.Claim
 	var err error
-	if strings.Contains(id, "@") {
-		parts := strings.Split(id, ":")
-		channelName = parts[0]
-		if len(parts) > 1 {
-			channelShortID = parts[1]
-		}
-
-		claim, err = cqApi.ResolveClaimByChannel(claimName, channelShortID, channelName)
-	} else {
-		claim, err = cqApi.ResolveClaim(claimName, id)
-	}
-	if err != nil {
-		if errors.Is(err, chainquery.ClaimNotFoundErr) {
-			_ = c.AbortWithError(http.StatusNotFound, err)
-		} else {
-			logrus.Errorln(errors.FullTrace(err))
-			_ = c.AbortWithError(http.StatusInternalServerError, err)
-		}
-		return
-	}
-	if !strings.Contains(claim.ContentType, "image/") {
-		c.Redirect(301, fmt.Sprintf("https://cdn.lbryplayer.xyz/content/claims/%s/%s/stream", claimName, id))
-		return
-	}
-
+	contentType := mime.TypeByExtension(filepath.Ext(claimNameWithExt))
 	inUploads, err := isFileInDir(uploadsDir, claimNameWithExt)
 	if err != nil {
 		logrus.Errorln(errors.FullTrace(err))
@@ -134,6 +111,33 @@ func view(c *gin.Context) {
 		}
 	}
 	mustDownload := !inUploads && !inDownloads
+	if mustDownload {
+		if strings.Contains(id, "@") {
+			parts := strings.Split(id, ":")
+			channelName = parts[0]
+			if len(parts) > 1 {
+				channelShortID = parts[1]
+			}
+			claim, err = cqApi.ResolveClaimByChannel(claimName, channelShortID, channelName)
+		} else {
+			claim, err = cqApi.ResolveClaim(claimName, id)
+		}
+		if err != nil {
+			if errors.Is(err, chainquery.ClaimNotFoundErr) {
+				_ = c.AbortWithError(http.StatusNotFound, err)
+			} else {
+				logrus.Errorln(errors.FullTrace(err))
+				_ = c.AbortWithError(http.StatusInternalServerError, err)
+			}
+			return
+		}
+		if !strings.Contains(claim.ContentType, "image/") {
+			c.Redirect(301, fmt.Sprintf("https://cdn.lbryplayer.xyz/content/claims/%s/%s/stream", claimName, id))
+			return
+		}
+		contentType = claim.ContentType
+	}
+
 	if mustDownload {
 		err = downloadStream(claim.SdHash, claimNameWithExt)
 		if err != nil {
@@ -166,7 +170,7 @@ func view(c *gin.Context) {
 		_ = c.AbortWithError(http.StatusInternalServerError, errors.Err(err))
 		return
 	}
-	c.DataFromReader(http.StatusOK, f.Size(), claim.ContentType, reader, nil)
+	c.DataFromReader(http.StatusOK, f.Size(), contentType, reader, nil)
 	return
 
 }