CSV ↔ JSON Converter
Convert between CSV and JSON. Auto-detect delimiter, quote handling, header row toggle. Browser-only.
CSV ↔ JSON Converter
—Runs entirely in your browser. Your input never leaves your device.
What next?
How it works
CSV não é tão simples quanto parece
"Comma-separated values" parece trivial — quebra por vírgula, quebra por linha, pronto. Na prática, CSV é um pântano: vírgulas dentro de campos precisam de aspas, aspas dentro de campos precisam de aspas duplicadas (""), quebras de linha podem aparecer dentro de strings entre aspas, e Excel exporta em formatos sutilmente diferentes do RFC 4180.
A biblioteca Papa Parse usada aqui implementa o parsing correto e detecta delimitadores automaticamente (vírgula, tab, ponto-e-vírgula, pipe).
O dialeto Excel
Excel em locale brasileiro usa ponto-e-vírgula como separador (porque vírgula é decimal). Locale inglês usa vírgula. Salvando como "CSV UTF-8" vs "CSV" muda o encoding. Resultado: arquivos chamados .csv que não se entendem.
Esta ferramenta detecta o delimiter automaticamente lendo a primeira linha. Se errar, force manualmente.
Header row
Por convenção, a primeira linha é cabeçalho (nome das colunas). O conversor usa esses nomes como chaves no JSON. Sem header, gera chaves numéricas (_0, _1).
name,age,email
Alice,30,[email protected]
Bob,25,[email protected]
Vira:
[
{ "name": "Alice", "age": "30", "email": "[email protected]" },
{ "name": "Bob", "age": "25", "email": "[email protected]" }
]
Note que age vira string. Ative "dynamic typing" para que Papa Parse infira números, booleans, datas.
JSON → CSV: o problema do nesting
JSON pode aninhar ({"user": {"name": "Alice"}}). CSV é plano. O conversor faz flatten com dot-notation: user.name. Arrays viram strings JSON: "[1,2,3]". Você perde a estrutura — é uma transformação lossy por design.
Para JSONs muito aninhados, considere normalizar antes (transformar em tabela relacional) ou usar JSONL (uma linha JSON por record) ao invés de CSV.
Caracteres especiais
Strings com vírgulas, aspas, ou newlines precisam de quoting:
name,bio
"Alice, the explorer","She said ""hello"""
Papa Parse gera quoting automático quando necessário. Você não precisa pensar nisso.
Encoding
UTF-8 é seguro para acentos, emoji e qualquer caractere Unicode. Arquivos legados podem ser Latin-1 (ISO-8859-1) ou Windows-1252. Se acentos aparecem corrompidos, abra o original em editor com encoding detectado e re-salve como UTF-8.
Limites
~5MB de CSV processa rápido. Acima disso, considere streaming. Tudo client-side — nenhum dado sai do navegador.
FAQ
Por que meu CSV brasileiro parece quebrado?
Excel em locale pt-BR usa ; como separador. O conversor detecta automaticamente, mas se errar, force o delimitador manualmente. Também verifique o encoding — UTF-8 vs Latin-1 muda como acentos aparecem.
Por que números viram strings?
Por padrão, todos os valores ficam como string para evitar erros de inferência (CEPs com zero à esquerda, telefones, IDs). Ative "dynamic typing" se quiser que Papa Parse converta "30" em 30 e "true" em true.
JSON aninhado vira o quê em CSV?
Flatten com dot-notation. {"user": {"name": "Alice"}} vira coluna user.name. Arrays viram string JSON: "[1,2,3]". É lossy — voltar ao JSON original não é exato.
Strings com vírgulas funcionam?
Sim. Strings que contêm vírgulas, aspas, ou newlines são automaticamente cercadas por aspas duplas, e aspas internas são escapadas ("). Conforme RFC 4180.
CSV gigante (100MB+) trava?
Sim, navegador trava acima de ~10MB. Para arquivos grandes use Papa Parse em streaming via Node, ou divida o CSV em batches.
Meus dados são enviados para algum servidor?
Não. Papa Parse roda 100% no navegador. Network tab vazio durante conversão. Funciona offline.