diff --git a/event/bench/event_test.go b/event/bench/event_test.go
index 07d45a8..1e8e59c 100644
--- a/event/bench/event_test.go
+++ b/event/bench/event_test.go
@@ -68,7 +68,7 @@
 		},
 	}
 
-	gauge       = event.NewFloatGauge("gauge")
+	gauge       = event.NewFloatGauge("gauge", "a gauge")
 	eventMetric = Hooks{
 		AStart: func(ctx context.Context, a int) context.Context {
 			event.To(ctx).With(aStat.Of(a)).Metric(gauge.Record(1))
diff --git a/event/builder_test.go b/event/builder_test.go
index 5e0174f..4f4166c 100644
--- a/event/builder_test.go
+++ b/event/builder_test.go
@@ -129,7 +129,7 @@
 
 func TestTraceDuration(t *testing.T) {
 	// Verify that a trace can can emit a latency metric.
-	dur := event.NewDuration("test")
+	dur := event.NewDuration("test", "")
 	want := 200 * time.Millisecond
 
 	check := func(t *testing.T, h *testTraceDurationHandler) {
@@ -171,7 +171,7 @@
 
 func BenchmarkBuildContext(b *testing.B) {
 	// How long does it take to deliver an event from a nested context?
-	c := event.NewCounter("c")
+	c := event.NewCounter("c", "")
 	for _, depth := range []int{1, 5, 7, 10} {
 		b.Run(fmt.Sprintf("depth %d", depth), func(b *testing.B) {
 			ctx := event.WithExporter(context.Background(), event.NewExporter(event.NopHandler{}, nil))
diff --git a/event/common_test.go b/event/common_test.go
index 4066f33..1fdfbd5 100644
--- a/event/common_test.go
+++ b/event/common_test.go
@@ -15,7 +15,7 @@
 
 func TestCommon(t *testing.T) {
 	ctx, h := eventtest.NewCapture()
-	m := event.NewCounter("m")
+	m := event.NewCounter("m", "")
 
 	const simple = "simple message"
 	const trace = "a trace"
diff --git a/event/event_test.go b/event/event_test.go
index 1656e56..4a01b72 100644
--- a/event/event_test.go
+++ b/event/event_test.go
@@ -23,9 +23,9 @@
 	l1      = keys.Int("l1").Of(1)
 	l2      = keys.Int("l2").Of(2)
 	l3      = keys.Int("l3").Of(3)
-	counter = event.NewCounter("hits")
-	gauge   = event.NewFloatGauge("temperature")
-	latency = event.NewDuration("latency")
+	counter = event.NewCounter("hits", "cache hits")
+	gauge   = event.NewFloatGauge("temperature", "CPU board temperature in Celsius")
+	latency = event.NewDuration("latency", "how long it took")
 )
 
 func TestPrint(t *testing.T) {
diff --git a/event/metric.go b/event/metric.go
index 52b27ed..0c989ef 100644
--- a/event/metric.go
+++ b/event/metric.go
@@ -18,7 +18,7 @@
 type MetricDescriptor struct {
 	namespace   string
 	name        string
-	Description string
+	description string
 	// TODO: deal with units. Follow otel, or define Go types for common units.
 	// We don't need a time unit because we'll use time.Duration, and the only
 	// other unit otel currently defines (besides dimensionless) is bytes.
@@ -28,11 +28,11 @@
 // The namespace defaults to the import path of the caller of NewMetricDescriptor.
 // Use SetNamespace to provide a different one.
 // Neither the name nor the namespace can be empty.
-func NewMetricDescriptor(name string) *MetricDescriptor {
-	return newMetricDescriptor(name)
+func NewMetricDescriptor(name, description string) *MetricDescriptor {
+	return newMetricDescriptor(name, description)
 }
 
-func newMetricDescriptor(name string) *MetricDescriptor {
+func newMetricDescriptor(name, description string) *MetricDescriptor {
 	if name == "" {
 		panic("name cannot be empty")
 	}
@@ -45,7 +45,8 @@
 		//   2  this function
 		//   3  caller of this function (one of the NewXXX methods in this package)
 		//   4  caller's caller
-		namespace: importPath(4, nil),
+		namespace:   importPath(4, nil),
+		description: description,
 	}
 }
 
@@ -61,8 +62,9 @@
 	return fmt.Sprintf("Metric(\"%s/%s\")", m.namespace, m.name)
 }
 
-func (m *MetricDescriptor) Name() string      { return m.name }
-func (m *MetricDescriptor) Namespace() string { return m.namespace }
+func (m *MetricDescriptor) Name() string        { return m.name }
+func (m *MetricDescriptor) Namespace() string   { return m.namespace }
+func (m *MetricDescriptor) Description() string { return m.description }
 
 // A MetricValue is a pair of a Metric and a Value.
 type MetricValue struct {
@@ -76,8 +78,8 @@
 }
 
 // NewCounter creates a counter with the given name.
-func NewCounter(name string) *Counter {
-	return &Counter{newMetricDescriptor(name)}
+func NewCounter(name, description string) *Counter {
+	return &Counter{newMetricDescriptor(name, description)}
 }
 
 // Descriptor returns the receiver's MetricDescriptor.
@@ -99,8 +101,8 @@
 }
 
 // NewFloatGauge creates a new FloatGauge with the given name.
-func NewFloatGauge(name string) *FloatGauge {
-	return &FloatGauge{newMetricDescriptor(name)}
+func NewFloatGauge(name, description string) *FloatGauge {
+	return &FloatGauge{newMetricDescriptor(name, description)}
 }
 
 // Descriptor returns the receiver's MetricDescriptor.
@@ -122,8 +124,8 @@
 }
 
 // NewDuration creates a new Duration with the given name.
-func NewDuration(name string) *Duration {
-	return &Duration{newMetricDescriptor(name)}
+func NewDuration(name, description string) *Duration {
+	return &Duration{newMetricDescriptor(name, description)}
 }
 
 // Descriptor returns the receiver's MetricDescriptor.
