Countdown timer for your website, free

A deadline people can see.
One that actually ends.

You can add a free countdown timer to any website with a few lines of code: set the deadline and its timezone, paste the code where the timer should appear, and it counts down in every visitor’s browser and replaces itself with an “ended” message, or disappears, at zero. The generator below writes that code for a box on one page or a bar across every page, with the steps for Shopify, WordPress, Squarespace, Wix and Webflow. It also covers the one rule that matters: the deadline has to be real. A timer that restarts for every visitor is false urgency, which the EU and UK ban outright. Builderify has a countdown block too, and an announcement bar that ends on time.

By the Builderify team

Illustration · Sped up: the last minute runs in a few seconds, then the timer replaces itself.
01 / What a timer must do

Four things a website countdown timer
has to get right.

Most free timers get the ticking right and the rest wrong: the wrong timezone, a row of zeros after the sale, or a clock that starts again for the next visitor. The generator handles all four.

  1. 01

    One deadline, with its timezone

    Sunday 23:59 means a different moment in Lisbon and in Chicago. The code fixes the end to one instant, so every visitor sees the same deadline counted in their own time.

  2. 02

    Something sensible at zero

    A timer stuck on 00:00:00 tells visitors the sale ended and you didn’t notice. At zero, show an “ended” line or take the timer away.

  3. 03

    Readable on a phone

    One short line, digits that don’t jump as they change, and no layout that pushes the page around.

  4. 04

    A real deadline

    The same end for everyone, and no quiet extension. A clock that restarts for each new visitor is false urgency; section 04 has the rules.

02 / Timer generator

Free countdown timer generator
for any website.

Set the deadline and what happens at zero, pick a box or a bar, and copy the code. It has no account, no tracking and nothing to load from anyone else’s server; it runs in the visitor’s browser.

Where it shows
At zero
Preview Counting down
Autumn sale ends in 6d 23h 42m 52s
Your code
<!-- Countdown timer: ends 2026-10-18 23:59 (UTC+00:00) -->
<div id="countdown-timer"></div>
<script>
(function () {
  var ends = Date.parse('2026-10-18T23:59:00+00:00');
  var label = "Autumn sale ends in";
  var after = "The autumn sale has ended.";
  var el = document.getElementById('countdown-timer');
  el.style.cssText = 'display:inline-block;background:#111827;color:#ffffff;padding:12px 18px;border-radius:10px;font:600 16px/1.4 system-ui,sans-serif;text-align:center';
  var text = document.createElement('span');
  var clock = document.createElement('span');
  clock.setAttribute('role', 'timer');
  clock.style.fontVariantNumeric = 'tabular-nums';
  el.appendChild(text);
  el.appendChild(clock);
  function pad(n) { return (n < 10 ? '0' : '') + n; }
  function tick() {
    var left = Math.floor((ends - Date.now()) / 1000);
    if (left <= 0) {
      el.textContent = after;
      return;
    }
    var d = Math.floor(left / 86400), h = Math.floor(left % 86400 / 3600), m = Math.floor(left % 3600 / 60), s = left % 60;
    text.textContent = label ? label + ' ' : '';
    clock.textContent = (d ? d + 'd ' : '') + pad(h) + 'h ' + pad(m) + 'm ' + pad(s) + 's';
    setTimeout(tick, 1000);
  }
  tick();
})();
</script>

The end is fixed to one instant using the timezone you picked, so a visitor anywhere sees the same deadline. The clock carries role="timer", which screen readers don’t announce every second.

03 / Where to paste it

How to add a countdown timer
to Shopify, WordPress, Squarespace, Wix and Webflow.

A box goes where you want it on one page, usually above the offer or the buy button. A bar goes into the code that every page shares. Paste only one timer of each kind per page.

