diff --git a/cmd/root.go b/cmd/root.go
index 3a75a71c318a48f34c8a143fd86c6ddb92e51af1..bf72649c51f60d2af23b144cf2463af94e76d12f 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -2,6 +2,7 @@ package cmd
 
 import (
 	"fmt"
+	"image/png"
 	"log"
 	"net/http"
 	"os"
@@ -27,6 +28,11 @@ var filePath string
 var appInfo *ipapk.AppInfo
 var manifestTemplate *template.Template
 
+func iconHandler(w http.ResponseWriter, req *http.Request) {
+	w.Header().Set("Content-Type", "image/png")
+	png.Encode(w, appInfo.Icon)
+}
+
 func qrcodeHandler(w http.ResponseWriter, req *http.Request) {
 	w.Header().Set("Content-Type", "image/png")
 	url := fmt.Sprintf("itms-services://?action=download-manifest&url=%s://%s/manifest.plist", scheme, req.Host)
@@ -55,6 +61,7 @@ var rootCmd = &cobra.Command{
 		var err error
 		appInfo, err = ipapk.NewAppParser(file)
 		filePath = fmt.Sprintf("/%s", path.Base(file))
+		http.HandleFunc("/icon.png", iconHandler)
 		http.HandleFunc("/qrcode.png", qrcodeHandler)
 		http.HandleFunc("/manifest.plist", manifestHandler)
 		http.HandleFunc(filePath, fileDownloadHandler)