diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 94460b367497f7d4bf28073aa048d7dbc82e2962..ee9f1722888765cace1adc266350d0f5c849b56b 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -1374,7 +1374,9 @@ void ignoreException()
 
 bool shouldANSI()
 {
-	return isatty(STDERR_FILENO) && getEnv("TERM").value_or("dumb") != "dumb";
+    return isatty(STDERR_FILENO)
+        && getEnv("TERM").value_or("dumb") != "dumb"
+        && !getEnv("NO_COLOR").has_value();
 }
 
 std::string filterANSIEscapes(const std::string & s, bool filterAll, unsigned int width)