Tested tool guide
Tested browser tools
Checked August 16, 2026
What Performance Observer Playground does, with a checked example
The Performance Observer API hands your page a log of its own performance: paints, largest-contentful-paint candidates, layout shifts, long tasks, and input events. This playground attaches an observer to a live demo page in your own browser and streams every matching entry as it fires, showing raw fields like name, startTime, duration, and type-specific extras, so you can learn the API before writing production code. The surprise most people hit: observers are blind to the past. An observer created after an event fired sees nothing unless you pass buffered: true.
Worked example
A concrete input and expected output from the current implementation.
Input
const po = new PerformanceObserver(list => {
for (const e of list.getEntries()) {
console.log(e.name + ': startTime ' + Math.round(e.startTime) + ' ms, duration ' + e.duration);
}
});
po.observe({ type: 'paint', buffered: true }); ->
Expected output
first-paint: startTime 312 ms, duration 0
first-contentful-paint: startTime 342 ms, duration 0
buffered: true makes the observer replay paint entries recorded during page load, in startTime order. first-paint always fires before or together with first-contentful-paint, both carry duration 0, and the millisecond values vary per load, so only the names, ordering, and zero durations are portable.