 <p>Remove the last <code>setTimeout(update, 1000);</code> from your code, which calls the function after 1 second</p> <p><div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code"> <pre class="snippet-code-js lang-js prettyprint-override"><code>var $worked = $("#worked"); function update() { var myTime = $worked.html(); var ss = myTime.split(":"); var dt = new Date(); dt.setHours(0); dt.setMinutes(ss[0]); dt.setSeconds(ss[1]); var dt2 = new Date(dt.valueOf() - 1000); var temp = dt2.toTimeString().split(" "); var ts = temp[0].split(":"); $worked.html(ts[1] + ":" + ts[2]); if (ts[1] == 0 &amp;&amp; ts[2] == 0) { return 0; } else { setTimeout(update, 1000); } }</code></pre> <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"&gt;&lt;/script&gt; &lt;div id="worked"&gt;25:00&lt;/div&gt; &lt;button type="button" onclick="update();"&gt;Start&lt;/button&gt;</code></pre> </div> </div> </p>