Speedometer is a browser benchmark that measures the responsiveness of Web applications. It uses demo web applications to simulate user actions such as adding to-do items.

Your browser window is too small. For most accurate results, please make the view port size at least 850px by 650px.
It's currently .

About Speedometer

Runs / Minute


Detailed Results

About Speedometer

About Speedometer

Speedometer measures simulated user interactions in web applications.

The current benchmark uses TodoMVC to simulate user actions for adding, completing, and removing to-do items. Speedometer repeats the same actions using DOM APIs — a core set of web platform APIs used extensively in web applications — as well as six popular JavaScript frameworks: Ember.js, Backbone.js, jQuery, AngularJS, React, and Flight. Many of these frameworks are used on the most popular websites in the world, such as Facebook and Twitter. The performance of these types of operations depends on the speed of the DOM APIs, the JavaScript engine, CSS style resolution, layout, and other technologies.

Although user-driven actions like mouse movements and keyboard input cannot be accurately emulated in JavaScript, Speedometer does its best to faithfully replay a typical workload within the demo applications. To make the run time long enough to measure with the limited precision, we synchronously execute a large number of the operations, such as adding one hundred to-do items.

Some browser engines use an optimization strategy of doing some work asynchronously to reduce the run time of synchronous operations. While returning control back to JavaScript execution as soon as possible is worth pursuing, a holistic, accurate measurement of web application performance involves measuring when these related, asynchronous computations actually complete. Thus, Speedometer measures the time browser spends executing those asynchronous tasks in Speedometer, estimated as the time between when a zero-second delay timer is scheduled and when it is fired.

Note: Speedometer is not meant to compare the performance of different JavaScript frameworks. The mechanism we use to simulate user actions is different for each framework, and we’re forcing frameworks to do more work synchronously than needed in some cases to ensure run time can be measured.