var $div = $ ( 'div' ); var a = 0 ; setInterval ( function () { a ++; $div . stop ( true , true ). css ( "left" , a ); }, 1000 / 30 ); Inactive browser tabs buffer some of the setInterval or setTimeout functions. stop(true,true) will stop all buffered events and execute immediatly only the last animation. The window.setTimeout() method now clamps to send no more than one timeout per second in inactive tabs. In addition, it now clamps nested timeouts to the smallest value allowed by the HTML5 specification: 4 ms (instead of the 10 ms it used to clamp to) from: http://stackoverflow.com/questions/5927284/how-can-i-make-setinterval-also-work-when-a-tab-is-inactive-in-chrome?answertab=active#tab-top