Como copiar textos para a área de transferência com JavaScript (Clipboard)
Neste artigo você vai aprender como copiar textos para a área de transferência com JavaScript de uma maneira simples, para utilizar nos seus programas!

Fala programador(a), beleza? Bora aprender melhor como criar a função de copiar textos com o JavaScript!
Para resolver este problema vamos utilizar a função de execCommand com o parâmetro copy
Porém primeiramente vamos criar nossa estrutura de HTML:
<textarea class="text">Texto para copiar</textarea> <button id="copy">Copiar</button>
No exemplo temos um textarea que é provavelmente de onde você vai copiar os textos e também um botão para ação
E agora vamos a lógica com JavaScript:
let btn = document.querySelector('#copy');
btn.addEventListener('click', function(e) {
let textArea = document.querySelector('.text');
textArea.select();
document.execCommand('copy');
});
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Aqui selecionamos o elemento do botão e depois atrelamos um evento de click nele, para fazer a ação da cópia
Dentro do evento atribuímos a textarea para uma variável realizamos a seleção e cópia do texto, por meio do método execComand com o parâmetro copy
Desta maneira o texto será copiado para a área de transferência e com um Ctrl + v ou colar do botão direito, podemos inserir o texto em qualquer lugar
Legal né? 😀
Recomendo também a leitura deste artigo, que fala sobre as vantagens de colocar uma função em uma variável na linguagem JavaScript
Conclusão
Neste artigo vimos como copiar textos para a área de transferência com JavaScript, o famoso Clipboard
A ideia é selecionar o texto que deve ser copiado pelo método select
E por fim realizar a cópia com o execCommand
O mais interessante é que todos estes recursos são nativos do JavaScript, de uma forma simples conseguimos copiar o texto um input!
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
A cópia não funcionou? Se liga nestes três pontos:
Antes de achar que o código está errado, esses são os tropeços mais comuns de quem copia e cola o exemplo
1. O script rodou antes do HTML existir
Se a tag <script> está lá no topo da página, o document.querySelector('#copy') devolve null e o addEventListener quebra na linha seguinte
Joga o script pro final do body e o problema some
2. Seletor trocado
Repare que o botão é pego pelo id (#copy) e a textarea pela classe (.text)
Se você mexeu no HTML e esqueceu de ajustar o JavaScript, o clique até acontece, mas nada vai parar na área de transferência
3. Cópia disparada sozinha
Amarre a cópia a um clique do usuário, exatamente como fizemos aqui
Código que tenta copiar sozinho assim que a página carrega é pedir pra ter dor de cabeça
Já me ferrei uma vez por causa disso haha
Avisando o usuário que o texto foi copiado:
Tem um detalhe de experiência que muda muito a percepção: quem clica não vê nada acontecer
O texto foi pra área de transferência, a tela continua igualzinha, e a pessoa fica na dúvida se funcionou
A saída mais simples é trocar o texto do próprio botão por um instante
let btn = document.querySelector('#copy')
btn.addEventListener('click', function(e) {
let textArea = document.querySelector('.text')
textArea.select()
document.execCommand('copy')
btn.textContent = 'Copiado!'
setTimeout(function() {
btn.textContent = 'Copiar'
}, 2000)
})
O setTimeout devolve o texto original do botão depois de dois segundos
São quatro linhas a mais pra uma sensação de "funcionou" MUITO melhor 🙂
E se o texto não estiver numa textarea?
Aqui vale uma parada rápida pra entender o porquê do exemplo usar textarea
O select() é um método de campo de formulário, ou seja, ele vive em input e textarea
Uma div ou um <p> não têm esse método, então o mesmo código não se aplica direto neles
O caminho mais simples é manter o conteúdo dentro de um campo mesmo, e se você não quer que o visitante edite o texto antes de copiar, é só marcar como somente leitura
<textarea class="text" readonly>Texto para copiar</textarea>
<button id="copy">Copiar</button>
O JavaScript continua exatamente o mesmo
E ninguém bagunça o conteúdo antes do clique 😀
Copiar e colar são problemas diferentes:
Uma parte de quem cai neste artigo está atrás do caminho contrário: pegar o que já está na área de transferência e jogar dentro de um campo
Vale separar bem as duas coisas
Copiar é a sua página ESCREVENDO na área de transferência, foi o que fizemos até aqui
Colar é a sua página lendo o que está guardado lá, e esse conteúdo pode ser qualquer coisa que a pessoa copiou antes, uma senha, um número de cartão, o que for
Não é à toa que os dois lados não são espelhados: escrever é tranquilo, ler é bem mais restrito
Se a sua necessidade é só entregar o botão de copiar, o exemplo deste artigo resolve
E pro usuário colar, o bom e velho Ctrl + V segue fazendo o trabalho sem uma linha de JavaScript
Beleza?
Leia também
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const

Como redirecionar para outra página com JavaScript

Como fazer POST com Fetch API
Neste artigo vou te mostrar como POST com Fetch API, vamos aplicar o recurso de forma fácil com o fetch. Fala programador(a), beleza? Bora aprender […]

Ta dando este erro “script.js:26 Uncaught TypeError: Cannot read properties of null (reading ‘addEventListener’)”
Tem algo errado no seu código…
Show, como faço um botão para colar autmático, ou quando clicar colar automático?
Opa Bruno, é só procurar sobre o evento de paste
Vlw, eu dei uma pesquisada, mas parece que os navegadores tem uma proteção para não funcionar o colar com um click ou automático, eu copei, digitei manualmente para aprender o código mas ele funciona até uma parte e não cola, talvez seja essa proteção de segurança no chrome. Esse é o código.
Sou iniciante com JS e estou arrancando o cabelo já, pq não entendo o que está acontecendo.
HTML
<textarea class=”cl”>Campo para colar</textarea>
<button id=”colar”>Colar</button>
JS
let btn = document.querySelector(‘#colar’);
btn.addEventListener(‘click’, function(e) {
let textArea = document.querySelector(‘.cl’);
textArea.select();
document.execCommand(‘paste’);
});
O navegador pede uma autorização para acessar sua área de transferência e depois permite
BOA-NOITE, HORA DE CODAR!
O SCRIPT FUNCIONOU, MAS FALTOU O PARA COLAR. CHAMAMOS OS CÓDIGOS NUM ÚNICO BOTÃO. SELECIONAMOS E COPIAMOS O TEXTO NA TEXTAREA E COLAMOS NUMA DIV EDITÁVEL. POSTE O SCRIPT COLAR, POR FAVOR.
OBRIGADA PELA ATENÇÃO.
EUSIBELLA D’LACER