Where to paste the countdown timer on each platform
Platform A box on one page A bar on every page
Shopify In the theme editor, add a Custom Liquid section where the timer should sit, if your theme offers one, paste and save. Online Store › Themes › Edit code, then paste into layout/theme.liquid just before </body>.
WordPress Add a Custom HTML block where it should sit and paste. Do it as an administrator: other roles can have scripts stripped. Add it with a header-and-footer code plugin, or before </body> in a child theme’s footer.
Squarespace Add a Code Block and paste. Code blocks run JavaScript on the Core plan and above. Pages › Custom Code › Code Injection › Footer, on Core, Plus or Advanced.
Wix Add Elements › Embed Code › Popular Embeds › Embed HTML, then Enter Code and Apply. It runs in a frame, so size the element to fit. Settings › Custom Code › Add Custom Code, All pages, Body – end. Needs a published site with a connected domain.
Webflow Drag a Code Embed element where it should sit and paste. Needs a paid Workspace or an active Site plan. Site settings › Custom code › Footer code, then publish. Also on paid plans.
Any HTML site Paste it into the page where the timer should appear. Paste it just before </body> on every page, or in your shared footer.

For a bar that also needs a start time and a link, the announcement bar generator writes one that switches itself on and off.

04 / Real deadlines only

Are fake countdown timers legal?
In the EU and UK, no.

Both put the same practice on their list of commercial practices that are unfair in all circumstances, whatever the effect: falsely stating that a product, or particular terms, will only be available for a limited time, to push someone into deciding straight away.

This is a summary to help you use a timer honestly, not legal advice for your case.

European Union
Unfair Commercial Practices Directive, Annex I, point 7

“Falsely stating that a product will only be available for a very limited time”, or on particular terms for a very limited time.

United Kingdom
DMCC Act 2024, Schedule 20, paragraph 7

“Falsely stating that a product will only be available for a limited time”. In force since 6 April 2025.

  1. 01

    A timer that restarts for every visitor

    Often sold as an “evergreen” countdown. Each visitor is told about a deadline that doesn’t exist.

    Use one end for everyone, as the generator does.

  2. 02

    A “final” deadline that quietly moves

    The sale is extended but the old deadline was presented as the last chance.

    If you extend, say so on the timer and in the offer.

  3. 03

    A timer on a price that never changes

    The countdown ends and the same offer carries on.

    When it ends, end the offer, and show the ended message.

05 / With Builderify

A countdown in the same widget
as your offer and your chat.

The free code above is all most sites need. If you already use Builderify’s floating widget, its Countdown Timer block counts down to a date and time in your widget’s timezone and disappears at zero, next to whatever else the widget holds: a discount popup, live chat or a newsletter signup.

It runs on the 250 free credits every account gets each month, at 10 credits per 1,000 page loads of the widget. For a message across the top of the page with a start and an end, Notifications take themselves down on time too.

What the block does

  • Counts down to one date and time, the same for every visitor
  • Uses the timezone set for your widget
  • Removes itself when it reaches zero
  • Three looks: Default, Compact and Minimal
  • Show it only on some pages, devices, or to new or returning visitors

Know this first

  • It sits inside the floating widget, not in your page’s own layout
  • The digits only: add your message in a text block beside it
  • No “ended” message or colour settings of its own
  • One countdown per widget
  • No per-visitor timers, by design

The widget shows “Powered by Builderify”; packs from $9, once, if you outgrow the free credits.

Questions

Countdown timers, before you ask.

Set the end date, time and timezone in a generator, copy the code and paste it where the timer should appear: a Custom HTML or code block for one page, or the site-wide footer code for a bar on every page. The timer runs in each visitor's browser, with no account or monthly fee.

Yes, if the code fixes the deadline to one instant. A deadline written with its UTC offset, such as 2026-11-01T23:59:00+00:00, is the same moment everywhere, and each visitor's browser counts down to it from their own clock.

Whatever the code says. A good timer either replaces itself with a message such as "The sale has ended" or removes itself, rather than sitting on 00:00:00. Then end the offer too.

Falsely stating that a product will only be available for a limited time is banned in all circumstances in the EU, under Annex I of the Unfair Commercial Practices Directive, and in the UK, under Schedule 20 of the DMCC Act 2024. A timer that restarts for each visitor, or a final deadline that is quietly extended, risks both. This is not legal advice.

Yes, as a block in the floating widget. It counts down to one date and time in the widget's timezone and disappears at zero, and can be shown only on certain pages or devices. It shows the digits only, so add your message in a text block, and it runs on 250 free credits a month.

Stop losing the visitors
you already paid for.

More leads from the traffic you already have, and follow-up that sends itself. Free to start. No card, no monthly fee.