Converter CSV para JSON
Cole o CSV e receba o JSON no navegador, com o delimitador reconhecido sozinho, com ou sem cabeçalho, prévia em tabela e download local. CPF com zero à frente e número grande continuam intactos.

A conversão acontece no seu navegador. A planilha não é enviada para servidor nenhum, nem fica salva aqui.
Sem cabeçalho, cada linha vira uma lista de valores em vez de um objeto com nomes de campo.
196 caracteres · 4 linhas · limite 200.000
O que a conversão precisou mudar ou preservar
- Estas colunas continuaram como texto porque virar número perderia dígito (zero à esquerda ou número grande demais): cpf, cep, matricula, mensalidade.
Prévia do que vai para o JSON3 linhas · 6 colunas
| nome | cpf | cep | matricula | mensalidade | ativo |
|---|---|---|---|---|---|
| Ana Souza | 00845678909 | 01311000 | 12345678901234567890 | 249.90 | true |
| Bruno Lima | 12345678909 | 20040020 | 7 | 180 | false |
| Carla Dias | 98765432100 | 70040010 | 1024 | 315.5 | true |
JSON gerado
[
{
"nome": "Ana Souza",
"cpf": "00845678909",
"cep": "01311000",
"matricula": "12345678901234567890",
"mensalidade": "249.90",
"ativo": true
},
{
"nome": "Bruno Lima",
"cpf": 12345678909,
"cep": 20040020,
"matricula": 7,
"mensalidade": 180,
"ativo": false
},
{
"nome": "Carla Dias",
"cpf": 98765432100,
"cep": 70040010,
"matricula": 1024,
"mensalidade": 315.5,
"ativo": true
}
]O download é gerado e salvo pelo próprio navegador. O arquivo não passa por servidor nenhum.
Antes e depois, com as duas armadilhas à vista
A planilha abaixo tem um CEP que começa com zero e uma matrícula de 20 dígitos. São exatamente os dois casos em que a conversão descuidada estraga o dado sem avisar.
CSV de entrada
nome;cep;matricula;ativo Ana Souza;01311000;12345678901234567890;true
JSON gerado aqui
[
{
"nome": "Ana Souza",
"cep": "01311000",
"matricula": "12345678901234567890",
"ativo": true
}
]Um conversor que trata todo número como número devolveria "cep": 1311000 e "matricula": 12345678901234567000. O primeiro perdeu o zero da frente e o segundo perdeu os últimos dígitos, porque o tipo numérico do JavaScript só garante inteiro exato até 9.007.199.254.740.991. Nos dois casos o arquivo continua parecendo correto, e o erro aparece semanas depois, quando alguém tenta cruzar esses dados com outra base.
Como cada célula da planilha sai no JSON
Deslize a tabela para o lado: são 4 colunas.
| Na planilha | O que é | No JSON | O que aconteceu |
|---|---|---|---|
00845678909 | CPF que começa com zero | "00845678909" | continuou texto, porque como número voltaria 845678909 |
007 | código com zeros à esquerda | "007" | continuou texto, porque como número voltaria 7 |
249.90 | preço com zero no fim | "249.90" | continuou texto, porque como número voltaria 249.9 |
315.5 | decimal com ponto | 315.5 | virou número, porque a volta devolve o mesmo texto |
1,50 | decimal com vírgula | "1,50" | continuou texto, porque o JSON não tem esse formato de valor |
-5 | número negativo | -5 | virou número, porque a volta devolve o mesmo texto |
1e3 | notação científica | "1e3" | continuou texto, porque como número voltaria 1000 |
true | booleano em minúsculas | true | virou booleano do JSON |
TRUE | booleano em maiúsculas | "TRUE" | continuou texto, porque o JSON não tem esse formato de valor |
null | a palavra null | null | virou null do JSON |
| vazia | célula vazia | "" | virou texto vazio, e não null |
Cada linha foi gerada pelo próprio conversor desta página, quando a página foi publicada, com a mesma regra que roda quando você cola o arquivo. Tipos do JSON: RFC 8259.
Em resumo
O conversor de CSV para JSON transforma cada linha da planilha num objeto, com os nomes do cabeçalho como chaves, e roda no seu navegador, sem enviar o arquivo. O delimitador é reconhecido pelo próprio texto entre 4 opções: vírgula, ponto e vírgula, tabulação e barra. Vence a que dá o mesmo número de colunas em todas as linhas, e não a que aparece mais vezes. É por isso que a planilha do Excel em português, que sai com ponto e vírgula e usa vírgula no decimal, não vira uma coluna só.
Na tipagem, true, false e null viram os valores do JSON, e texto com cara de número só vira número se a volta for idêntica. Na planilha que abre com a página, 4 das 6 colunas ficam como texto em pelo menos uma linha: CPF e CEP pelo zero à esquerda, a matrícula de 20 dígitos por passar do limite do JavaScript e a mensalidade 249.90, que voltaria como 249.9. A prévia mostra as 50 primeiras linhas, e o JSON e o download trazem o arquivo inteiro, de até 200 mil caracteres colados. A leitura segue a RFC 4180, de outubro de 2005.
Outras ferramentas de dados e formatos
- Formatador de JSONFormate, valide e minifique JSON sem que um número grande mude de valor nem uma chave repetida desapareça. O erro vem com a linha e a coluna. Tudo no seu navegador.
- Conversor de dadosConverta CSV, JSON, YAML e XML sem perder dado: CPF com zero na frente e número grande continuam inteiros, e toda transformação é avisada. Tudo no seu navegador.
- Codificador Base64Codifique texto para Base64 ou decodifique Base64 para texto diretamente no navegador. Suporte completo a UTF-8, emojis e caracteres acentuados. Processamento 100% local.
- Codificar e decodificar URLCodifique, decodifique e analise URLs completas no navegador. Separa protocolo, host, porta, caminho, query string e fragmento. Usa APIs nativas, processamento 100% local, sem fetch externo.
- Conversor de timestamp UnixConverta Timestamp Unix para data/hora legível ou vice-versa. Suporte a segundos e milissegundos. Exibe ISO 8601, UTC, data e hora local. Processamento 100% local no navegador.
- Conversor binário, decimal e hexadecimalConverta números entre decimal, binário, hexadecimal e octal instantaneamente. Informe o valor e a base de origem e veja todas as representações em paralelo. Processamento 100% local.
Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.
Cole o CSV, confirme o delimitador e se a primeira linha é cabeçalho, e o JSON aparece pronto para copiar ou baixar. Com cabeçalho, cada linha vira um objeto com os nomes das colunas como chaves. Tudo roda no seu navegador, e valores como CPF e CEP com zero à frente continuam exatamente como estavam.
Como funciona a conversão de CSV para JSON
A leitura segue o padrão do RFC 4180: o texto é percorrido caractere a caractere, respeitando aspas duplas, de modo que um campo entre aspas pode conter o delimitador, quebra de linha e aspas escapadas. A marca de ordem de byte que o Excel escreve no começo do arquivo é removida, senão a primeira coluna viraria uma chave com um caractere invisível na frente e nenhum acesso por nome funcionaria.
Depois vem a tipagem. O CSV não carrega tipo nenhum, então cada célula é examinada: true, false e null viram os valores correspondentes do JSON, e texto que parece número só vira número quando a conversão é reversível. O teste é literal: converte, escreve o número de volta como texto e compara com o original. Se der diferente, o campo permanece string, e a página lista as colunas em que isso aconteceu, em vez de mudar o dado calada.
Para o caminho inverso e para YAML e XML, use o conversor de dados completo. Para validar ou formatar o JSON gerado, o formatador e validador de JSON, e para comparar duas versões do mesmo arquivo, o comparador de texto.
Método
com cabeçalho: [ { coluna1: valor, coluna2: valor } ]
sem cabeçalho: [ [ valor, valor ] ]
vira número apenas se String(Number(texto)) === texto
Base: RFC 4180 (formato CSV) e RFC 8259 (formato JSON). A conversão é determinística e roda no seu navegador, sem enviar dado nenhum.
Limitações
- O limite de entrada é de 200 mil caracteres colados na página. Planilha maior que isso é melhor converter por script, porque o navegador precisaria manter o texto e o resultado na memória ao mesmo tempo.
- A prévia em tabela mostra as 50 primeiras linhas. O JSON gerado e o download trazem o arquivo inteiro.
- Toda célula de uma coluna é avaliada sozinha, então a mesma coluna pode sair com tipos diferentes em linhas diferentes se o arquivo for inconsistente. O conversor não força um tipo por coluna, e diz quais colunas precisou preservar como texto.
- Decimal com vírgula (
1,50) é lido como texto, e não como número, porque o JSON usa ponto. Converta a coluna na planilha antes se precisar do valor numérico.
Coloque esta ferramenta no seu site, de graça
Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.
Calculadoras relacionadas
Ferramenta transparente, com o método explicado
Atualizado em . Fontes: RFC 4180 (CSV) / RFC 8259 (JSON).
Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.
Referências técnicas
- RFC 4180, formato Comma-Separated ValuesTécnica
- RFC 8259, formato JSONTécnica
- MDN Web Docs, Number.MAX_SAFE_INTEGERTécnica
- MDN Web Docs, JSON.stringify()Técnica
Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.
Incorpore esta calculadora no seu site (grátis)
Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.
Perguntas frequentes
Como converter CSV para JSON sem estragar CPF e CEP?
O risco é o conversor transformar 00845678909 em 845678909, porque o texto parece número. Aqui a conversão para número só acontece quando ela é reversível: o valor vira número, volta para texto e, se o texto de volta for diferente do original, o campo continua string. CPF, CEP e código de barras que começam com zero ficam como texto, e também o número longo que voltaria com outros dígitos, como a matrícula de 20 dígitos do exemplo. A página avisa quais colunas foram preservadas assim.
Qual delimitador usar, vírgula ou ponto e vírgula?
Use o que está no seu arquivo. Planilha exportada em português costuma sair com ponto e vírgula, porque a vírgula é o separador decimal aqui; arquivo gerado por sistema costuma vir com vírgula. Ao colar o conteúdo, o delimitador é reconhecido sozinho: o critério é qual caractere produz o mesmo número de colunas em todas as linhas, e não qual aparece mais vezes.
Como converter uma planilha do Excel para JSON?
Selecione as células no Excel ou no Google Planilhas, copie e cole no campo CSV de entrada. A cópia de planilha chega como texto separado por tabulação, e o delimitador é reconhecido sozinho. Outra forma é salvar como CSV e abrir o arquivo num editor de texto para copiar. A marca invisível que o Excel grava no começo do CSV UTF-8 é removida, então a primeira coluna não ganha caractere escondido no nome. Antes de baixar, confira na prévia se as colunas saíram separadas.
O que muda quando desligo o cabeçalho?
Com cabeçalho ligado, a primeira linha vira o nome dos campos e cada linha seguinte vira um objeto, no formato [{"nome": "Ana", "cpf": "008..."}]. Com o cabeçalho desligado, nenhuma linha é tratada como nome de campo e o resultado é uma lista de listas, no formato [["nome", "cpf"], ["Ana", "008..."]]. Desligue quando o arquivo começa direto nos dados. Com o cabeçalho ligado, dois nomes iguais na primeira linha fazem cada objeto ficar só com o valor da última coluna daquele nome, e o aviso aponta o nome repetido.
O conversor entende campo com vírgula dentro e aspas?
Sim. O leitor respeita as aspas duplas do padrão RFC 4180: um campo entre aspas pode conter o delimitador, quebra de linha e aspas escapadas como duas aspas seguidas. Um endereço escrito como "Rua A, 100" continua sendo uma coluna só, e quebras de linha no estilo Windows também são tratadas. Sem as aspas, a vírgula do endereço abre uma coluna a mais: essa linha fica com mais células que o cabeçalho, a sobra fica de fora do JSON e o aviso diz quantas linhas passaram por isso.
Por que 249.90 continua texto e 315.5 vira número?
Porque 249.90, lido como número, volta como 249.9: o zero do fim some, e esta página só converte quando a volta é idêntica. Já 315.5 volta igual e vira número. Na planilha de exemplo isso faz a coluna mensalidade sair com tipos diferentes em linhas diferentes, e o aviso lista a coluna. Se o sistema que vai ler o JSON precisa de número em todas as linhas, converta a coluna no código, com a regra de arredondamento dele; se precisa do valor como foi digitado, o texto já é o certo.
Por que true e false viram booleano e alguns números continuam texto?
O CSV não tem tipos: tudo é texto. Para o JSON ficar útil, a conversão reconhece true, false e null como valores do JSON, e reconhece número quando a conversão é segura. A regra de segurança é a mesma em todos os casos: se converter mudaria o valor, o campo fica como texto. É isso que impede 007 de virar 7 e um identificador de 20 dígitos de perder os últimos dígitos.
O que é o aviso amarelo acima da prévia?
É a caixa "O que a conversão precisou mudar ou preservar". Ela aparece quando alguma célula tem cara de número mas ficaria diferente se virasse número, e lista cada coluna em que isso aconteceu. Na planilha que abre com a página, são 4 das 6 colunas: cpf, cep, matricula, mensalidade. A mesma caixa avisa quando uma linha tem células a mais ou a menos que o cabeçalho. O aviso não é erro: o JSON foi gerado, e as células preservadas estão nele como estavam na planilha.
Por que a prévia mostra só algumas linhas?
A tabela "Prévia do que vai para o JSON" serve para conferir se as colunas saíram separadas e se o cabeçalho foi lido certo, e para isso as 50 primeiras linhas bastam. Desenhar dezenas de milhares de linhas deixaria a aba lenta. O contador ao lado do título diz quantas linhas e colunas o arquivo inteiro tem, e o JSON gerado, a cópia e o download trazem todas. Se o contador mostra uma coluna só, o delimitador está errado: troque no campo Delimitador das colunas.
Como transformar o JSON de volta em CSV?
Esta página faz só o sentido de CSV para JSON. Para voltar, use o conversor de dados, na aba JSON → CSV: ele escreve uma coluna por chave, põe entre aspas a célula que tem vírgula ou aspas e coloca um apóstrofo na frente do texto que começa com =, +, - ou @, para a planilha não executar como fórmula. Número negativo e número grande saem como estavam. O mesmo conversor faz JSON para YAML e para XML, e o caminho de volta de cada um.
O arquivo é enviado para algum servidor?
Não. A conversão roda no seu navegador, em JavaScript, e o download é gerado pelo próprio navegador a partir do texto que já está na página. Nenhuma linha da sua planilha sai do computador, e nada fica salvo aqui depois que você fecha a aba. A única requisição que a ferramenta dispara é o registro de uso da estatística do site, uma vez, na primeira conversão que você pede, com o endereço da página e nada do conteúdo.