v153 · speechrecognitionresult timestamps

Result-object capability probe

Feature-detecting these attributes has a trap: SpeechRecognitionResult is declared [LegacyNoInterfaceObject], so there is no window.SpeechRecognitionResult constructor to probe. You must inspect a live result instance. This demo runs the real checks and shows the correct detection recipe alongside the one that silently fails.

Reading real values needs a build that implements the proposal (web-speech-api PR #192, unmerged; the v153 listing records a developer trial at 153, but the attributes are not yet in Chromium main's IDL as of 2026-07-24 and no dedicated runtime flag exists yet) plus a timing-capable recognition backend. Even then the attributes are nullable: a supported engine that has no timing for a segment returns null, which is not the same as “unsupported”.

Static surface probe

What is present in this browser
CheckResultValue
Press “Probe the surface”.

Live result inspection

The only reliable check is on a real SpeechRecognitionResult. This starts a short recognition and inspects the first result's own properties — honestly reporting whatever your engine returns.

Idle. Inspecting requires microphone access and a recognition backend; in headless or blocked-mic environments this reports the error instead of a fake result.

detection recipe

Does not work — there is no constructor, so this throws or is always false:

'audioStartTime' in SpeechRecognitionResult.prototype   // ReferenceError: not defined

Works — probe a real result instance inside onresult:

recognition.onresult = (event) => {
  const result = event.results[event.resultIndex];
  const hasTimestamps = 'audioEndTime' in result;        // capability
  const timed = hasTimestamps && result.audioEndTime !== null;  // actually populated
};

Values are rounded to 2 ms precision to reduce fingerprinting (mirroring HTMLMediaElement.currentTime), so do not expect sub-millisecond timing.

see also