From b1c5f5ebada2b944c5004ce9b1f69a1af83f2f03 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 15:33:42 -0800
Subject: [PATCH 01/17] Add Browser Resource Timing Event
---
.chloggen/browser-resource-timing.yaml | 22 +++++
docs/browser/events.md | 100 +++++++++++++++++++++++
model/browser/events.yaml | 107 +++++++++++++++++++++++++
3 files changed, 229 insertions(+)
create mode 100644 .chloggen/browser-resource-timing.yaml
create mode 100644 docs/browser/events.md
diff --git a/.chloggen/browser-resource-timing.yaml b/.chloggen/browser-resource-timing.yaml
new file mode 100644
index 0000000000..f6236372c3
--- /dev/null
+++ b/.chloggen/browser-resource-timing.yaml
@@ -0,0 +1,22 @@
+# Use this changelog template to create an entry for release notes.
+#
+# If your change doesn't affect end users you should instead start
+# your pull request title with [chore] or use the "Skip Changelog" label.
+
+# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
+change_type: new_component
+
+# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db)
+component: browser
+
+# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
+note: Add `browser.resource_timing` event.
+
+# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
+# The values here must be integers.
+issues: [1943]
+
+# (Optional) One or more lines of additional information to render under the primary note.
+# These lines will be padded with 2 spaces and then inserted directly into the document.
+# Use pipe (|) for multiline entries.
+subtext:
\ No newline at end of file
diff --git a/docs/browser/events.md b/docs/browser/events.md
new file mode 100644
index 0000000000..8eef764ccf
--- /dev/null
+++ b/docs/browser/events.md
@@ -0,0 +1,100 @@
+
+
+# Semantic conventions for browser events
+
+**Status**: [Development][DocumentStatus]
+
+This document defines semantic conventions for browser (web) instrumentations
+that emit events.
+
+## WebVital Event
+
+
+
+
+
+
+
+
+**Status:** 
+
+The event name MUST be `browser.web_vital`.
+
+This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).
+
+**Body fields:**
+
+:warning: Body fields will be moved to complex attributes once the
+semantic convention tooling supports complex attributes
+(see [#1870](https://github.com/open-telemetry/semantic-conventions/issues/1870)).
+
+| Body Field | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+|---|---|---|---|---|---|
+| `delta` | double | The delta between the current value and the last-reported value. See [delta](https://github.com/GoogleChrome/web-vitals?tab=readme-ov-file#report-only-the-delta-of-changes). | `0.2` | `Required` |  |
+| `id` | string | A unique ID representing this particular metric instance. | `v3-1677874579383-6381583661209` | `Required` |  |
+| `name` | enum | Name of the web vital. | `cls` | `Required` |  |
+| `value` | double | Value of the web vital. | `1.0` | `Required` |  |
+
+`name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+|---|---|---|
+| `cls` | Cumulative Layout Shift. See [cls](https://web.dev/articles/cls). |  |
+| `fid` | First Input Delay. See [fid](https://web.dev/articles/fid). |  |
+| `inp` | Interation to Next Paint. See [inp](https://web.dev/articles/inp). |  |
+| `lcp` | Largest Contentful Paint. See [lcp](https://web.dev/articles/lcp). |  |
+
+
+
+
+
+
+## Resource Timing Event
+
+
+
+
+
+
+
+
+**Status:** 
+
+The event name MUST be `browser.resource_timing`.
+
+This event describes the timing metrics as provided by PerformanceResourceTiming Performance API. These metrics are related to fetching a resource, such as XMLHttpRequest, Fetch, sendBeacon APIs, SVG, image or script.
+
+This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/). It is recommended to be captured by using the PerformanceResourceTiming API. If the page starts unloading before the page loads, then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+|---|---|---|---|---|---|
+| [`url.full`](/docs/attributes-registry/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` | `Required` |  |
+
+**[1] `url.full`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+
+**Body fields:**
+
+:warning: Body fields will be moved to complex attributes once the
+semantic convention tooling supports complex attributes
+(see [#1870](https://github.com/open-telemetry/semantic-conventions/issues/1870)).
+
+| Body Field | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+|---|---|---|---|---|---|
+| `connectEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` | `Recommended` |  |
+| `connectStart` | double | The [time] (https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` | `Recommended` |  |
+| `domainLookupEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` | `Recommended` |  |
+| `domainLookupStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` | `Recommended` |  |
+| `fetchStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` | `Recommended` |  |
+| `requestStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts requesting the resource from the server, cache, or local resource, in milliseconds. See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart). | `506.70000000298023` | `Recommended` |  |
+| `responseEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` | `Recommended` |  |
+| `responseStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` | `Recommended` |  |
+| `secureConnectionStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` | `Recommended` |  |
+
+
+
+
+
+
+[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status
\ No newline at end of file
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index 00fedf7ee2..83d933be0f 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -52,3 +52,110 @@ groups:
brief: A unique ID representing this particular metric instance.
requirement_level: required
examples: ["v3-1677874579383-6381583661209"]
+ - id: event.browser.resource_timing
+ stability: development
+ type: event
+ name: browser.resource_timing
+ brief: >
+ This event describes the timing metrics as provided by PerformanceResourceTiming Performance API.
+ These metrics are related to fetching a resource, such as
+ XMLHttpRequest, Fetch, sendBeacon APIs, SVG, image or script.
+ note: >
+ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/).
+ It is recommended to be captured by using the PerformanceResourceTiming API.
+ If the page starts unloading before the page loads,
+ then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
+ attributes:
+ - ref: url.full
+ requirement_level: required
+ note: >
+ Generally the url doesn't include any query strings or any leading credentials,
+ and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d
+ would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+ body:
+ id: browser.resource_timing
+ requirement_level: required
+ stability: development
+ type: map
+ fields:
+ - id: fetchStart
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts to fetch the resource, in milliseconds.
+ See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart).
+ requirement_level: recommended
+ examples: [9.600000000558794]
+ - id: domainLookupStart
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts the domain name lookup for the resource, in milliseconds.
+ See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart).
+ requirement_level: recommended
+ examples: [100.6000000014901]
+ - id: domainLookupEnd
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser finishes the domain name lookup for the resource, in milliseconds.
+ See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd).
+ requirement_level: recommended
+ examples: [100.6000000014906]
+ - id: connectStart
+ type: double
+ stability: development
+ brief: >
+ The [time] (https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds.
+ See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart).
+ requirement_level: recommended
+ examples: [476.6000000014901]
+ - id: secureConnectionStart
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts the handshake process to secure the current connection, in milliseconds.
+ See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart).
+ requirement_level: recommended
+ examples: [476.6000000014903]
+ - id: connectEnd
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds.
+ See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd).
+ requirement_level: recommended
+ examples: [476.6000000014906]
+ - id: requestStart
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts requesting the resource from the server, cache, or local resource, in milliseconds.
+ See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart).
+ requirement_level: recommended
+ examples: [506.70000000298023]
+ - id: responseStart
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds.
+ See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart).
+ requirement_level: recommended
+ examples: [508.6000000014901]
+ - id: responseEnd
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first,
+ in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd).
+ requirement_level: recommended
+ examples: [510.6000000014906]
From 8c50e4243875126b4ee457cfd9dafafec38c40c0 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 15:48:58 -0800
Subject: [PATCH 02/17] Update
---
.chloggen/browser-resource-timing.yaml | 2 +-
model/browser/events.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/.chloggen/browser-resource-timing.yaml b/.chloggen/browser-resource-timing.yaml
index f6236372c3..336cfd0edd 100644
--- a/.chloggen/browser-resource-timing.yaml
+++ b/.chloggen/browser-resource-timing.yaml
@@ -14,7 +14,7 @@ note: Add `browser.resource_timing` event.
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
# The values here must be integers.
-issues: [1943]
+issues: [3069]
# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index 83d933be0f..e392b2e4f2 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -4,7 +4,7 @@ groups:
type: event
name: browser.web_vital
brief: >
- This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).
+ This event describes the website performance metrics introduced by Google. See [web vitals](https://web.dev/vitals).
body:
id: browser.web_vital
requirement_level: required
@@ -28,7 +28,7 @@ groups:
stability: development
- id: inp
value: 'inp'
- brief: Interation to Next Paint. See [inp](https://web.dev/articles/inp).
+ brief: Interaction to Next Paint. See [inp](https://web.dev/articles/inp).
stability: development
stability: development
brief: Name of the web vital.
@@ -109,9 +109,9 @@ groups:
type: double
stability: development
brief: >
- The [time] (https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds.
- See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart).
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds.
+ See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart).
requirement_level: recommended
examples: [476.6000000014901]
- id: secureConnectionStart
From ab692c446a3b6fd6ac914bb48c3906cfb352b3dd Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 15:59:31 -0800
Subject: [PATCH 03/17] Fix broken links
---
docs/browser/events.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/browser/events.md b/docs/browser/events.md
index 8eef764ccf..e317720fa3 100644
--- a/docs/browser/events.md
+++ b/docs/browser/events.md
@@ -43,7 +43,7 @@ semantic convention tooling supports complex attributes
|---|---|---|
| `cls` | Cumulative Layout Shift. See [cls](https://web.dev/articles/cls). |  |
| `fid` | First Input Delay. See [fid](https://web.dev/articles/fid). |  |
-| `inp` | Interation to Next Paint. See [inp](https://web.dev/articles/inp). |  |
+| `inp` | Interaction to Next Paint. See [inp](https://web.dev/articles/inp). |  |
| `lcp` | Largest Contentful Paint. See [lcp](https://web.dev/articles/lcp). |  |
@@ -70,7 +70,7 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|---|---|---|---|---|---|
-| [`url.full`](/docs/attributes-registry/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` | `Required` |  |
+| [`url.full`](/docs/registry/attributes/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` | `Required` |  |
**[1] `url.full`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
@@ -83,7 +83,7 @@ semantic convention tooling supports complex attributes
| Body Field | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|---|---|---|---|---|---|
| `connectEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` | `Recommended` |  |
-| `connectStart` | double | The [time] (https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` | `Recommended` |  |
+| `connectStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` | `Recommended` |  |
| `domainLookupEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` | `Recommended` |  |
| `domainLookupStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` | `Recommended` |  |
| `fetchStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` | `Recommended` |  |
From 2c6131b258e3b7c838753a32d512ca16c2d544f3 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 16:29:24 -0800
Subject: [PATCH 04/17] Lint, table format
---
.chloggen/browser-resource-timing.yaml | 4 +--
docs/browser/browser-events.md | 4 +--
docs/browser/events.md | 40 ++++++++++++++------------
3 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/.chloggen/browser-resource-timing.yaml b/.chloggen/browser-resource-timing.yaml
index 336cfd0edd..3ef7c23833 100644
--- a/.chloggen/browser-resource-timing.yaml
+++ b/.chloggen/browser-resource-timing.yaml
@@ -1,4 +1,4 @@
-# Use this changelog template to create an entry for release notes.
+# Use this changelog template to create an entry for release notes.
#
# If your change doesn't affect end users you should instead start
# your pull request title with [chore] or use the "Skip Changelog" label.
@@ -19,4 +19,4 @@ issues: [3069]
# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
-subtext:
\ No newline at end of file
+subtext:
diff --git a/docs/browser/browser-events.md b/docs/browser/browser-events.md
index c25a76fd3d..1698472a40 100644
--- a/docs/browser/browser-events.md
+++ b/docs/browser/browser-events.md
@@ -22,7 +22,7 @@ that emit events.
The event name MUST be `browser.web_vital`.
-This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).
+This event describes the website performance metrics introduced by Google. See [web vitals](https://web.dev/vitals).
**Body fields:**
@@ -43,7 +43,7 @@ semantic convention tooling supports complex attributes
|---|---|---|
| `cls` | Cumulative Layout Shift. See [cls](https://web.dev/articles/cls). |  |
| `fid` | First Input Delay. See [fid](https://web.dev/articles/fid). |  |
-| `inp` | Interation to Next Paint. See [inp](https://web.dev/articles/inp). |  |
+| `inp` | Interaction to Next Paint. See [inp](https://web.dev/articles/inp). |  |
| `lcp` | Largest Contentful Paint. See [lcp](https://web.dev/articles/lcp). |  |
diff --git a/docs/browser/events.md b/docs/browser/events.md
index e317720fa3..0d28cc0f43 100644
--- a/docs/browser/events.md
+++ b/docs/browser/events.md
@@ -22,7 +22,7 @@ that emit events.
The event name MUST be `browser.web_vital`.
-This event describes the website performance metrics introduced by Google, See [web vitals](https://web.dev/vitals).
+This event describes the website performance metrics introduced by Google. See [web vitals](https://web.dev/vitals).
**Body fields:**
@@ -30,12 +30,12 @@ This event describes the website performance metrics introduced by Google, See [
semantic convention tooling supports complex attributes
(see [#1870](https://github.com/open-telemetry/semantic-conventions/issues/1870)).
-| Body Field | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+| Field Name | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
-| `delta` | double | The delta between the current value and the last-reported value. See [delta](https://github.com/GoogleChrome/web-vitals?tab=readme-ov-file#report-only-the-delta-of-changes). | `0.2` | `Required` |  |
-| `id` | string | A unique ID representing this particular metric instance. | `v3-1677874579383-6381583661209` | `Required` |  |
-| `name` | enum | Name of the web vital. | `cls` | `Required` |  |
-| `value` | double | Value of the web vital. | `1.0` | `Required` |  |
+| `delta` |  | `Required` | double | The delta between the current value and the last-reported value. See [delta](https://github.com/GoogleChrome/web-vitals?tab=readme-ov-file#report-only-the-delta-of-changes). | `0.2` |
+| `id` |  | `Required` | string | A unique ID representing this particular metric instance. | `v3-1677874579383-6381583661209` |
+| `name` |  | `Required` | enum | Name of the web vital. | `cls` |
+| `value` |  | `Required` | double | Value of the web vital. | `1.0` |
`name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
@@ -68,9 +68,11 @@ This event describes the timing metrics as provided by PerformanceResourceTiming
This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/). It is recommended to be captured by using the PerformanceResourceTiming API. If the page starts unloading before the page loads, then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
-| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+**Attributes:**
+
+| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
-| [`url.full`](/docs/registry/attributes/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` | `Required` |  |
+| [`url.full`](/docs/registry/attributes/url.md) |  | `Required` | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` |
**[1] `url.full`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
@@ -80,21 +82,21 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
semantic convention tooling supports complex attributes
(see [#1870](https://github.com/open-telemetry/semantic-conventions/issues/1870)).
-| Body Field | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
+| Field Name | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
-| `connectEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` | `Recommended` |  |
-| `connectStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` | `Recommended` |  |
-| `domainLookupEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` | `Recommended` |  |
-| `domainLookupStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` | `Recommended` |  |
-| `fetchStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` | `Recommended` |  |
-| `requestStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts requesting the resource from the server, cache, or local resource, in milliseconds. See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart). | `506.70000000298023` | `Recommended` |  |
-| `responseEnd` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` | `Recommended` |  |
-| `responseStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` | `Recommended` |  |
-| `secureConnectionStart` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` | `Recommended` |  |
+| `connectEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` |
+| `connectStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` |
+| `domainLookupEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` |
+| `domainLookupStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` |
+| `fetchStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` |
+| `requestStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts requesting the resource from the server, cache, or local resource, in milliseconds. See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart). | `506.70000000298023` |
+| `responseEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` |
+| `responseStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` |
+| `secureConnectionStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` |
-[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status
\ No newline at end of file
+[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status
From 1ec403b0ffd52686c97e75e4050d3b8981f80380 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 16:47:12 -0800
Subject: [PATCH 05/17] Update
---
docs/browser/events.md | 42 ------------------------------------------
1 file changed, 42 deletions(-)
diff --git a/docs/browser/events.md b/docs/browser/events.md
index 0d28cc0f43..e465614f0f 100644
--- a/docs/browser/events.md
+++ b/docs/browser/events.md
@@ -9,48 +9,6 @@ linkTitle: Events
This document defines semantic conventions for browser (web) instrumentations
that emit events.
-## WebVital Event
-
-
-
-
-
-
-
-
-**Status:** 
-
-The event name MUST be `browser.web_vital`.
-
-This event describes the website performance metrics introduced by Google. See [web vitals](https://web.dev/vitals).
-
-**Body fields:**
-
-:warning: Body fields will be moved to complex attributes once the
-semantic convention tooling supports complex attributes
-(see [#1870](https://github.com/open-telemetry/semantic-conventions/issues/1870)).
-
-| Field Name | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
-|---|---|---|---|---|---|
-| `delta` |  | `Required` | double | The delta between the current value and the last-reported value. See [delta](https://github.com/GoogleChrome/web-vitals?tab=readme-ov-file#report-only-the-delta-of-changes). | `0.2` |
-| `id` |  | `Required` | string | A unique ID representing this particular metric instance. | `v3-1677874579383-6381583661209` |
-| `name` |  | `Required` | enum | Name of the web vital. | `cls` |
-| `value` |  | `Required` | double | Value of the web vital. | `1.0` |
-
-`name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
-
-| Value | Description | Stability |
-|---|---|---|
-| `cls` | Cumulative Layout Shift. See [cls](https://web.dev/articles/cls). |  |
-| `fid` | First Input Delay. See [fid](https://web.dev/articles/fid). |  |
-| `inp` | Interaction to Next Paint. See [inp](https://web.dev/articles/inp). |  |
-| `lcp` | Largest Contentful Paint. See [lcp](https://web.dev/articles/lcp). |  |
-
-
-
-
-
-
## Resource Timing Event
From 323795071110f01008a6fc4da923fd5cc7aeb7b2 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 16:52:57 -0800
Subject: [PATCH 06/17] Moved URL to body field
---
docs/browser/events.md | 11 +++--------
model/browser/events.yaml | 18 +++++++++++-------
2 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/docs/browser/events.md b/docs/browser/events.md
index e465614f0f..89436f8977 100644
--- a/docs/browser/events.md
+++ b/docs/browser/events.md
@@ -26,14 +26,6 @@ This event describes the timing metrics as provided by PerformanceResourceTiming
This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/). It is recommended to be captured by using the PerformanceResourceTiming API. If the page starts unloading before the page loads, then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
-**Attributes:**
-
-| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
-|---|---|---|---|---|---|
-| [`url.full`](/docs/registry/attributes/url.md) |  | `Required` | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.foo.bar/search?q=OpenTelemetry#SemConv`; `//localhost` |
-
-**[1] `url.full`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
-
**Body fields:**
:warning: Body fields will be moved to complex attributes once the
@@ -42,6 +34,7 @@ semantic convention tooling supports complex attributes
| Field Name | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
+| `url` |  | `Required` | string | The full URL of the resource being fetched. [1] | `https://www.example.com/path`; `//localhost` |
| `connectEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` |
| `connectStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` |
| `domainLookupEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` |
@@ -52,6 +45,8 @@ semantic convention tooling supports complex attributes
| `responseStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` |
| `secureConnectionStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` |
+**[1] `url`:** This is the URL of the resource being measured, not the page URL. Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index e392b2e4f2..1952cbc2c0 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -65,19 +65,23 @@ groups:
It is recommended to be captured by using the PerformanceResourceTiming API.
If the page starts unloading before the page loads,
then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
- attributes:
- - ref: url.full
- requirement_level: required
- note: >
- Generally the url doesn't include any query strings or any leading credentials,
- and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d
- would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
body:
id: browser.resource_timing
requirement_level: required
stability: development
type: map
fields:
+ - id: url
+ type: string
+ stability: development
+ brief: The full URL of the resource being fetched.
+ requirement_level: required
+ examples: ["https://www.example.com/path", "//localhost"]
+ note: >
+ This is the URL of the resource being measured, not the page URL.
+ Generally the url doesn't include any query strings or any leading credentials,
+ and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d
+ would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
- id: fetchStart
type: double
stability: development
From 2be2a9db08f154965efc3e55b248e0f9ae0167ad Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Tue, 11 Nov 2025 17:04:26 -0800
Subject: [PATCH 07/17] Update
---
docs/browser/events.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/browser/events.md b/docs/browser/events.md
index 89436f8977..5d6dee33bd 100644
--- a/docs/browser/events.md
+++ b/docs/browser/events.md
@@ -34,7 +34,6 @@ semantic convention tooling supports complex attributes
| Field Name | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
-| `url` |  | `Required` | string | The full URL of the resource being fetched. [1] | `https://www.example.com/path`; `//localhost` |
| `connectEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` |
| `connectStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` |
| `domainLookupEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` |
@@ -44,8 +43,9 @@ semantic convention tooling supports complex attributes
| `responseEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` |
| `responseStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` |
| `secureConnectionStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` |
+| `url` |  | `Required` | string | The full URL of the resource being fetched. [1] | `https://www.example.com/path`; `//localhost` |
-**[1] `url`:** This is the URL of the resource being measured, not the page URL. Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+**[1]:** This is the URL of the resource being measured, not the page URL. Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
From 284d653ba927fd55cceaa0ee5ae5fe061c4bda7e Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Thu, 13 Nov 2025 12:49:13 -0800
Subject: [PATCH 08/17] Removing username/password from example
---
model/browser/events.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index 1952cbc2c0..e5f48b714a 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -80,7 +80,7 @@ groups:
note: >
This is the URL of the resource being measured, not the page URL.
Generally the url doesn't include any query strings or any leading credentials,
- and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d
+ and it's formatted as scheme://full domain/path only, for example https://www.example.com/path?a=b&c=d
would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
- id: fetchStart
type: double
From e7355506c1b4b27f76c82904a1c50f14931ff9c3 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Thu, 13 Nov 2025 13:24:09 -0800
Subject: [PATCH 09/17] Use complex attributes instead of body Add canonical
URL and URL query
---
docs/browser/events.md | 35 ++++---
model/browser/events.yaml | 204 ++++++++++++++++++++------------------
2 files changed, 123 insertions(+), 116 deletions(-)
diff --git a/docs/browser/events.md b/docs/browser/events.md
index 5d6dee33bd..bcf091b783 100644
--- a/docs/browser/events.md
+++ b/docs/browser/events.md
@@ -26,26 +26,25 @@ This event describes the timing metrics as provided by PerformanceResourceTiming
This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/). It is recommended to be captured by using the PerformanceResourceTiming API. If the page starts unloading before the page loads, then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
-**Body fields:**
+**Attributes:**
-:warning: Body fields will be moved to complex attributes once the
-semantic convention tooling supports complex attributes
-(see [#1870](https://github.com/open-telemetry/semantic-conventions/issues/1870)).
-
-| Field Name | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
+| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
-| `connectEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` |
-| `connectStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` |
-| `domainLookupEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` |
-| `domainLookupStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` |
-| `fetchStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` |
-| `requestStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts requesting the resource from the server, cache, or local resource, in milliseconds. See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart). | `506.70000000298023` |
-| `responseEnd` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` |
-| `responseStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` |
-| `secureConnectionStart` |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` |
-| `url` |  | `Required` | string | The full URL of the resource being fetched. [1] | `https://www.example.com/path`; `//localhost` |
-
-**[1]:** This is the URL of the resource being measured, not the page URL. Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+| [`browser.resource_timing.url.canonical`](attributes/.md) |  | `Required` | string | The canonical URL of the resource, consisting of scheme, domain, and path. [1] | `https://www.example.com/path`; `https://cdn.example.com/assets/image.png`; `//localhost/api/resource` |
+| [`browser.resource_timing.connect_end`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` |
+| [`browser.resource_timing.connect_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` |
+| [`browser.resource_timing.domain_lookup_end`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` |
+| [`browser.resource_timing.domain_lookup_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` |
+| [`browser.resource_timing.fetch_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` |
+| [`browser.resource_timing.request_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts requesting the resource from the server, cache, or local resource, in milliseconds. See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart). | `506.70000000298023` |
+| [`browser.resource_timing.response_end`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` |
+| [`browser.resource_timing.response_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` |
+| [`browser.resource_timing.secure_connection_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` |
+| [`browser.resource_timing.url.query`](attributes/.md) |  | `Opt-In` | string | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component of the resource URL. [2] | `size=large`; `format=webp`; `width=800&height=600` |
+
+**[1] `browser.resource_timing.url.canonical`:** This is the canonical URL of the resource being measured, not the page URL. It represents the resource in its standard form for identification purposes. The canonical URL includes the scheme (if present), full domain, and path only. Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII. For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`. In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
+
+**[2] `browser.resource_timing.url.query`:** This attribute is opt-in due to potential high cardinality and PII concerns. Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it. Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index e5f48b714a..67e5911040 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -65,101 +65,109 @@ groups:
It is recommended to be captured by using the PerformanceResourceTiming API.
If the page starts unloading before the page loads,
then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
- body:
- id: browser.resource_timing
- requirement_level: required
- stability: development
- type: map
- fields:
- - id: url
- type: string
- stability: development
- brief: The full URL of the resource being fetched.
- requirement_level: required
- examples: ["https://www.example.com/path", "//localhost"]
- note: >
- This is the URL of the resource being measured, not the page URL.
- Generally the url doesn't include any query strings or any leading credentials,
- and it's formatted as scheme://full domain/path only, for example https://www.example.com/path?a=b&c=d
- would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
- - id: fetchStart
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts to fetch the resource, in milliseconds.
- See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart).
- requirement_level: recommended
- examples: [9.600000000558794]
- - id: domainLookupStart
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts the domain name lookup for the resource, in milliseconds.
- See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart).
- requirement_level: recommended
- examples: [100.6000000014901]
- - id: domainLookupEnd
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser finishes the domain name lookup for the resource, in milliseconds.
- See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd).
- requirement_level: recommended
- examples: [100.6000000014906]
- - id: connectStart
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds.
- See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart).
- requirement_level: recommended
- examples: [476.6000000014901]
- - id: secureConnectionStart
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts the handshake process to secure the current connection, in milliseconds.
- See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart).
- requirement_level: recommended
- examples: [476.6000000014903]
- - id: connectEnd
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds.
- See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd).
- requirement_level: recommended
- examples: [476.6000000014906]
- - id: requestStart
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts requesting the resource from the server, cache, or local resource, in milliseconds.
- See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart).
- requirement_level: recommended
- examples: [506.70000000298023]
- - id: responseStart
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds.
- See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart).
- requirement_level: recommended
- examples: [508.6000000014901]
- - id: responseEnd
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first,
- in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd).
- requirement_level: recommended
- examples: [510.6000000014906]
+ attributes:
+ - id: browser.resource_timing.url.canonical
+ type: string
+ stability: development
+ brief: The canonical URL of the resource, consisting of scheme, domain, and path.
+ requirement_level: required
+ examples: ["https://www.example.com/path", "https://cdn.example.com/assets/image.png", "//localhost/api/resource"]
+ note: >
+ This is the canonical URL of the resource being measured, not the page URL.
+ It represents the resource in its standard form for identification purposes.
+ The canonical URL includes the scheme (if present), full domain, and path only.
+ Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII.
+ For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`.
+ In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
+ - id: browser.resource_timing.url.query
+ type: string
+ stability: development
+ brief: >
+ The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component of the resource URL.
+ requirement_level: opt_in
+ examples: ["size=large", "format=webp", "width=800&height=600"]
+ note: >
+ This attribute is opt-in due to potential high cardinality and PII concerns.
+ Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it.
+ Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
+ - id: browser.resource_timing.fetch_start
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts to fetch the resource, in milliseconds.
+ See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart).
+ requirement_level: recommended
+ examples: [9.600000000558794]
+ - id: browser.resource_timing.domain_lookup_start
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts the domain name lookup for the resource, in milliseconds.
+ See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart).
+ requirement_level: recommended
+ examples: [100.6000000014901]
+ - id: browser.resource_timing.domain_lookup_end
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser finishes the domain name lookup for the resource, in milliseconds.
+ See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd).
+ requirement_level: recommended
+ examples: [100.6000000014906]
+ - id: browser.resource_timing.connect_start
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds.
+ See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart).
+ requirement_level: recommended
+ examples: [476.6000000014901]
+ - id: browser.resource_timing.secure_connection_start
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts the handshake process to secure the current connection, in milliseconds.
+ See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart).
+ requirement_level: recommended
+ examples: [476.6000000014903]
+ - id: browser.resource_timing.connect_end
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds.
+ See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd).
+ requirement_level: recommended
+ examples: [476.6000000014906]
+ - id: browser.resource_timing.request_start
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
+ the browser starts requesting the resource from the server, cache, or local resource, in milliseconds.
+ See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart).
+ requirement_level: recommended
+ examples: [506.70000000298023]
+ - id: browser.resource_timing.response_start
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds.
+ See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart).
+ requirement_level: recommended
+ examples: [508.6000000014901]
+ - id: browser.resource_timing.response_end
+ type: double
+ stability: development
+ brief: >
+ The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
+ the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first,
+ in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd).
+ requirement_level: recommended
+ examples: [510.6000000014906]
From dbc3d14638da5b0f08d6bf615cd4040c187a6282 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Thu, 13 Nov 2025 13:40:02 -0800
Subject: [PATCH 10/17] Fix lint, add attributes in registry
---
docs/attribute_registry/attributes/browser.md | 71 ++++++++++++++
model/browser/events.yaml | 94 +++---------------
model/browser/registry.yaml | 97 +++++++++++++++++++
3 files changed, 179 insertions(+), 83 deletions(-)
create mode 100644 docs/attribute_registry/attributes/browser.md
diff --git a/docs/attribute_registry/attributes/browser.md b/docs/attribute_registry/attributes/browser.md
new file mode 100644
index 0000000000..34450ba740
--- /dev/null
+++ b/docs/attribute_registry/attributes/browser.md
@@ -0,0 +1,71 @@
+
+
+
+# Browser
+
+- [Browser Attributes](#browser-attributes)
+- [Browser Resource Timing Attributes](#browser-resource-timing-attributes)
+
+## Browser Attributes
+
+The web browser attributes
+
+**Attributes:**
+
+| Key | Stability | Value Type | Description | Example Values |
+|---|---|---|---|---|
+| `browser.brands` |  | string[] | Array of brand name and version separated by a space [1] | `[" Not A;Brand 99", "Chromium 99", "Chrome 99"]` |
+| `browser.language` |  | string | Preferred language of the user using the browser [2] | `en`; `en-US`; `fr`; `fr-FR` |
+| `browser.mobile` |  | boolean | A boolean that is true if the browser is running on a mobile device [3] | |
+| `browser.platform` |  | string | The platform on which the browser is running [4] | `Windows`; `macOS`; `Android` |
+
+**[1] `browser.brands`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).
+
+**[2] `browser.language`:** This value is intended to be taken from the Navigator API `navigator.language`.
+
+**[3] `browser.mobile`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset.
+
+**[4] `browser.platform`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
+The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.
+
+## Browser Resource Timing Attributes
+
+Attributes for browser resource timing events
+
+**Attributes:**
+
+| Key | Stability | Value Type | Description | Example Values |
+|---|---|---|---|---|
+| `browser.resource_timing.connect_end` |  | double | Time immediately after the browser completes establishing the connection to the server [5] | `145.7`; `275.2` |
+| `browser.resource_timing.connect_start` |  | double | Time immediately before the browser starts to establish the connection to the server [6] | `131.0`; `261.3` |
+| `browser.resource_timing.domain_lookup_end` |  | double | Time immediately after the browser completes the domain name lookup for the resource [7] | `130.2`; `260.5` |
+| `browser.resource_timing.domain_lookup_start` |  | double | Time immediately before the browser starts the domain name lookup for the resource [8] | `125.3`; `255.8` |
+| `browser.resource_timing.fetch_start` |  | double | Time immediately before the browser starts to fetch the resource [9] | `120.5`; `250.75` |
+| `browser.resource_timing.request_start` |  | double | Time immediately before the browser starts requesting the resource from the server [10] | `146.0`; `276.0` |
+| `browser.resource_timing.response_end` |  | double | Time immediately after the browser receives the last byte of the resource [11] | `220.3`; `350.5` |
+| `browser.resource_timing.response_start` |  | double | Time immediately after the browser receives the first byte of the response from the server [12] | `180.5`; `310.8` |
+| `browser.resource_timing.secure_connection_start` |  | double | Time immediately before the browser starts the handshake process to secure the connection [13] | `132.5`; `262.8` |
+| `browser.resource_timing.url.canonical` |  | string | The canonical URL of the resource, excluding query parameters and credentials [14] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
+| `browser.resource_timing.url.query` |  | string | The query string component of the resource URL [15] | `?version=1.2.3`; `?id=abc123&type=json` |
+
+**[5] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
+
+**[6] `browser.resource_timing.connect_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
+
+**[7] `browser.resource_timing.domain_lookup_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
+
+**[8] `browser.resource_timing.domain_lookup_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
+
+**[9] `browser.resource_timing.fetch_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
+
+**[10] `browser.resource_timing.request_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
+
+**[11] `browser.resource_timing.response_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
+
+**[12] `browser.resource_timing.response_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
+
+**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
+
+**[14] `browser.resource_timing.url.canonical`:** The canonical URL includes scheme, domain, and path components only. Query parameters and URL fragments MUST be excluded. User credentials (username and password) MUST be excluded.
+
+**[15] `browser.resource_timing.url.query`:** The query string includes the leading `?` character. This attribute is opt-in as it may contain sensitive information.
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index 67e5911040..dba04e1fa4 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -66,12 +66,8 @@ groups:
If the page starts unloading before the page loads,
then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
attributes:
- - id: browser.resource_timing.url.canonical
- type: string
- stability: development
- brief: The canonical URL of the resource, consisting of scheme, domain, and path.
+ - ref: browser.resource_timing.url.canonical
requirement_level: required
- examples: ["https://www.example.com/path", "https://cdn.example.com/assets/image.png", "//localhost/api/resource"]
note: >
This is the canonical URL of the resource being measured, not the page URL.
It represents the resource in its standard form for identification purposes.
@@ -79,95 +75,27 @@ groups:
Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII.
For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`.
In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
- - id: browser.resource_timing.url.query
- type: string
- stability: development
- brief: >
- The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component of the resource URL.
+ - ref: browser.resource_timing.url.query
requirement_level: opt_in
- examples: ["size=large", "format=webp", "width=800&height=600"]
note: >
This attribute is opt-in due to potential high cardinality and PII concerns.
Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it.
Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
- - id: browser.resource_timing.fetch_start
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts to fetch the resource, in milliseconds.
- See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart).
+ - ref: browser.resource_timing.fetch_start
requirement_level: recommended
- examples: [9.600000000558794]
- - id: browser.resource_timing.domain_lookup_start
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts the domain name lookup for the resource, in milliseconds.
- See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart).
+ - ref: browser.resource_timing.domain_lookup_start
requirement_level: recommended
- examples: [100.6000000014901]
- - id: browser.resource_timing.domain_lookup_end
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser finishes the domain name lookup for the resource, in milliseconds.
- See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd).
+ - ref: browser.resource_timing.domain_lookup_end
requirement_level: recommended
- examples: [100.6000000014906]
- - id: browser.resource_timing.connect_start
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds.
- See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart).
+ - ref: browser.resource_timing.connect_start
requirement_level: recommended
- examples: [476.6000000014901]
- - id: browser.resource_timing.secure_connection_start
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts the handshake process to secure the current connection, in milliseconds.
- See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart).
+ - ref: browser.resource_timing.secure_connection_start
requirement_level: recommended
- examples: [476.6000000014903]
- - id: browser.resource_timing.connect_end
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds.
- See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd).
+ - ref: browser.resource_timing.connect_end
requirement_level: recommended
- examples: [476.6000000014906]
- - id: browser.resource_timing.request_start
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before
- the browser starts requesting the resource from the server, cache, or local resource, in milliseconds.
- See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart).
+ - ref: browser.resource_timing.request_start
requirement_level: recommended
- examples: [506.70000000298023]
- - id: browser.resource_timing.response_start
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds.
- See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart).
+ - ref: browser.resource_timing.response_start
requirement_level: recommended
- examples: [508.6000000014901]
- - id: browser.resource_timing.response_end
- type: double
- stability: development
- brief: >
- The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after
- the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first,
- in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd).
+ - ref: browser.resource_timing.response_end
requirement_level: recommended
- examples: [510.6000000014906]
diff --git a/model/browser/registry.yaml b/model/browser/registry.yaml
index 040f2d6838..98e58fe58c 100644
--- a/model/browser/registry.yaml
+++ b/model/browser/registry.yaml
@@ -50,3 +50,100 @@ groups:
This value is intended to be taken from the Navigator API
`navigator.language`.
examples: ["en", "en-US", "fr", "fr-FR"]
+
+ - id: registry.browser.resource_timing
+ type: attribute_group
+ display_name: Browser Resource Timing Attributes
+ brief: >
+ Attributes for browser resource timing events
+ attributes:
+ - id: browser.resource_timing.url.canonical
+ type: string
+ stability: development
+ brief: 'The canonical URL of the resource, excluding query parameters and credentials'
+ note: >
+ The canonical URL includes scheme, domain, and path components only.
+ Query parameters and URL fragments MUST be excluded. User credentials
+ (username and password) MUST be excluded.
+ examples: ['https://example.com/path/to/resource.js', 'https://cdn.example.com/styles/main.css']
+ - id: browser.resource_timing.url.query
+ type: string
+ stability: development
+ brief: 'The query string component of the resource URL'
+ note: >
+ The query string includes the leading `?` character.
+ This attribute is opt-in as it may contain sensitive information.
+ examples: ['?version=1.2.3', '?id=abc123&type=json']
+ - id: browser.resource_timing.fetch_start
+ type: double
+ stability: development
+ brief: 'Time immediately before the browser starts to fetch the resource'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
+ examples: [120.5, 250.75]
+ - id: browser.resource_timing.domain_lookup_start
+ type: double
+ stability: development
+ brief: 'Time immediately before the browser starts the domain name lookup for the resource'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
+ examples: [125.3, 255.8]
+ - id: browser.resource_timing.domain_lookup_end
+ type: double
+ stability: development
+ brief: 'Time immediately after the browser completes the domain name lookup for the resource'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
+ examples: [130.2, 260.5]
+ - id: browser.resource_timing.connect_start
+ type: double
+ stability: development
+ brief: 'Time immediately before the browser starts to establish the connection to the server'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
+ examples: [131.0, 261.3]
+ - id: browser.resource_timing.secure_connection_start
+ type: double
+ stability: development
+ brief: 'Time immediately before the browser starts the handshake process to secure the connection'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ If the scheme is not HTTPS, this value is 0.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
+ examples: [132.5, 262.8]
+ - id: browser.resource_timing.connect_end
+ type: double
+ stability: development
+ brief: 'Time immediately after the browser completes establishing the connection to the server'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
+ examples: [145.7, 275.2]
+ - id: browser.resource_timing.request_start
+ type: double
+ stability: development
+ brief: 'Time immediately before the browser starts requesting the resource from the server'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
+ examples: [146.0, 276.0]
+ - id: browser.resource_timing.response_start
+ type: double
+ stability: development
+ brief: 'Time immediately after the browser receives the first byte of the response from the server'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
+ examples: [180.5, 310.8]
+ - id: browser.resource_timing.response_end
+ type: double
+ stability: development
+ brief: 'Time immediately after the browser receives the last byte of the resource'
+ note: >
+ Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin.
+ See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
+ examples: [220.3, 350.5]
From 46474cea444ec8356b25f92d739b4a220465ba0c Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Thu, 13 Nov 2025 13:45:59 -0800
Subject: [PATCH 11/17] Add browser attributes
---
docs/attributes/browser.md | 71 ++++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 docs/attributes/browser.md
diff --git a/docs/attributes/browser.md b/docs/attributes/browser.md
new file mode 100644
index 0000000000..34450ba740
--- /dev/null
+++ b/docs/attributes/browser.md
@@ -0,0 +1,71 @@
+
+
+
+# Browser
+
+- [Browser Attributes](#browser-attributes)
+- [Browser Resource Timing Attributes](#browser-resource-timing-attributes)
+
+## Browser Attributes
+
+The web browser attributes
+
+**Attributes:**
+
+| Key | Stability | Value Type | Description | Example Values |
+|---|---|---|---|---|
+| `browser.brands` |  | string[] | Array of brand name and version separated by a space [1] | `[" Not A;Brand 99", "Chromium 99", "Chrome 99"]` |
+| `browser.language` |  | string | Preferred language of the user using the browser [2] | `en`; `en-US`; `fr`; `fr-FR` |
+| `browser.mobile` |  | boolean | A boolean that is true if the browser is running on a mobile device [3] | |
+| `browser.platform` |  | string | The platform on which the browser is running [4] | `Windows`; `macOS`; `Android` |
+
+**[1] `browser.brands`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).
+
+**[2] `browser.language`:** This value is intended to be taken from the Navigator API `navigator.language`.
+
+**[3] `browser.mobile`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset.
+
+**[4] `browser.platform`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
+The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.
+
+## Browser Resource Timing Attributes
+
+Attributes for browser resource timing events
+
+**Attributes:**
+
+| Key | Stability | Value Type | Description | Example Values |
+|---|---|---|---|---|
+| `browser.resource_timing.connect_end` |  | double | Time immediately after the browser completes establishing the connection to the server [5] | `145.7`; `275.2` |
+| `browser.resource_timing.connect_start` |  | double | Time immediately before the browser starts to establish the connection to the server [6] | `131.0`; `261.3` |
+| `browser.resource_timing.domain_lookup_end` |  | double | Time immediately after the browser completes the domain name lookup for the resource [7] | `130.2`; `260.5` |
+| `browser.resource_timing.domain_lookup_start` |  | double | Time immediately before the browser starts the domain name lookup for the resource [8] | `125.3`; `255.8` |
+| `browser.resource_timing.fetch_start` |  | double | Time immediately before the browser starts to fetch the resource [9] | `120.5`; `250.75` |
+| `browser.resource_timing.request_start` |  | double | Time immediately before the browser starts requesting the resource from the server [10] | `146.0`; `276.0` |
+| `browser.resource_timing.response_end` |  | double | Time immediately after the browser receives the last byte of the resource [11] | `220.3`; `350.5` |
+| `browser.resource_timing.response_start` |  | double | Time immediately after the browser receives the first byte of the response from the server [12] | `180.5`; `310.8` |
+| `browser.resource_timing.secure_connection_start` |  | double | Time immediately before the browser starts the handshake process to secure the connection [13] | `132.5`; `262.8` |
+| `browser.resource_timing.url.canonical` |  | string | The canonical URL of the resource, excluding query parameters and credentials [14] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
+| `browser.resource_timing.url.query` |  | string | The query string component of the resource URL [15] | `?version=1.2.3`; `?id=abc123&type=json` |
+
+**[5] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
+
+**[6] `browser.resource_timing.connect_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
+
+**[7] `browser.resource_timing.domain_lookup_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
+
+**[8] `browser.resource_timing.domain_lookup_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
+
+**[9] `browser.resource_timing.fetch_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
+
+**[10] `browser.resource_timing.request_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
+
+**[11] `browser.resource_timing.response_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
+
+**[12] `browser.resource_timing.response_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
+
+**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
+
+**[14] `browser.resource_timing.url.canonical`:** The canonical URL includes scheme, domain, and path components only. Query parameters and URL fragments MUST be excluded. User credentials (username and password) MUST be excluded.
+
+**[15] `browser.resource_timing.url.query`:** The query string includes the leading `?` character. This attribute is opt-in as it may contain sensitive information.
From ac3f365524ec9650ccfae41f502b810f95a0afbc Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Thu, 13 Nov 2025 14:25:08 -0800
Subject: [PATCH 12/17] Update
---
docs/attributes/browser.md | 71 ----------------------------------
docs/browser/browser-events.md | 60 ++++++++++++++++++++++++++++
docs/browser/events.md | 54 --------------------------
3 files changed, 60 insertions(+), 125 deletions(-)
delete mode 100644 docs/attributes/browser.md
delete mode 100644 docs/browser/events.md
diff --git a/docs/attributes/browser.md b/docs/attributes/browser.md
deleted file mode 100644
index 34450ba740..0000000000
--- a/docs/attributes/browser.md
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-# Browser
-
-- [Browser Attributes](#browser-attributes)
-- [Browser Resource Timing Attributes](#browser-resource-timing-attributes)
-
-## Browser Attributes
-
-The web browser attributes
-
-**Attributes:**
-
-| Key | Stability | Value Type | Description | Example Values |
-|---|---|---|---|---|
-| `browser.brands` |  | string[] | Array of brand name and version separated by a space [1] | `[" Not A;Brand 99", "Chromium 99", "Chrome 99"]` |
-| `browser.language` |  | string | Preferred language of the user using the browser [2] | `en`; `en-US`; `fr`; `fr-FR` |
-| `browser.mobile` |  | boolean | A boolean that is true if the browser is running on a mobile device [3] | |
-| `browser.platform` |  | string | The platform on which the browser is running [4] | `Windows`; `macOS`; `Android` |
-
-**[1] `browser.brands`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).
-
-**[2] `browser.language`:** This value is intended to be taken from the Navigator API `navigator.language`.
-
-**[3] `browser.mobile`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset.
-
-**[4] `browser.platform`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
-The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.
-
-## Browser Resource Timing Attributes
-
-Attributes for browser resource timing events
-
-**Attributes:**
-
-| Key | Stability | Value Type | Description | Example Values |
-|---|---|---|---|---|
-| `browser.resource_timing.connect_end` |  | double | Time immediately after the browser completes establishing the connection to the server [5] | `145.7`; `275.2` |
-| `browser.resource_timing.connect_start` |  | double | Time immediately before the browser starts to establish the connection to the server [6] | `131.0`; `261.3` |
-| `browser.resource_timing.domain_lookup_end` |  | double | Time immediately after the browser completes the domain name lookup for the resource [7] | `130.2`; `260.5` |
-| `browser.resource_timing.domain_lookup_start` |  | double | Time immediately before the browser starts the domain name lookup for the resource [8] | `125.3`; `255.8` |
-| `browser.resource_timing.fetch_start` |  | double | Time immediately before the browser starts to fetch the resource [9] | `120.5`; `250.75` |
-| `browser.resource_timing.request_start` |  | double | Time immediately before the browser starts requesting the resource from the server [10] | `146.0`; `276.0` |
-| `browser.resource_timing.response_end` |  | double | Time immediately after the browser receives the last byte of the resource [11] | `220.3`; `350.5` |
-| `browser.resource_timing.response_start` |  | double | Time immediately after the browser receives the first byte of the response from the server [12] | `180.5`; `310.8` |
-| `browser.resource_timing.secure_connection_start` |  | double | Time immediately before the browser starts the handshake process to secure the connection [13] | `132.5`; `262.8` |
-| `browser.resource_timing.url.canonical` |  | string | The canonical URL of the resource, excluding query parameters and credentials [14] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
-| `browser.resource_timing.url.query` |  | string | The query string component of the resource URL [15] | `?version=1.2.3`; `?id=abc123&type=json` |
-
-**[5] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
-
-**[6] `browser.resource_timing.connect_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
-
-**[7] `browser.resource_timing.domain_lookup_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
-
-**[8] `browser.resource_timing.domain_lookup_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
-
-**[9] `browser.resource_timing.fetch_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
-
-**[10] `browser.resource_timing.request_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
-
-**[11] `browser.resource_timing.response_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
-
-**[12] `browser.resource_timing.response_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
-
-**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
-
-**[14] `browser.resource_timing.url.canonical`:** The canonical URL includes scheme, domain, and path components only. Query parameters and URL fragments MUST be excluded. User credentials (username and password) MUST be excluded.
-
-**[15] `browser.resource_timing.url.query`:** The query string includes the leading `?` character. This attribute is opt-in as it may contain sensitive information.
diff --git a/docs/browser/browser-events.md b/docs/browser/browser-events.md
index 1698472a40..917b2c32db 100644
--- a/docs/browser/browser-events.md
+++ b/docs/browser/browser-events.md
@@ -51,4 +51,64 @@ semantic convention tooling supports complex attributes
+## Resource Timing Event
+
+
+
+
+
+
+
+
+**Status:** 
+
+The event name MUST be `browser.resource_timing`.
+
+This event describes the timing metrics as provided by PerformanceResourceTiming Performance API. These metrics are related to fetching a resource, such as XMLHttpRequest, Fetch, sendBeacon APIs, SVG, image or script.
+
+This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/). It is recommended to be captured by using the PerformanceResourceTiming API. If the page starts unloading before the page loads, then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
+
+**Attributes:**
+
+| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
+|---|---|---|---|---|---|
+| [`browser.resource_timing.url.canonical`](/docs/registry/attributes/browser.md) |  | `Required` | string | The canonical URL of the resource, excluding query parameters and credentials [1] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
+| [`browser.resource_timing.connect_end`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser completes establishing the connection to the server [2] | `145.7`; `275.2` |
+| [`browser.resource_timing.connect_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts to establish the connection to the server [3] | `131.0`; `261.3` |
+| [`browser.resource_timing.domain_lookup_end`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser completes the domain name lookup for the resource [4] | `130.2`; `260.5` |
+| [`browser.resource_timing.domain_lookup_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts the domain name lookup for the resource [5] | `125.3`; `255.8` |
+| [`browser.resource_timing.fetch_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts to fetch the resource [6] | `120.5`; `250.75` |
+| [`browser.resource_timing.request_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts requesting the resource from the server [7] | `146.0`; `276.0` |
+| [`browser.resource_timing.response_end`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser receives the last byte of the resource [8] | `220.3`; `350.5` |
+| [`browser.resource_timing.response_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser receives the first byte of the response from the server [9] | `180.5`; `310.8` |
+| [`browser.resource_timing.secure_connection_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts the handshake process to secure the connection [10] | `132.5`; `262.8` |
+| [`browser.resource_timing.url.query`](/docs/registry/attributes/browser.md) |  | `Opt-In` | string | The query string component of the resource URL [11] | `?version=1.2.3`; `?id=abc123&type=json` |
+
+**[1] `browser.resource_timing.url.canonical`:** This is the canonical URL of the resource being measured, not the page URL. It represents the resource in its standard form for identification purposes. The canonical URL includes the scheme (if present), full domain, and path only. Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII. For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`. In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
+
+**[2] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
+
+**[3] `browser.resource_timing.connect_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
+
+**[4] `browser.resource_timing.domain_lookup_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
+
+**[5] `browser.resource_timing.domain_lookup_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
+
+**[6] `browser.resource_timing.fetch_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
+
+**[7] `browser.resource_timing.request_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
+
+**[8] `browser.resource_timing.response_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
+
+**[9] `browser.resource_timing.response_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
+
+**[10] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
+
+**[11] `browser.resource_timing.url.query`:** This attribute is opt-in due to potential high cardinality and PII concerns. Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it. Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
+
+
+
+
+
+
[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status
diff --git a/docs/browser/events.md b/docs/browser/events.md
deleted file mode 100644
index bcf091b783..0000000000
--- a/docs/browser/events.md
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-# Semantic conventions for browser events
-
-**Status**: [Development][DocumentStatus]
-
-This document defines semantic conventions for browser (web) instrumentations
-that emit events.
-
-## Resource Timing Event
-
-
-
-
-
-
-
-
-**Status:** 
-
-The event name MUST be `browser.resource_timing`.
-
-This event describes the timing metrics as provided by PerformanceResourceTiming Performance API. These metrics are related to fetching a resource, such as XMLHttpRequest, Fetch, sendBeacon APIs, SVG, image or script.
-
-This event captures data from the [ResourceTiming](https://www.w3.org/TR/resource-timing/). It is recommended to be captured by using the PerformanceResourceTiming API. If the page starts unloading before the page loads, then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
-
-**Attributes:**
-
-| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
-|---|---|---|---|---|---|
-| [`browser.resource_timing.url.canonical`](attributes/.md) |  | `Required` | string | The canonical URL of the resource, consisting of scheme, domain, and path. [1] | `https://www.example.com/path`; `https://cdn.example.com/assets/image.png`; `//localhost/api/resource` |
-| [`browser.resource_timing.connect_end`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes establishing the connection to the server to retrieve the resource, in milliseconds. See [connectEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectEnd). | `476.6000000014906` |
-| [`browser.resource_timing.connect_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the user agent starts establishing the connection to the server to retrieve the resource, in milliseconds. See [connectStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/connectStart). | `476.6000000014901` |
-| [`browser.resource_timing.domain_lookup_end`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser finishes the domain name lookup for the resource, in milliseconds. See [domainLookupEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupEnd). | `100.6000000014906` |
-| [`browser.resource_timing.domain_lookup_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the domain name lookup for the resource, in milliseconds. See [domainLookupStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/domainLookupStart). | `100.6000000014901` |
-| [`browser.resource_timing.fetch_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts to fetch the resource, in milliseconds. See [fetchStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/fetchStart). | `9.600000000558794` |
-| [`browser.resource_timing.request_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts requesting the resource from the server, cache, or local resource, in milliseconds. See [requestStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/requestStart). | `506.70000000298023` |
-| [`browser.resource_timing.response_end`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first, in milliseconds. See [responseEnd](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseEnd). | `510.6000000014906` |
-| [`browser.resource_timing.response_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately after the browser receives the first byte of the response from the server, cache, or local resource, in milliseconds. See [responseStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStart). | `508.6000000014901` |
-| [`browser.resource_timing.secure_connection_start`](attributes/.md) |  | `Recommended` | double | The [time](https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp) immediately before the browser starts the handshake process to secure the current connection, in milliseconds. See [secureConnectionStart](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/secureConnectionStart). | `476.6000000014903` |
-| [`browser.resource_timing.url.query`](attributes/.md) |  | `Opt-In` | string | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component of the resource URL. [2] | `size=large`; `format=webp`; `width=800&height=600` |
-
-**[1] `browser.resource_timing.url.canonical`:** This is the canonical URL of the resource being measured, not the page URL. It represents the resource in its standard form for identification purposes. The canonical URL includes the scheme (if present), full domain, and path only. Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII. For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`. In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
-
-**[2] `browser.resource_timing.url.query`:** This attribute is opt-in due to potential high cardinality and PII concerns. Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it. Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
-
-
-
-
-
-
-[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status
From 4e5537e5368699e72fbd27ffd67c2642c4873b9b Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Thu, 13 Nov 2025 14:30:27 -0800
Subject: [PATCH 13/17] Update
---
docs/attribute_registry/attributes/browser.md | 71 -------------------
docs/registry/attributes/browser.md | 45 ++++++++++++
2 files changed, 45 insertions(+), 71 deletions(-)
delete mode 100644 docs/attribute_registry/attributes/browser.md
diff --git a/docs/attribute_registry/attributes/browser.md b/docs/attribute_registry/attributes/browser.md
deleted file mode 100644
index 34450ba740..0000000000
--- a/docs/attribute_registry/attributes/browser.md
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-# Browser
-
-- [Browser Attributes](#browser-attributes)
-- [Browser Resource Timing Attributes](#browser-resource-timing-attributes)
-
-## Browser Attributes
-
-The web browser attributes
-
-**Attributes:**
-
-| Key | Stability | Value Type | Description | Example Values |
-|---|---|---|---|---|
-| `browser.brands` |  | string[] | Array of brand name and version separated by a space [1] | `[" Not A;Brand 99", "Chromium 99", "Chrome 99"]` |
-| `browser.language` |  | string | Preferred language of the user using the browser [2] | `en`; `en-US`; `fr`; `fr-FR` |
-| `browser.mobile` |  | boolean | A boolean that is true if the browser is running on a mobile device [3] | |
-| `browser.platform` |  | string | The platform on which the browser is running [4] | `Windows`; `macOS`; `Android` |
-
-**[1] `browser.brands`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`).
-
-**[2] `browser.language`:** This value is intended to be taken from the Navigator API `navigator.language`.
-
-**[3] `browser.mobile`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be left unset.
-
-**[4] `browser.platform`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
-The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.
-
-## Browser Resource Timing Attributes
-
-Attributes for browser resource timing events
-
-**Attributes:**
-
-| Key | Stability | Value Type | Description | Example Values |
-|---|---|---|---|---|
-| `browser.resource_timing.connect_end` |  | double | Time immediately after the browser completes establishing the connection to the server [5] | `145.7`; `275.2` |
-| `browser.resource_timing.connect_start` |  | double | Time immediately before the browser starts to establish the connection to the server [6] | `131.0`; `261.3` |
-| `browser.resource_timing.domain_lookup_end` |  | double | Time immediately after the browser completes the domain name lookup for the resource [7] | `130.2`; `260.5` |
-| `browser.resource_timing.domain_lookup_start` |  | double | Time immediately before the browser starts the domain name lookup for the resource [8] | `125.3`; `255.8` |
-| `browser.resource_timing.fetch_start` |  | double | Time immediately before the browser starts to fetch the resource [9] | `120.5`; `250.75` |
-| `browser.resource_timing.request_start` |  | double | Time immediately before the browser starts requesting the resource from the server [10] | `146.0`; `276.0` |
-| `browser.resource_timing.response_end` |  | double | Time immediately after the browser receives the last byte of the resource [11] | `220.3`; `350.5` |
-| `browser.resource_timing.response_start` |  | double | Time immediately after the browser receives the first byte of the response from the server [12] | `180.5`; `310.8` |
-| `browser.resource_timing.secure_connection_start` |  | double | Time immediately before the browser starts the handshake process to secure the connection [13] | `132.5`; `262.8` |
-| `browser.resource_timing.url.canonical` |  | string | The canonical URL of the resource, excluding query parameters and credentials [14] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
-| `browser.resource_timing.url.query` |  | string | The query string component of the resource URL [15] | `?version=1.2.3`; `?id=abc123&type=json` |
-
-**[5] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
-
-**[6] `browser.resource_timing.connect_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
-
-**[7] `browser.resource_timing.domain_lookup_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
-
-**[8] `browser.resource_timing.domain_lookup_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
-
-**[9] `browser.resource_timing.fetch_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
-
-**[10] `browser.resource_timing.request_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
-
-**[11] `browser.resource_timing.response_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
-
-**[12] `browser.resource_timing.response_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
-
-**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
-
-**[14] `browser.resource_timing.url.canonical`:** The canonical URL includes scheme, domain, and path components only. Query parameters and URL fragments MUST be excluded. User credentials (username and password) MUST be excluded.
-
-**[15] `browser.resource_timing.url.query`:** The query string includes the leading `?` character. This attribute is opt-in as it may contain sensitive information.
diff --git a/docs/registry/attributes/browser.md b/docs/registry/attributes/browser.md
index cc8d235f4e..34450ba740 100644
--- a/docs/registry/attributes/browser.md
+++ b/docs/registry/attributes/browser.md
@@ -3,6 +3,9 @@
# Browser
+- [Browser Attributes](#browser-attributes)
+- [Browser Resource Timing Attributes](#browser-resource-timing-attributes)
+
## Browser Attributes
The web browser attributes
@@ -24,3 +27,45 @@ The web browser attributes
**[4] `browser.platform`:** This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.platform`). If unavailable, the legacy `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
The list of possible values is defined in the [W3C User-Agent Client Hints specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform). Note that some (but not all) of these values can overlap with values in the [`os.type` and `os.name` attributes](./os.md). However, for consistency, the values in the `browser.platform` attribute should capture the exact value that the user agent provides.
+
+## Browser Resource Timing Attributes
+
+Attributes for browser resource timing events
+
+**Attributes:**
+
+| Key | Stability | Value Type | Description | Example Values |
+|---|---|---|---|---|
+| `browser.resource_timing.connect_end` |  | double | Time immediately after the browser completes establishing the connection to the server [5] | `145.7`; `275.2` |
+| `browser.resource_timing.connect_start` |  | double | Time immediately before the browser starts to establish the connection to the server [6] | `131.0`; `261.3` |
+| `browser.resource_timing.domain_lookup_end` |  | double | Time immediately after the browser completes the domain name lookup for the resource [7] | `130.2`; `260.5` |
+| `browser.resource_timing.domain_lookup_start` |  | double | Time immediately before the browser starts the domain name lookup for the resource [8] | `125.3`; `255.8` |
+| `browser.resource_timing.fetch_start` |  | double | Time immediately before the browser starts to fetch the resource [9] | `120.5`; `250.75` |
+| `browser.resource_timing.request_start` |  | double | Time immediately before the browser starts requesting the resource from the server [10] | `146.0`; `276.0` |
+| `browser.resource_timing.response_end` |  | double | Time immediately after the browser receives the last byte of the resource [11] | `220.3`; `350.5` |
+| `browser.resource_timing.response_start` |  | double | Time immediately after the browser receives the first byte of the response from the server [12] | `180.5`; `310.8` |
+| `browser.resource_timing.secure_connection_start` |  | double | Time immediately before the browser starts the handshake process to secure the connection [13] | `132.5`; `262.8` |
+| `browser.resource_timing.url.canonical` |  | string | The canonical URL of the resource, excluding query parameters and credentials [14] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
+| `browser.resource_timing.url.query` |  | string | The query string component of the resource URL [15] | `?version=1.2.3`; `?id=abc123&type=json` |
+
+**[5] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
+
+**[6] `browser.resource_timing.connect_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectstart).
+
+**[7] `browser.resource_timing.domain_lookup_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupend).
+
+**[8] `browser.resource_timing.domain_lookup_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-domainlookupstart).
+
+**[9] `browser.resource_timing.fetch_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-fetchstart).
+
+**[10] `browser.resource_timing.request_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-requeststart).
+
+**[11] `browser.resource_timing.response_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responseend).
+
+**[12] `browser.resource_timing.response_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-responsestart).
+
+**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
+
+**[14] `browser.resource_timing.url.canonical`:** The canonical URL includes scheme, domain, and path components only. Query parameters and URL fragments MUST be excluded. User credentials (username and password) MUST be excluded.
+
+**[15] `browser.resource_timing.url.query`:** The query string includes the leading `?` character. This attribute is opt-in as it may contain sensitive information.
From da240e4ac90f463b51f5ae7c89e4b0df0274aa71 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Fri, 14 Nov 2025 12:25:04 -0800
Subject: [PATCH 14/17] Adding back url and removing canonical and query
---
docs/browser/browser-events.md | 7 ++-----
docs/registry/attributes/browser.md | 7 ++-----
model/browser/events.yaml | 15 +--------------
model/browser/registry.yaml | 22 ++++++++--------------
4 files changed, 13 insertions(+), 38 deletions(-)
diff --git a/docs/browser/browser-events.md b/docs/browser/browser-events.md
index 917b2c32db..2ffc9aca45 100644
--- a/docs/browser/browser-events.md
+++ b/docs/browser/browser-events.md
@@ -72,7 +72,7 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
|---|---|---|---|---|---|
-| [`browser.resource_timing.url.canonical`](/docs/registry/attributes/browser.md) |  | `Required` | string | The canonical URL of the resource, excluding query parameters and credentials [1] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
+| [`browser.resource_timing.url`](/docs/registry/attributes/browser.md) |  | `Required` | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [1] | `https://www.example.com/path`; `https://cdn.example.com/styles/main.css` |
| [`browser.resource_timing.connect_end`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser completes establishing the connection to the server [2] | `145.7`; `275.2` |
| [`browser.resource_timing.connect_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts to establish the connection to the server [3] | `131.0`; `261.3` |
| [`browser.resource_timing.domain_lookup_end`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser completes the domain name lookup for the resource [4] | `130.2`; `260.5` |
@@ -82,9 +82,8 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
| [`browser.resource_timing.response_end`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser receives the last byte of the resource [8] | `220.3`; `350.5` |
| [`browser.resource_timing.response_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser receives the first byte of the response from the server [9] | `180.5`; `310.8` |
| [`browser.resource_timing.secure_connection_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts the handshake process to secure the connection [10] | `132.5`; `262.8` |
-| [`browser.resource_timing.url.query`](/docs/registry/attributes/browser.md) |  | `Opt-In` | string | The query string component of the resource URL [11] | `?version=1.2.3`; `?id=abc123&type=json` |
-**[1] `browser.resource_timing.url.canonical`:** This is the canonical URL of the resource being measured, not the page URL. It represents the resource in its standard form for identification purposes. The canonical URL includes the scheme (if present), full domain, and path only. Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII. For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`. In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
+**[1] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
**[2] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
@@ -104,8 +103,6 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
**[10] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
-**[11] `browser.resource_timing.url.query`:** This attribute is opt-in due to potential high cardinality and PII concerns. Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it. Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
-
diff --git a/docs/registry/attributes/browser.md b/docs/registry/attributes/browser.md
index 34450ba740..c3479c9e51 100644
--- a/docs/registry/attributes/browser.md
+++ b/docs/registry/attributes/browser.md
@@ -45,8 +45,7 @@ Attributes for browser resource timing events
| `browser.resource_timing.response_end` |  | double | Time immediately after the browser receives the last byte of the resource [11] | `220.3`; `350.5` |
| `browser.resource_timing.response_start` |  | double | Time immediately after the browser receives the first byte of the response from the server [12] | `180.5`; `310.8` |
| `browser.resource_timing.secure_connection_start` |  | double | Time immediately before the browser starts the handshake process to secure the connection [13] | `132.5`; `262.8` |
-| `browser.resource_timing.url.canonical` |  | string | The canonical URL of the resource, excluding query parameters and credentials [14] | `https://example.com/path/to/resource.js`; `https://cdn.example.com/styles/main.css` |
-| `browser.resource_timing.url.query` |  | string | The query string component of the resource URL [15] | `?version=1.2.3`; `?id=abc123&type=json` |
+| `browser.resource_timing.url` |  | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [14] | `https://www.example.com/path`; `https://cdn.example.com/styles/main.css` |
**[5] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
@@ -66,6 +65,4 @@ Attributes for browser resource timing events
**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
-**[14] `browser.resource_timing.url.canonical`:** The canonical URL includes scheme, domain, and path components only. Query parameters and URL fragments MUST be excluded. User credentials (username and password) MUST be excluded.
-
-**[15] `browser.resource_timing.url.query`:** The query string includes the leading `?` character. This attribute is opt-in as it may contain sensitive information.
+**[14] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
diff --git a/model/browser/events.yaml b/model/browser/events.yaml
index dba04e1fa4..d0af96cea6 100644
--- a/model/browser/events.yaml
+++ b/model/browser/events.yaml
@@ -66,21 +66,8 @@ groups:
If the page starts unloading before the page loads,
then the partial data can be captured by calling the [performance.getEntriesByType](https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntriesByType) method.
attributes:
- - ref: browser.resource_timing.url.canonical
+ - ref: browser.resource_timing.url
requirement_level: required
- note: >
- This is the canonical URL of the resource being measured, not the page URL.
- It represents the resource in its standard form for identification purposes.
- The canonical URL includes the scheme (if present), full domain, and path only.
- Query strings and credentials MUST be excluded to reduce cardinality and avoid capturing PII.
- For example, `https://www.example.com/path?a=b&c=d` would be captured as `https://www.example.com/path`.
- In JavaScript, this typically corresponds to `${url.origin}${url.pathname}` or `${location.protocol}//${location.host}${location.pathname}`.
- - ref: browser.resource_timing.url.query
- requirement_level: opt_in
- note: >
- This attribute is opt-in due to potential high cardinality and PII concerns.
- Sensitive content provided in the query string SHOULD be scrubbed when instrumentations can identify it.
- Use this attribute when query parameters are relevant to the resource being fetched (e.g., image dimensions, format specifications).
- ref: browser.resource_timing.fetch_start
requirement_level: recommended
- ref: browser.resource_timing.domain_lookup_start
diff --git a/model/browser/registry.yaml b/model/browser/registry.yaml
index 98e58fe58c..1293e85852 100644
--- a/model/browser/registry.yaml
+++ b/model/browser/registry.yaml
@@ -57,23 +57,17 @@ groups:
brief: >
Attributes for browser resource timing events
attributes:
- - id: browser.resource_timing.url.canonical
+ - id: browser.resource_timing.url
type: string
stability: development
- brief: 'The canonical URL of the resource, excluding query parameters and credentials'
+ brief: 'Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)'
note: >
- The canonical URL includes scheme, domain, and path components only.
- Query parameters and URL fragments MUST be excluded. User credentials
- (username and password) MUST be excluded.
- examples: ['https://example.com/path/to/resource.js', 'https://cdn.example.com/styles/main.css']
- - id: browser.resource_timing.url.query
- type: string
- stability: development
- brief: 'The query string component of the resource URL'
- note: >
- The query string includes the leading `?` character.
- This attribute is opt-in as it may contain sensitive information.
- examples: ['?version=1.2.3', '?id=abc123&type=json']
+ Generally the url doesn't include any query strings or any leading credentials,
+ and it's formatted as scheme://full domain/path only, for example
+ https://www.example.com/path?a=b&c=d would be sent as
+ https://www.example.com/path by both removing any potential PII and
+ reducing the cardinality of the name.
+ examples: ['https://www.example.com/path', 'https://cdn.example.com/styles/main.css']
- id: browser.resource_timing.fetch_start
type: double
stability: development
From 99922ed6565e6ea7952b336cdfc109972a7d6a10 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Fri, 14 Nov 2025 12:30:04 -0800
Subject: [PATCH 15/17] Update md
---
docs/browser/browser-events.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/browser/browser-events.md b/docs/browser/browser-events.md
index 2ffc9aca45..ecf2717fd1 100644
--- a/docs/browser/browser-events.md
+++ b/docs/browser/browser-events.md
@@ -83,7 +83,7 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
| [`browser.resource_timing.response_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser receives the first byte of the response from the server [9] | `180.5`; `310.8` |
| [`browser.resource_timing.secure_connection_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts the handshake process to secure the connection [10] | `132.5`; `262.8` |
-**[1] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://user:pwd@www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+**[1] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
**[2] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).
From 2ff9b02b54d994cb8488f1b14f262f99fa70eab8 Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Fri, 14 Nov 2025 12:35:55 -0800
Subject: [PATCH 16/17] lint
---
docs/registry/attributes/browser.md | 2 +-
model/browser/registry.yaml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/registry/attributes/browser.md b/docs/registry/attributes/browser.md
index c3479c9e51..75f9ff3744 100644
--- a/docs/registry/attributes/browser.md
+++ b/docs/registry/attributes/browser.md
@@ -65,4 +65,4 @@ Attributes for browser resource timing events
**[13] `browser.resource_timing.secure_connection_start`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. If the scheme is not HTTPS, this value is 0. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-secureconnectionstart).
-**[14] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+**[14] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example `https://www.example.com/path?a=b&c=d` would be sent as `https://www.example.com/path` by both removing any potential PII and reducing the cardinality of the name.
diff --git a/model/browser/registry.yaml b/model/browser/registry.yaml
index 1293e85852..ac9d593e8b 100644
--- a/model/browser/registry.yaml
+++ b/model/browser/registry.yaml
@@ -64,8 +64,8 @@ groups:
note: >
Generally the url doesn't include any query strings or any leading credentials,
and it's formatted as scheme://full domain/path only, for example
- https://www.example.com/path?a=b&c=d would be sent as
- https://www.example.com/path by both removing any potential PII and
+ `https://www.example.com/path?a=b&c=d` would be sent as
+ `https://www.example.com/path` by both removing any potential PII and
reducing the cardinality of the name.
examples: ['https://www.example.com/path', 'https://cdn.example.com/styles/main.css']
- id: browser.resource_timing.fetch_start
From 238ede61b5d6fafa52e13656945b88b3a90e5a1e Mon Sep 17 00:00:00 2001
From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com>
Date: Fri, 14 Nov 2025 13:09:26 -0800
Subject: [PATCH 17/17] md file generation
---
docs/browser/browser-events.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/browser/browser-events.md b/docs/browser/browser-events.md
index ecf2717fd1..cf2dcfc049 100644
--- a/docs/browser/browser-events.md
+++ b/docs/browser/browser-events.md
@@ -83,7 +83,7 @@ This event captures data from the [ResourceTiming](https://www.w3.org/TR/resourc
| [`browser.resource_timing.response_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately after the browser receives the first byte of the response from the server [9] | `180.5`; `310.8` |
| [`browser.resource_timing.secure_connection_start`](/docs/registry/attributes/browser.md) |  | `Recommended` | double | Time immediately before the browser starts the handshake process to secure the connection [10] | `132.5`; `262.8` |
-**[1] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example https://www.example.com/path?a=b&c=d would be sent as https://www.example.com/path by both removing any potential PII and reducing the cardinality of the name.
+**[1] `browser.resource_timing.url`:** Generally the url doesn't include any query strings or any leading credentials, and it's formatted as scheme://full domain/path only, for example `https://www.example.com/path?a=b&c=d` would be sent as `https://www.example.com/path` by both removing any potential PII and reducing the cardinality of the name.
**[2] `browser.resource_timing.connect_end`:** Measured in milliseconds as a DOMHighResTimeStamp relative to the time origin. See the [Performance Resource Timing API](https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-connectend).