diff --git a/apidiff/report.go b/apidiff/report.go
index 454ff35..fd346b1 100644
--- a/apidiff/report.go
+++ b/apidiff/report.go
@@ -20,14 +20,17 @@
 }
 
 func (r Report) Text(w io.Writer) error {
-	if err := r.TextIncompatible(w); err != nil {
+	if err := r.TextIncompatible(w, true); err != nil {
 		return err
 	}
 	return r.TextCompatible(w)
 }
 
-func (r Report) TextIncompatible(w io.Writer) error {
-	return r.writeMessages(w, "Incompatible changes:", r.Incompatible)
+func (r Report) TextIncompatible(w io.Writer, withHeader bool) error {
+	if withHeader {
+		return r.writeMessages(w, "Incompatible changes:", r.Incompatible)
+	}
+	return r.writeMessages(w, "", r.Incompatible)
 }
 
 func (r Report) TextCompatible(w io.Writer) error {
@@ -38,8 +41,10 @@
 	if len(msgs) == 0 {
 		return nil
 	}
-	if _, err := fmt.Fprintf(w, "%s\n", header); err != nil {
-		return err
+	if header != "" {
+		if _, err := fmt.Fprintf(w, "%s\n", header); err != nil {
+			return err
+		}
 	}
 	for _, m := range msgs {
 		if _, err := fmt.Fprintf(w, "- %s\n", m); err != nil {
diff --git a/cmd/apidiff/main.go b/cmd/apidiff/main.go
index 7cc0caf..aeaf1a7 100644
--- a/cmd/apidiff/main.go
+++ b/cmd/apidiff/main.go
@@ -55,7 +55,7 @@
 		report := apidiff.Changes(oldpkg, newpkg)
 		var err error
 		if *incompatibleOnly {
-			err = report.TextIncompatible(os.Stdout)
+			err = report.TextIncompatible(os.Stdout, false)
 		} else {
 			err = report.Text(os.Stdout)
 		}
