diff --git a/common/config/conf_domain.go b/common/config/conf_domain.go
index a3fb44fe8536e124882bf765a0d5f49379610f49..ac1747206e993eaa77249fbfc01c29f6854acb23 100644
--- a/common/config/conf_domain.go
+++ b/common/config/conf_domain.go
@@ -46,6 +46,7 @@ func NewDefaultDomainConfig() DomainRepoConfig {
 				"0.0.0.0/0", // "Everything"
 			},
 			DefaultLanguage: "en-US,en",
+			UserAgent:       "matrix-media-repo",
 			OEmbed:          false,
 		},
 		Thumbnails: ThumbnailsConfig{
diff --git a/common/config/conf_main.go b/common/config/conf_main.go
index 4697f2a6e3b8a3e11c2077715d4c22390e7c2fca..7e96d8c39b13430c8a3b09b211b8f57549caec6f 100644
--- a/common/config/conf_main.go
+++ b/common/config/conf_main.go
@@ -73,6 +73,7 @@ func NewDefaultMainConfig() MainRepoConfig {
 					"0.0.0.0/0", // "Everything"
 				},
 				DefaultLanguage: "en-US,en",
+				UserAgent:       "matrix-media-repo",
 				OEmbed:          false,
 			},
 			NumWorkers: 10,
diff --git a/common/config/models_domain.go b/common/config/models_domain.go
index 14ef0f30eb5c0aeeb8dbc4f991f114bd6e40d801..1b1c74a635c3005e56ae79197749672af5e1b574 100644
--- a/common/config/models_domain.go
+++ b/common/config/models_domain.go
@@ -64,6 +64,7 @@ type UrlPreviewsConfig struct {
 	AllowedNetworks    []string `yaml:"allowedNetworks,flow"`
 	UnsafeCertificates bool     `yaml:"previewUnsafeCertificates"`
 	DefaultLanguage    string   `yaml:"defaultLanguage"`
+	UserAgent		   string   `yaml:"userAgent"`
 	OEmbed             bool     `yaml:"oEmbed"`
 }
 
diff --git a/config.sample.yaml b/config.sample.yaml
index 5fa6d641f9b5cea8b0ef9586c5da5e1046767577..8fc5c62cce2d5c3b09d0542d4bf166847d10c8e7 100644
--- a/config.sample.yaml
+++ b/config.sample.yaml
@@ -320,6 +320,9 @@ urlPreviews:
   # Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
   defaultLanguage: "en-US,en"
 
+  # Set the User-Agent header to supply when generating URL previews
+  userAgent: "matrix-media-repo"
+
   # When true, oEmbed previews will be enabled. Typically these kinds of previews are used for
   # sites that do not support OpenGraph or page scraping, such as Twitter. For information on
   # specifying providers for oEmbed, including your own, see the following documentation:
diff --git a/controllers/preview_controller/previewers/http.go b/controllers/preview_controller/previewers/http.go
index 7d566241be31611b16ef54739beeee96b41137ee..7c6deb96104723cfc70acc0c61e457f6cf627806 100644
--- a/controllers/preview_controller/previewers/http.go
+++ b/controllers/preview_controller/previewers/http.go
@@ -118,7 +118,7 @@ func doHttpGet(urlPayload *preview_types.UrlPayload, languageHeader string, ctx
 	if err != nil {
 		return nil, err
 	}
-	req.Header.Set("User-Agent", "matrix-media-repo")
+	req.Header.Set("User-Agent", ctx.Config.UrlPreviews.UserAgent)
 	req.Header.Set("Accept-Language", languageHeader)
 	return client.Do(req)
 }