diff --git a/config/options.go b/config/options.go
index b266a470c5861bb998ef4cb775998a8273467c05..9fcffe23a22a3379a72a7de2ee09bc59129babba 100644
--- a/config/options.go
+++ b/config/options.go
@@ -52,6 +52,7 @@ const (
 	defaultHTTPClientTimeout                  = 20
 	defaultHTTPClientMaxBodySize              = 15
 	defaultHTTPClientProxy                    = ""
+	defaultHTTPClientUserAgent                = ""
 	defaultAuthProxyHeader                    = ""
 	defaultAuthProxyUserCreation              = false
 	defaultMaintenanceMode                    = false
@@ -59,7 +60,6 @@ const (
 	defaultMetricsCollector                   = false
 	defaultMetricsRefreshInterval             = 60
 	defaultMetricsAllowedNetworks             = "127.0.0.1/8"
-	defaultUserAgent                          = ""
 )
 
 // Options contains configuration options.
@@ -106,6 +106,7 @@ type Options struct {
 	httpClientTimeout                  int
 	httpClientMaxBodySize              int64
 	httpClientProxy                    string
+	httpClientUserAgent                string
 	authProxyHeader                    string
 	authProxyUserCreation              bool
 	maintenanceMode                    bool
@@ -113,7 +114,6 @@ type Options struct {
 	metricsCollector                   bool
 	metricsRefreshInterval             int
 	metricsAllowedNetworks             []string
-	userAgent                          string
 }
 
 // NewOptions returns Options with default values.
@@ -166,7 +166,7 @@ func NewOptions() *Options {
 		metricsCollector:                   defaultMetricsCollector,
 		metricsRefreshInterval:             defaultMetricsRefreshInterval,
 		metricsAllowedNetworks:             []string{defaultMetricsAllowedNetworks},
-		userAgent:                          defaultUserAgent,
+		httpClientUserAgent:                defaultHTTPClientUserAgent,
 	}
 }
 
@@ -425,9 +425,9 @@ func (o *Options) MetricsAllowedNetworks() []string {
 	return o.metricsAllowedNetworks
 }
 
-// UserAgent returns the global User-Agent header for miniflux.
-func (o *Options) UserAgent() string {
-	return o.userAgent
+// HTTPClientUserAgent returns the global User-Agent header for miniflux.
+func (o *Options) HTTPClientUserAgent() string {
+	return o.httpClientUserAgent
 }
 
 func (o *Options) String() string {
@@ -474,6 +474,7 @@ func (o *Options) String() string {
 	builder.WriteString(fmt.Sprintf("HTTP_CLIENT_TIMEOUT: %v\n", o.httpClientTimeout))
 	builder.WriteString(fmt.Sprintf("HTTP_CLIENT_MAX_BODY_SIZE: %v\n", o.httpClientMaxBodySize))
 	builder.WriteString(fmt.Sprintf("HTTP_CLIENT_PROXY: %v\n", o.httpClientProxy))
+	builder.WriteString(fmt.Sprintf("HTTP_CLIENT_USER_AGENT: %v\n", o.httpClientUserAgent))
 	builder.WriteString(fmt.Sprintf("AUTH_PROXY_HEADER: %v\n", o.authProxyHeader))
 	builder.WriteString(fmt.Sprintf("AUTH_PROXY_USER_CREATION: %v\n", o.authProxyUserCreation))
 	builder.WriteString(fmt.Sprintf("MAINTENANCE_MODE: %v\n", o.maintenanceMode))
@@ -481,6 +482,5 @@ func (o *Options) String() string {
 	builder.WriteString(fmt.Sprintf("METRICS_COLLECTOR: %v\n", o.metricsCollector))
 	builder.WriteString(fmt.Sprintf("METRICS_REFRESH_INTERVAL: %v\n", o.metricsRefreshInterval))
 	builder.WriteString(fmt.Sprintf("METRICS_ALLOWED_NETWORKS: %v\n", o.metricsAllowedNetworks))
-	builder.WriteString(fmt.Sprintf("USER_AGENT: %v\n", o.userAgent))
 	return builder.String()
 }
diff --git a/config/parser.go b/config/parser.go
index 45fd08a73a9f129f7cad7c93221aa32d36ea9ef1..1cfc5531fa123394daa4d92a6d2a3d8c9f2f84ae 100644
--- a/config/parser.go
+++ b/config/parser.go
@@ -170,6 +170,8 @@ func (p *Parser) parseLines(lines []string) (err error) {
 			p.opts.httpClientMaxBodySize = int64(parseInt(value, defaultHTTPClientMaxBodySize) * 1024 * 1024)
 		case "HTTP_CLIENT_PROXY":
 			p.opts.httpClientProxy = parseString(value, defaultHTTPClientProxy)
+		case "HTTP_CLIENT_USER_AGENT":
+			p.opts.httpClientUserAgent = parseString(value, defaultHTTPClientUserAgent)
 		case "AUTH_PROXY_HEADER":
 			p.opts.authProxyHeader = parseString(value, defaultAuthProxyHeader)
 		case "AUTH_PROXY_USER_CREATION":
@@ -184,8 +186,6 @@ func (p *Parser) parseLines(lines []string) (err error) {
 			p.opts.metricsRefreshInterval = parseInt(value, defaultMetricsRefreshInterval)
 		case "METRICS_ALLOWED_NETWORKS":
 			p.opts.metricsAllowedNetworks = parseStringList(value, []string{defaultMetricsAllowedNetworks})
-		case "USER_AGENT":
-			p.opts.userAgent = parseString(value, defaultUserAgent)
 		}
 	}
 
diff --git a/http/client/client.go b/http/client/client.go
index cc137a59fd48585d2cdcfce74286d570ad724f7c..40cbc399693427e8dd78666c65fc8b5545136d2f 100644
--- a/http/client/client.go
+++ b/http/client/client.go
@@ -72,7 +72,7 @@ func New(url string) *Client {
 
 // NewClientWithConfig initializes a new HTTP client with application config options.
 func NewClientWithConfig(url string, opts *config.Options) *Client {
-	userAgent := opts.UserAgent()
+	userAgent := opts.HTTPClientUserAgent()
 	if userAgent == "" {
 		userAgent = DefaultUserAgent
 	}
diff --git a/http/client/client_test.go b/http/client/client_test.go
index 74d67199f1437b05a2c11be41dbec94cd1fcfa6a..ab93ef60069c3370e2cc563976d4eda1163f8ec4 100644
--- a/http/client/client_test.go
+++ b/http/client/client_test.go
@@ -62,7 +62,7 @@ func TestClientRequestUserAgent(t *testing.T) {
 	}
 
 	userAgent := "Custom User Agent"
-	os.Setenv("USER_AGENT", userAgent)
+	os.Setenv("HTTP_CLIENT_USER_AGENT", userAgent)
 	opts, err := config.NewParser().ParseEnvironmentVariables()
 	if err != nil {
 		t.Fatalf(`Parsing config failed: %v`, err)
diff --git a/miniflux.1 b/miniflux.1
index 0d049b0bfc750c3483422e0b4d8c4bfa799407a2..8ae9268f573a7af85b0c4eff8fdbffe8420ad636 100644
--- a/miniflux.1
+++ b/miniflux.1
@@ -277,6 +277,11 @@ Proxy URL for HTTP client\&.
 .br
 Default is empty\&.
 .TP
+.B HTTP_CLIENT_USER_AGENT
+The default User-Agent header to use for the HTTP client. Can be overridden in per-feed settings\&.
+.br
+Default is empty. When empty, Miniflux uses a default User-Agent that includes the Miniflux version\&.
+.TP
 .B AUTH_PROXY_HEADER
 Proxy authentication HTTP header\&.
 .TP