Web Vitals Trace Lab
Investigate recorded activity before opening a large trace in DevTools. This lab locates long renderer-main tasks, groups unexpected layout shifts into recorded session windows and lists available interaction spans and LCP candidate markers with trace event indexes. It analyzes supplied events locally; a saved recording is not a full user-visit or field Core Web Vitals measurement.
Key features
- Renderer main-thread RunTask durations over 50 ms, with up to three nested activity pointers and missing thread identity called out
- LayoutShift score deltas separated by had_recent_input, with impacted node IDs and recorded 1 s / 5 s windows
- Recorded EventTiming spans and LCP candidate markers, without an invented INP or LCP value
- Time-ordered, filterable event table with source traceEvents indexes
- Local JSON or gzip trace import and source-value-free review JSON export
How to use
- In Chrome DevTools Performance, record the load or interaction you want to investigate and save a trace.
- Choose the JSON or compressed JSON file, paste JSON, or load the editable example.
- Analyze the recording and read the counts and scope notices.
- Filter the timeline and use each traceEvents index to inspect the original event in DevTools.
- Download the review report if needed; measure actual Core Web Vitals with appropriate field tools.
Use cases
- Locate a long renderer task near a sluggish interaction
- Find unexpected layout shifts and their source event indexes
- Compare recorded interaction spans in a captured user flow
- Handoff a bounded, argument-free event summary to another developer
Frequently asked questions
Does this calculate my site's LCP, CLS and INP?
No. A trace may cover only part of one visit and event shape changes with Chrome versions. LCP candidate markers are timestamps in the recording, EventTiming spans are not a computed INP, and the displayed shift-window value comes only from supported recorded LayoutShift deltas. Use DevTools, web-vitals or field reports for metric measurement.
Why are some long tasks called possible rather than confirmed?
A confirmed task requires a thread_name metadata event identifying CrRendererMain or RendererMain for the same process and thread. Without that metadata, RunTask spans over 50 ms are listed as possible tasks rather than asserted main-thread work.
How is the layout-shift window number made?
The lab uses LayoutShift weighted_score_delta events with had_recent_input explicitly false. It separates frames when a frame label exists, starts a new window after a gap over one second or a span over five seconds, and shows the highest recorded window sum. Missing input flags and incomplete recordings prevent an official CLS conclusion.
Which trace files are accepted?
Chrome JSON trace arrays or objects containing traceEvents are accepted, including gzip-compressed .json.gz files when the browser provides DecompressionStream. Other Perfetto protobuf or Lighthouse formats are not parsed. Input is capped at 24 MiB after decompression, 250,000 events and 3,000 listed findings.
Is the downloaded JSON safe to share?
It deliberately omits raw trace arguments, page URLs and script content. It still contains event names, timing and thread identifiers that could be sensitive in context. Inspect the report and the original trace before sharing either.
Privacy
The selected trace stays in this page's memory. This tool does not upload it or put it in a URL or browser storage. Saved Chrome traces may contain page URLs, annotations, script content and source maps. The downloadable report includes only recognized event names, timings, score deltas, numeric impacted node IDs, thread IDs and event indexes, not raw event arguments or the source trace. Inspect the original file before sharing it.
Comments & questions