Crie conteúdo QR para URL, WiFi, vCard, SMS ou e-mail
Uma imagem QR é apenas a representação visual de um conteúdo textual, e cada tipo de conteúdo exige uma sintaxe própria.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
Este gerador transforma campos comuns em uma string pronta para codificar um site, uma rede WiFi, um contato vCard, uma mensagem SMS ou um rascunho de e-mail. Ele aplica delimitadores, escapes, finais de linha e codificação URI adequados ao formato escolhido e devolve um texto determinístico que você pode enviar diretamente a uma biblioteca QR, serviço de imagem, fluxo de impressão ou teste automatizado.
Escolha o tipo de conteúdo antes de preencher os campos
Comece pelo tipo de conteúdo correspondente à ação que você deseja oferecer após a leitura. Uma carga URL é simplesmente um endereço HTTP ou HTTPS absoluto e válido, aberto no navegador pela maioria dos aplicativos de câmera. Uma carga WiFi inclui o nome da rede, o modo de segurança, a senha quando exigida e uma indicação opcional de rede oculta. Um vCard representa um contato reutilizável. SMS fornece um número de destino e uma mensagem predefinida opcional, enquanto e-mail oferece um destinatário com assunto e corpo opcionais. Somente o formato selecionado determina quais campos são obrigatórios; portanto, um endereço de e-mail não é solicitado ao montar uma carga WiFi. Se faltar um valor necessário, o gerador informa claramente que a entrada é inválida. O contrato condicional atende formulários e automações sem criar conteúdo incompleto silenciosamente. O resultado contém o tipo normalizado e a string final; ele não renderiza pixels, contata destinatários nem testa se o destino existe.
Entenda como os caracteres reservados são tratados
Os formatos de conteúdo QR usam pontuação como estrutura, por isso alguns sinais digitados pelo usuário precisam ser protegidos. Em WiFi, as propriedades são separadas por ponto e vírgula e os nomes são separados dos valores por dois-pontos. O gerador escapa barras invertidas e pontuação reservada dentro do nome ou da senha, mantendo esses caracteres como dados. O texto vCard recebe escapes próprios para barras invertidas, vírgulas, pontos e vírgulas e quebras de linha; o cartão é montado com campos da versão 3.0 e finais CRLF. O e-mail é representado por um URI mailto. Assunto e corpo são codificados como valores de consulta, preservando espaços, e comerciais, quebras e caracteres não ASCII sem alterar a estrutura. SMS usa o formato compacto SMSTO aceito por muitos leitores. As regras são específicas: uma codificação URL genérica corromperia WiFi e vCard, enquanto não codificar a consulta do e-mail poderia mudar o conteúdo interpretado.
Use a string retornada em um codificador ou teste
Envie a carga retornada, sem alterações, para a entrada de texto do seu codificador QR. O codificador deve tratá-la como dados e definir o nível de correção de erros, o tamanho da imagem, a margem e o formato de saída; essas decisões visuais não fazem parte da construção do conteúdo. Separar as etapas ajuda sistemas de produção, pois a mesma carga canônica pode alimentar SVG, PNG, PDF, impressoras de etiquetas ou código móvel sem duplicar regras. Os testes também ficam simples: armazene entradas representativas e compare a string exata, inclusive finais de linha do vCard e delimitadores WiFi escapados, antes de gerar imagens. Se a leitura apresentar comportamento inesperado, confira primeiro o texto e depois as opções do codificador e o suporte do leitor. O gerador é determinístico e não usa rede, aleatoriedade nem horário. Para tarefas avulsas, use o navegador; a API custa US$ 0,002 por solicitação e atende lotes, modelos, pipelines de implantação e aplicações de servidor.
Casos de uso
Prepare cartões de WiFi
Monte uma carga de rede com escapes antes de renderizar códigos QR de acesso para placas, quartos ou kits de boas-vindas.
Gere etiquetas de contato
Transforme dados de contato em uma carga vCard 3.0 para codificação em crachás, cartões e encartes de produtos.
Teste um fluxo de QR
Valide strings exatas de URL, SMS e e-mail sem depender da renderização da imagem nem de testes com leitores.
Perguntas frequentes
Esta ferramenta cria uma imagem de código QR?
Não. Ela cria a string de conteúdo que você fornece separadamente a um codificador QR.
Quanto custa?
Você pode executar gratuitamente no navegador nesta página ou pagar US$ 0,002 por solicitação pela API.
Quais modos de segurança WiFi são aceitos?
WPA, WEP e nopass são aceitos. WPA e WEP exigem senha; nopass não exige.
Qual versão de vCard é gerada?
O gerador produz vCard 3.0 com nome estruturado, nome de exibição e os dados opcionais fornecidos.
Assunto e corpo do e-mail podem ter espaços ou quebras de linha?
Sim. Eles são codificados como valores de consulta mailto para preservar caracteres reservados e quebras de linha.
A ferramenta verifica URL, telefone, rede ou caixa postal?
Não. Ela valida localmente o formato necessário, mas não consulta serviços externos nem confirma a existência do destino.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/web/qr-payload-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"wifi"}'const res = await fetch("https://api.kit.forhosting.com/web/qr-payload-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"type": "wifi"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/qr-payload-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"type": "wifi"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/qr-payload-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"type":"wifi"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"type":"wifi"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/qr-payload-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"type": "wifi"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.qr_payload_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
timeout_sec | 30 |
max_crawl_pages | 25 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |