diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java
new file mode 100644
index 00000000000..deead027313
--- /dev/null
+++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.api.incubator.propagation;
+
+import io.opentelemetry.context.propagation.TextMapGetter;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.Nullable;
+
+/**
+ * A {@link TextMapGetter} that extracts context from a map carrier, intended for use with
+ * environment variables in child processes.
+ *
+ *
This is useful when a child process needs to extract propagated context from its environment.
+ * For example:
+ *
+ *
{@code
+ * Map env = System.getenv();
+ * Context context = contextPropagators.getTextMapPropagator()
+ * .extract(Context.current(), env, EnvironmentGetter.getInstance());
+ * }
+ *
+ * This getter automatically sanitizes keys to match environment variable naming conventions:
+ *
+ *
+ * - Converts keys to uppercase (e.g., {@code traceparent} becomes {@code TRACEPARENT})
+ *
- Replaces {@code .} and {@code -} with underscores
+ *
+ *
+ * Values are validated to contain only characters valid in HTTP header fields per RFC 9110 (visible ASCII
+ * characters, space, and horizontal tab). Values containing invalid characters are treated as
+ * absent and {@code null} is returned.
+ *
+ * @see Environment
+ * Variable Format Restrictions
+ */
+public final class EnvironmentGetter implements TextMapGetter