Convertidor cURL a Fetch (JS & Node)
Convierte comandos cURL a sintaxis Fetch API al instante. Analiza cabeceras HTTP, tokens de autenticación, cookies y cargas JSON a código JavaScript moderno con async/await.
Convierte comandos cURL a sintaxis Fetch API al instante. Analiza cabeceras HTTP, tokens de autenticación, cookies y cargas JSON a código JavaScript moderno con async/await.
Convierte comandos cURL a sintaxis Fetch API al instante. Analiza cabeceras HTTP, tokens de autenticación, cookies y cargas JSON en código JavaScript moderno con async/await.
Invocación directa desde la línea de comandos iniciada con 'curl'. Admite continuaciones de línea multilínea con barra invertida (\), escape de comillas simples y dobles de shell, y convenciones estándar de flags POSIX.
Define el formato de emisión del código: async/await estándar ES2022 para navegador, TypeScript fuertemente tipado con genéricos ApiResponse, sintaxis de servidor Node.js 18+ con AbortSignal, Next.js App Router con etiquetas de caché o sintaxis de cliente Axios.
Verbo de la petición HTTP. Cuando se omite -X, cURL adopta GET por defecto automáticamente, a menos que existan flags de cuerpo de petición (-d, --data, -F), los cuales cambian implícitamente el método predeterminado a POST.
Metadatos personalizados de la petición. Las implementaciones de fetch en el navegador aplican restricciones de cabeceras prohibidas (por ejemplo, Host, Content-Length y Cookie no pueden sobrescribirse manualmente mediante la API Headers por motivos de aislamiento de seguridad).
Carga útil de datos transferida en peticiones POST, PUT o PATCH. Se procesa dinámicamente como JSON.stringify() para cadenas JSON, URLSearchParams() para application/x-www-form-urlencoded o FormData() para cargas multipart.
Credenciales de autenticación. cURL -u usuario:contraseña se sintetiza en 'Authorization: Basic <base64>', mientras que -H 'Authorization: Bearer <token>' se extrae en variables estructuradas con enmascaramiento opcional de seguridad.
A diferencia de cURL CLI (que muestra códigos de error en terminal) o Axios (que rechaza promesas ante respuestas 4xx/5xx), la API nativa Fetch de JavaScript solo rechaza su promesa ante un fallo de red real o cuando CORS bloquea la petición. Una respuesta 404 Not Found, 401 Unauthorized o 500 Internal Server Error se resuelve exitosamente. Debes comprobar explícitamente 'if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);' antes de invocar response.json() o response.text().
Al convertir comandos cURL con subida de archivos mediante -F ('--form') a Fetch, NO agregues manualmente la cabecera 'Content-Type: multipart/form-data'. Si lo haces, eliminarás el parámetro dinámico de delimitación (por ejemplo, 'boundary=----WebKitFormBoundary...') que el navegador genera automáticamente para segmentar el payload. Pasa la instancia de FormData directamente a la propiedad body y el entorno calculará el Content-Type correcto con sus límites correspondientes.
En cURL, enviar -d sin especificar una cabecera Content-Type explícita asume por defecto 'application/x-www-form-urlencoded', no JSON. Muchos desarrolladores cometen el error de encapsular -d 'key=val&foo=bar' dentro de JSON.stringify(). Comprueba siempre si tu payload son pares clave-valor (que deben usar 'new URLSearchParams({ key: 'val', foo: 'bar' })') o JSON válido (que requiere 'JSON.stringify(data)' y la cabecera explícita 'Content-Type: application/json').
Desde la terminal, cURL puede forjar cualquier cabecera HTTP, incluidas 'Cookie', 'User-Agent', 'Referer' y 'Host'. Sin embargo, en el navegador, la especificación W3C Fetch cataloga estas cabeceras como 'Forbidden Header Names' para prevenir ataques de falsificación de peticiones en sitios cruzados (CSRF) y robo de cookies. La función fetch del navegador descartará silenciosamente cabeceras 'Cookie' manuales; en su lugar, utiliza 'credentials: "include"' (o 'same-origin') para permitir que el gestor de cookies del navegador adjunte las credenciales de sesión automáticamente.
cURL es una herramienta de línea de comandos exenta de la Política de Mismo Origen (Same-Origin Policy). Al ejecutar fetch() en JavaScript del lado del cliente contra una API de terceros que no devuelve cabeceras 'Access-Control-Allow-Origin: *', el navegador bloquea la lectura de la respuesta. Para solucionarlo, invoca la API desde un servidor backend (Node.js, Route Handler de Next.js o Cloudflare Worker) donde no aplica CORS, o configura las cabeceras CORS adecuadas en el servidor de destino.
Este error ocurre al invocar 'await response.json()' en un endpoint que devuelve un cuerpo vacío (por ejemplo, 204 No Content), una página de error en HTML (como Cloudflare 502 Bad Gateway) o texto plano. Verifica siempre 'response.headers.get('content-type')?.includes('application/json')' antes de llamar a response.json(), o inspecciona 'const text = await response.text()' utilizando una captura segura con JSON.parse.
Esto ocurre cuando se declara explícitamente 'Content-Type: multipart/form-data' en las cabeceras de fetch. Al usar FormData(), elimina por completo la cabecera 'Content-Type' del objeto headers. El navegador o el entorno Node.js inyectará automáticamente 'multipart/form-data; boundary=----WebKitFormBoundary...' con el delimitador multipart exacto calculado.
Al copiar comandos cURL multilínea de scripts bash o documentación técnica, los espacios posteriores a la barra invertida ('\ ') provocan que bash y los analizadores interpreten el salto de línea como texto literal y no como continuación de argumentos. Nuestro conversor normaliza automáticamente los tokens '\ ' y '\ ', limpiando espacios en blanco y fusionando fragmentos multilínea en una secuencia coherente de argumentos.
Para convertir un comando cURL a Fetch, extrae la URL de destino de la línea de comandos, asigna el flag -X a la propiedad 'method' de fetch (GET, POST, PUT, DELETE), transforma cada argumento -H en pares clave-valor dentro del objeto 'headers', estructura los datos de -d o --data mediante 'JSON.stringify(payload)' o 'new URLSearchParams(payload)' en la propiedad 'body', y encapsula la llamada en una función 'async/await' con 'const response = await fetch(url, options)'.
cURL opera como un cliente HTTP directo sin el entorno de seguridad aislado del navegador, por lo que ignora la Política de Mismo Origen y las reglas de Cross-Origin Resource Sharing (CORS). Los navegadores modernos imponen CORS para impedir que aplicaciones web no autorizadas lean datos sensibles de otros orígenes. Si el servidor de destino no devuelve 'Access-Control-Allow-Origin' autorizando el origen de tu aplicación web, el navegador cancela la petición fetch. Para solucionarlo, canaliza la petición a través de un proxy backend o una ruta API serverless.
En cURL, '-u usuario:contraseña' envía cabeceras HTTP Basic Authentication. En JavaScript Fetch para navegadores modernos, codifica las credenciales en Base64 mediante 'btoa("usuario:contraseña")' y añádelas como 'headers: { Authorization: `Basic ${btoa("usuario:contraseña")}` }'. En Node.js, utiliza 'Buffer.from("usuario:contraseña").toString("base64")' para generar exactamente el mismo valor estándar de cabecera.
En el JavaScript del navegador, la cabecera 'Cookie' está catalogada como nombre de cabecera prohibido y no se puede configurar programáticamente en fetch() por directrices de seguridad. Para enviar las cookies almacenadas en el navegador hacia el dominio de destino, asigna 'credentials: "include"' en el objeto de opciones de fetch. En entornos de servidor Node.js (donde no aplican las restricciones del navegador), puedes enviar 'Cookie: session_id=xyz' directamente dentro del objeto headers.
En cURL, '-d' y '--data-raw' transmiten la cadena exacta proporcionada, estableciendo por defecto el Content-Type en 'application/x-www-form-urlencoded' salvo que se anule mediante -H. En Fetch, si la carga útil es JSON, debes serializarla con JSON.stringify() y enviar 'Content-Type: application/json'. Si el comando cURL emplea '--data-urlencode', los valores de los parámetros se codifican en formato URL antes del envío, lo que en Fetch se resuelve de forma nativa pasando los pares clave-valor a 'new URLSearchParams({ key: value }).toString()'.
Valide sitemaps XML e índices al instante. Compruebe límites de 50k URLs, sintaxis W3C Datetime, etiquetas hreflang y errores de Google Search Console.
Previsualiza fragmentos de búsqueda SERP de Google para móvil y escritorio con cálculo exacto de píxeles, marcado schema enriquecido, enlaces de sitio y puntuación de CTR en tiempo real.
Genera gradientes mesh CSS multipunto, fondos animados y mallas de color SVG. Personaliza puntos de control, textura de grano y exporta código CSS o Tailwind optimizado.
Crea, valida y genera enlaces de seguimiento de campañas para Google Analytics GA4 con nuestro creador UTM gratuito. Limpia URLs, analiza etiquetas y exporta códigos QR.
Formatea, valida, embellece y repara JSON dañado al instante. Corrige errores de sintaxis, añade comillas a claves, minifica e inspecciona nodos del árbol AST sin enviar datos al servidor.
Codifica y decodifica cadenas Base64 o archivos binarios al instante. Compatible con base64url seguro para URLs, UTF-8 unicode, ajuste MIME, Data URLs y autorreparación.