Conversor cURL para Fetch (JS & Node)
Converta comandos cURL em código Fetch API instantaneamente. Processe cabeçalhos HTTP, tokens de autenticação, cookies e payloads JSON com async/await moderno.
Converta comandos cURL em código Fetch API instantaneamente. Processe cabeçalhos HTTP, tokens de autenticação, cookies e payloads JSON com async/await moderno.
Converta comandos cURL para a sintaxe da Fetch API instantaneamente. Transforme cabeçalhos HTTP, tokens de autenticação, cookies e payloads JSON em código JavaScript moderno com async/await.
Invocação bruta em linha de comando iniciada por 'curl'. Suporta quebras de linha com barra invertida (backslash), escape de aspas simples e duplas no shell e convenções padrão de flags POSIX.
Define a formatação do código gerado: async/await ES2022 padrão para navegador, TypeScript fortemente tipado com genéricos ApiResponse, sintaxe de servidor Node.js 18+ com AbortSignal, Next.js App Router com tags de cache ou sintaxe do cliente Axios.
Verbo da requisição HTTP. Quando -X é omitido, o cURL assume automaticamente GET, a menos que flags de corpo de requisição (-d, --data, -F) estejam presentes, as quais alteram implicitamente o método padrão para POST.
Cabeçalhos de metadados da requisição. As implementações de fetch no navegador aplicam restrições de cabeçalhos proibidos (por exemplo, Host, Content-Length e Cookie não podem ser sobrescritos manualmente via Headers API por motivos de isolamento de segurança).
Carga de dados transmitida em requisições POST, PUT ou PATCH. Analisada dinamicamente para JSON.stringify() no caso de strings JSON, URLSearchParams() para application/x-www-form-urlencoded ou FormData() para uploads multipart.
Credenciais de autenticação. A flag cURL -u usuário:senha é sintetizada em 'Authorization: Basic <base64>', enquanto -H 'Authorization: Bearer <token>' é extraída em variáveis estruturadas com suporte opcional a mascaramento e ofuscação.
Diferente da CLI do cURL (que imprime códigos de status de erro) ou do Axios (que rejeita promises em respostas 4xx/5xx), a Fetch API nativa do JavaScript só rejeita sua promise quando ocorre uma falha real de rede ou o CORS bloqueia a requisição. Um erro 404 Not Found, 401 Unauthorized ou 500 Internal Server Error ainda resolve a promise com sucesso. Você deve validar explicitamente 'if (!response.ok) throw new Error(`Erro HTTP! status: ${response.status}`);' antes de chamar response.json() ou response.text().
Ao converter comandos cURL de upload de arquivos com -F ('--form') para Fetch, NÃO defina manualmente o cabeçalho 'Content-Type: multipart/form-data'. Fazer isso remove o parâmetro dinâmico de boundary (ex.: 'boundary=----WebKitFormBoundary...'), gerado automaticamente pelo navegador para delimitar as partes do payload. Apenas passe a instância de FormData diretamente para a opção body, e o navegador calculará automaticamente o Content-Type correto com os delimitadores de boundary.
No cURL, passar -d sem um cabeçalho Content-Type explícito assume por padrão 'application/x-www-form-urlencoded', e não JSON. Muitos desenvolvedores envolvem erroneamente -d 'key=val&foo=bar' dentro de JSON.stringify(). Sempre verifique se o seu payload é composto por pares chave-valor (que devem usar 'new URLSearchParams({ key: 'val', foo: 'bar' })') ou JSON válido (que exige 'JSON.stringify(data)' e um cabeçalho explícito 'Content-Type: application/json').
O cURL no terminal pode forjar qualquer cabeçalho HTTP, incluindo 'Cookie', 'User-Agent', 'Referer' e 'Host'. Contudo, no JavaScript Fetch do navegador, a especificação W3C classifica esses cabeçalhos como 'Forbidden Header Names' para mitigar falsificação de requisição cross-site (CSRF) e roubo de cookies. O fetch do navegador descarta silenciosamente cabeçalhos 'Cookie' manuais; em vez disso, passe 'credentials: "include"' (ou 'same-origin') para permitir que o gerenciador de cookies do navegador anexe os tokens de sessão automaticamente.
O cURL é uma ferramenta de linha de comando isenta da Política de Mesma Origem (Same-Origin Policy - SOP) dos navegadores. Ao executar fetch() em JavaScript no lado do cliente contra uma API de terceiros que não retorna cabeçalhos 'Access-Control-Allow-Origin: *', o navegador bloqueia a resposta. Para resolver isso, faça a requisição a partir de um servidor backend (Node.js, Next.js Route Handler ou Cloudflare Worker), onde o CORS não se aplica, ou configure cabeçalhos CORS adequados no servidor de destino.
Esse erro ocorre ao chamar 'await response.json()' em um endpoint que retornou um corpo vazio (ex.: 204 No Content), uma página de erro em HTML (ex.: Cloudflare 502 Bad Gateway) ou texto puro. Sempre verifique se 'response.headers.get('content-type')?.includes('application/json')' antes de invocar response.json(), ou faça a leitura com 'const text = await response.text()' e um tratamento seguro com JSON.parse.
Isso acontece quando 'Content-Type: multipart/form-data' é declarado explicitamente nos cabeçalhos do fetch. Ao usar FormData(), remova totalmente o cabeçalho 'Content-Type' do objeto headers. O navegador ou o runtime do Node.js injetará automaticamente 'multipart/form-data; boundary=----WebKitFormBoundary...' com o delimitador boundary exato calculado.
Ao copiar comandos cURL de múltiplas linhas de scripts bash ou documentações técnicas, espaços em branco após o caractere de barra invertida ('\ ') fazem com que o bash e os analisadores interpretem a quebra de linha como caractere literal e não como continuação de argumentos. Nosso analisador normaliza automaticamente os tokens '\ ' e '\ ', limpando espaços sobressalentes e unificando os trechos do terminal em uma sequência de argumentos contínua.
Para converter um comando cURL para Fetch, extraia a URL de destino da linha de comando, mapeie -X para a propriedade 'method' do fetch (GET, POST, PUT, DELETE), converta cada argumento -H em pares chave-valor no objeto 'headers', formate os payloads de -d ou --data em 'JSON.stringify(payload)' ou 'new URLSearchParams(payload)' dentro da propriedade 'body', e envolva a chamada em uma função 'async/await' com 'const response = await fetch(url, options)'.
O cURL opera como um cliente HTTP direto sem o sandbox de segurança do navegador, ignorando as políticas de Same-Origin Policy e regras de Cross-Origin Resource Sharing (CORS). Os navegadores modernos impõem o CORS para impedir que aplicações web não autorizadas acessem dados confidenciais de outras origens. Se o servidor de destino não enviar o cabeçalho 'Access-Control-Allow-Origin' correspondente à origem da sua aplicação, o navegador abortará a chamada fetch. Para corrigir isso, utilize um proxy backend ou uma rota de API serverless.
No cURL, '-u usuario:senha' envia uma autenticação HTTP Basic. No JavaScript Fetch moderno para navegadores, codifique as credenciais em Base64 usando 'btoa("usuario:senha")' e anexe-as como 'headers: { Authorization: `Basic ${btoa("usuario:senha")}` }'. No Node.js, utilize 'Buffer.from("usuario:senha").toString("base64")' para obter exatamente o mesmo cabeçalho padrão.
No JavaScript para navegador, o cabeçalho 'Cookie' é considerado um nome de cabeçalho proibido (forbidden header name) e não pode ser definido programaticamente nos cabeçalhos do fetch() por padrões de segurança. Para enviar cookies armazenados no navegador para o domínio de destino, defina 'credentials: "include"' nas opções do fetch. Em ambientes de servidor Node.js (onde as restrições de segurança do navegador não existem), você pode passar 'Cookie: session_id=xyz' diretamente no objeto headers.
No cURL, '-d' e '--data-raw' transmitem exatamente a string fornecida, assumindo o Content-Type 'application/x-www-form-urlencoded' por padrão, a menos que sobrescrito por -H. No Fetch, se os dados forem JSON, você deve serializá-los com JSON.stringify() e adicionar 'Content-Type: application/json'. Se o cURL usar '--data-urlencode', os valores dos parâmetros são codificados para URL antes do envio, o que no Fetch é tratado nativamente passando pares chave-valor para 'new URLSearchParams({ key: value }).toString()'.
Valide sitemaps XML e índices de sitemap instantaneamente. Verifique limites de 50 mil URLs, sintaxe W3C Datetime, hreflang, extensões de mídia e erros do Google Search Console.
Simule e visualize snippets do Google para desktop e mobile com limite exato de pixels, badges de schema rich snippets, sitelinks e pontuação de CTR ao vivo.
Gere gradientes de malha CSS multiponto, fundos animados e malhas de cores em SVG. Personalize pontos de controle, textura de ruído analógico e copie código CSS ou Tailwind.
Crie, valide e gere em lote links de rastreamento de campanhas para o Google Analytics GA4 com nosso construtor UTM gratuito. Higienize URLs, analise tags existentes e exporte QR codes.
Formate, valide, embeleze e repare JSON corrompido instantaneamente online. Corrija erros de sintaxe, adicione aspas a chaves, minifique e inspecione nós da árvore com zero envio ao servidor.
Codifique e decodifique strings Base64 ou arquivos binários instantaneamente. Suporte a base64url seguro para URLs, UTF-8, quebras de linha MIME, Data URLs e autorreparo em tempo real.