diff --git a/plugins/outputs/prometheus_client/prometheus_client.go b/plugins/outputs/prometheus_client/prometheus_client.go
index 5b416b72ef4949f26159a91f21a2d7925d885e94..b82c72cf05810badaa47ebb9242913bc4f83a06f 100644
--- a/plugins/outputs/prometheus_client/prometheus_client.go
+++ b/plugins/outputs/prometheus_client/prometheus_client.go
@@ -352,6 +352,8 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
 				switch fv := fv.(type) {
 				case int64:
 					value = float64(fv)
+				case uint64:
+					value = float64(fv)
 				case float64:
 					value = fv
 				default:
@@ -391,6 +393,8 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
 				switch fv := fv.(type) {
 				case int64:
 					value = float64(fv)
+				case uint64:
+					value = float64(fv)
 				case float64:
 					value = fv
 				default:
@@ -427,6 +431,8 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
 				switch fv := fv.(type) {
 				case int64:
 					value = float64(fv)
+				case uint64:
+					value = float64(fv)
 				case float64:
 					value = fv
 				default:
diff --git a/plugins/outputs/prometheus_client/prometheus_client_test.go b/plugins/outputs/prometheus_client/prometheus_client_test.go
index 05bd5264aa77c368e3ded8ad6b8550f98263510a..bd2398a23b9c755ae843f932e8a00cfd02caf19b 100644
--- a/plugins/outputs/prometheus_client/prometheus_client_test.go
+++ b/plugins/outputs/prometheus_client/prometheus_client_test.go
@@ -151,6 +151,16 @@ func TestWrite_Counters(t *testing.T) {
 			metricName: "foo_other",
 			valueType:  telegraf.Counter,
 		},
+		{
+			name: "uint64 fields are output",
+			args: args{
+				measurement: "foo",
+				fields:      map[string]interface{}{"value": uint64(42)},
+				valueType:   telegraf.Counter,
+			},
+			metricName: "foo",
+			valueType:  telegraf.Counter,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -239,6 +249,16 @@ func TestWrite_Gauge(t *testing.T) {
 			metricName: "foo_other",
 			valueType:  telegraf.Gauge,
 		},
+		{
+			name: "uint64 fields are output",
+			args: args{
+				measurement: "foo",
+				fields:      map[string]interface{}{"value": uint64(42)},
+				valueType:   telegraf.Counter,
+			},
+			metricName: "foo",
+			valueType:  telegraf.Counter,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {