Voltar ao blog
Countdown Timer com HTML e CSS: Aumente a Conversão com Escassez
countdownhtml cssescassezconversão

Countdown Timer com HTML e CSS: Aumente a Conversão com Escassez

Crie um contador regressivo personalizado com HTML, CSS e JavaScript puro. Sem dependências, leve e fácil de customizar para qualquer página.

Trafius|12 de abril de 2026|6 min de leitura

Countdown timers aumentam a conversão em páginas de vendas porque ativam o gatilho da escassez -- estudos de marketing digital indicam que contadores regressivos podem gerar um aumento de 8% a 10% na taxa de conversão quando usados corretamente. Com HTML, CSS e JavaScript puro, você cria um timer leve, sem dependências externas e totalmente personalizável.

"A escassez é o gatilho mental mais direto que existe -- quando o tempo acaba, a decisão precisa acontecer agora."

Resumo rápido:

  • Timers de escassez podem elevar conversões em 8-10%
  • O código usa apenas HTML, CSS e JavaScript puro (zero dependências)
  • Variações incluem timer compacto em linha e banner de largura total
  • Boas práticas: 10-20 minutos para VSL, não usar timers falsos que resetam

Por que countdown timers aumentam conversões?

O princípio é simples: tempo limitado elimina a procrastinação. Quando um visitante vê que tem 15 minutos para aproveitar um desconto, a decisão muda de "vou pensar depois" para "preciso decidir agora". Essa pressão temporal, quando legítima, é uma das ferramentas mais eficazes em páginas de vendas.

Testes A/B em landing pages de produtos digitais mostram consistentemente que páginas com timer convertem mais do que páginas sem. O efeito é ainda mais forte quando combinado com alertas de prova social que mostram outras pessoas comprando em tempo real.

O timer padrão: bloco centralizado

Este é o timer clássico, ideal para posicionar abaixo do headline ou próximo ao botão de compra. Coloque o HTML onde quiser que o timer apareça:

<!-- Elemento visual do timer -->
<div class="contador-regressivo">
    <div class="rotulo">O desconto encerra em:</div>
    <div class="tempo">00:00</div>
</div>

E cole o JavaScript e CSS antes da tag </html>:

<script>
    // Duração do timer em minutos
    var MINUTOS = 15;

    // Função principal do contador regressivo
    function iniciarContador(duracao, elementos) {
        var timer = duracao, minutos, segundos;

        setInterval(function () {
            // Calcula minutos e segundos
            minutos = parseInt(timer / 60, 10);
            segundos = parseInt(timer % 60, 10);

            // Formata com zero à esquerda
            minutos = minutos < 10 ? "0" + minutos : minutos;
            segundos = segundos < 10 ? "0" + segundos : segundos;

            // Atualiza o texto em todos os timers da página
            elementos.forEach(function (el) {
                el.textContent = minutos + ":" + segundos;
            });

            // Para em zero
            if (--timer < 0) {
                timer = 0;
            }
        }, 1000); // Intervalo de 1 segundo
    }

    // Inicia quando a página termina de carregar
    window.onload = function () {
        var duracaoSegundos = MINUTOS * 60,
            elementos = document.querySelectorAll('.tempo');
        iniciarContador(duracaoSegundos, elementos);
    };
</script>

<style>
    /* Container do contador */
    .contador-regressivo {
        font: normal 12px/20px Arial, Helvetica, sans-serif;
        box-shadow: 0 1px 1px 0 rgba(1, 1, 1, 0.4);
        width: 250px;
        height: 90px;
        text-align: center;
        background: #f1f1f1;
        border-radius: 5px;
        margin: 30px auto;
    }

    /* Rótulo acima do timer */
    .contador-regressivo .rotulo {
        font-size: 12px;
        color: #65584c;
        text-transform: uppercase;
        letter-spacing: 2px;
        padding: 7px 0;
    }

    /* Área do tempo com destaque */
    .contador-regressivo .tempo {
        color: #fff;
        font-size: 48px;
        padding: 20px;
        border-radius: 0 0 5px 5px;
        display: block;
        background: #e5554e;
        box-shadow: 0 1px 2px 0 rgba(1, 1, 1, 0.4);
    }
</style>

Variação: timer inline (horizontal)

Para inserir o timer dentro de uma frase ou próximo a um botão, use esta variação compacta em linha. Substitua o CSS do bloco anterior por:

<style>
    /* Timer compacto em linha */
    .contador-inline {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 16px;
        padding: 8px 16px;
        background: #fff3cd;
        border: 1px solid #ffc107;
        border-radius: 4px;
        color: #856404;
    }

    /* Tempo no formato compacto */
    .contador-inline .tempo {
        font-weight: bold;
        font-size: 20px;
        color: #e5554e;
    }
</style>

O HTML correspondente:

<!-- Timer em linha para uso dentro do texto -->
<span class="contador-inline">
    Oferta expira em <span class="tempo">00:00</span>
</span>

Variação: banner de largura total

Para um timer fixo no topo ou rodapé da página, use o estilo de banner. Essa variação chama bastante atenção e funciona bem em páginas de lançamento:

<style>
    /* Banner de urgência largura total */
    .banner-urgencia {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        background: #e5554e;
        color: #fff;
        text-align: center;
        padding: 10px 0;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 16px;
        z-index: 9999;
        box-shadow: 0 2px 4px rgba(0,0,0,0.2);
    }

    /* Tempo destacado no banner */
    .banner-urgencia .tempo {
        font-weight: bold;
        font-size: 22px;
        margin-left: 8px;
    }
</style>

O HTML do banner:

<!-- Banner fixo no topo -->
<div class="banner-urgencia">
    Desconto especial encerra em <span class="tempo">00:00</span>
</div>

Boas práticas para timers de conversão

Defina o tempo certo para o contexto. Para páginas com VSL, use 10 a 20 minutos -- tempo suficiente para assistir ao vídeo e tomar a decisão. Para lançamentos e campanhas de email, 24 horas faz mais sentido.

Não use timers falsos que resetam infinitamente. Timers que reiniciam a cada visita destroem a confiança quando o visitante percebe. Se a oferta é realmente limitada, use sessionStorage para manter o timer consistente durante a sessão.

Combine com outros gatilhos. Timer sozinho tem efeito moderado. Junto com prova social, garantia e bônus limitados, o impacto na conversão multiplica.

Posicione estrategicamente. O timer precisa estar visível no momento da decisão -- próximo ao botão de compra ou ao preço. Um timer no topo da página que some ao rolar tem menos efeito do que um banner fixo.

Para monitorar os resultados das suas campanhas de tráfego pago que direcionam para essas páginas, o Trafius envia métricas em tempo real direto no seu WhatsApp.


Perguntas frequentes

Esse timer funciona sem internet depois de carregar?

Sim. Depois que a página carrega, o JavaScript roda localmente no navegador. Mesmo que a conexão caia, o timer continua funcionando normalmente.

Posso mostrar horas, minutos e segundos?

Sim. Adicione o cálculo de horas na função iniciarContador: horas = parseInt(timer / 3600, 10) e ajuste o textContent para exibir no formato HH:MM:SS.

O timer afeta o SEO da página?

Não. O timer é renderizado via JavaScript no lado do cliente. Os mecanismos de busca indexam o conteúdo HTML estático da página, sem considerar elementos dinâmicos gerados por scripts.

Posso usar fontes personalizadas no timer?

Sim. Altere a propriedade font-family no CSS para qualquer fonte disponível na página. Se usar Google Fonts, carregue a fonte via <link> antes do bloco de estilo do timer.

Consulte suas métricas pelo WhatsApp

Com o Trafius, você pergunta "quanto gastei hoje?" e recebe CPC, ROAS, gastos e conversões em segundos, direto no WhatsApp.

Testar grátis por 7 diasVer mais artigos

Veja também

Como Adicionar um Timer de Urgência na Sua Página de Vendas
countdowntimer

Como Adicionar um Timer de Urgência na Sua Página de Vendas

5 min de leitura
Prova Social Automática: Alertas de Vendas na Sua Landing Page
prova sociallanding page

Prova Social Automática: Alertas de Vendas na Sua Landing Page

5 min de leitura
Funil de Vendas no Tráfego Pago: Como Estruturar Campanhas por Etapa
funil de vendastráfego pago

Funil de Vendas no Tráfego Pago: Como Estruturar Campanhas por Etapa

10 min de leitura