diff --git a/routers/web/repo/compare.go b/routers/web/repo/compare.go
index 8d45f8d674..35f923d561 100644
--- a/routers/web/repo/compare.go
+++ b/routers/web/repo/compare.go
@@ -30,6 +30,7 @@ import (
 	"code.gitea.io/gitea/modules/log"
 	"code.gitea.io/gitea/modules/markup"
 	"code.gitea.io/gitea/modules/setting"
+	api "code.gitea.io/gitea/modules/structs"
 	"code.gitea.io/gitea/modules/upload"
 	"code.gitea.io/gitea/modules/util"
 	"code.gitea.io/gitea/services/gitdiff"
@@ -789,16 +790,29 @@ func CompareDiff(ctx *context.Context) {
 		ctx.Flash.Warning(renderErrorOfTemplates(ctx, templateErrs), true)
 	}
 
-	// If a template content is set, prepend the "content". In this case that's only
-	// applicable if you have one commit to compare and that commit has a message.
-	// In that case the commit message will be prepend to the template body.
-	if templateContent, ok := ctx.Data[pullRequestTemplateKey].(string); ok && templateContent != "" {
-		if content, ok := ctx.Data["content"].(string); ok && content != "" {
+	if content, ok := ctx.Data["content"].(string); ok && content != "" {
+		// If a template content is set, prepend the "content". In this case that's only
+		// applicable if you have one commit to compare and that commit has a message.
+		// In that case the commit message will be prepend to the template body.
+		if templateContent, ok := ctx.Data[pullRequestTemplateKey].(string); ok && templateContent != "" {
 			// Re-use the same key as that's priortized over the "content" key.
 			// Add two new lines between the content to ensure there's always at least
 			// one empty line between them.
 			ctx.Data[pullRequestTemplateKey] = content + "\n\n" + templateContent
 		}
+
+		// When using form fields, also add content to field with id "body".
+		if fields, ok := ctx.Data["Fields"].([]*api.IssueFormField); ok {
+			for _, field := range fields {
+				if field.ID == "body" {
+					if fieldValue, ok := field.Attributes["value"].(string); ok && fieldValue != "" {
+						field.Attributes["value"] = content + "\n\n" + fieldValue
+					} else {
+						field.Attributes["value"] = content
+					}
+				}
+			}
+		}
 	}
 
 	ctx.Data["IsAttachmentEnabled"] = setting.Attachment.Enabled