Converter CSV para TSV

Aqui você converte CSV para TSV de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Sem perdas Nada é descartado. O TSV guarda exatamente o que o CSV guardava.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

O CSV que nunca foi separado por vírgula

Boa parte dos arquivos com extensão .csv é separada por ponto e vírgula. O Excel escreve assim em qualquer configuração regional onde a vírgula é separador decimal — praticamente toda a Europa continental e boa parte da América do Sul —, porque um arquivo usando a vírgula para as duas coisas ficaria ilegível.

O leitor aqui descobre qual caractere é olhando o arquivo, não o nome, então uma exportação com ponto e vírgula converte sem precisar de aviso. Onde isso falha é num arquivo de uma coluna só: sem separador presente em lugar nenhum, a detecção não tem em que se basear, e é aí que o controle manual de separador nesta página entra.

O que uma vírgula custa a cada programa que lê o arquivo

Vírgula é um separador ruim justamente porque aparece o tempo todo em dados reais: endereço tem vírgula, descrição de produto tem vírgula, razão social terminando em "Ltda." tem vírgula. Todo campo assim precisa ser envolto em aspas, e cada programa que consome o arquivo precisa implementar direito a convenção de aspas.

Tabulação quase nunca aparece no tipo de dado que as pessoas colocam em tabelas, então o separador para de competir com o conteúdo. Depois desta conversão, o campo "São Paulo, SP" aparece exatamente assim, sem aspas nenhuma na linha, e qualquer coisa que divida por tabulação recupera o valor certo.

O controle de separador, e quando usá-lo

O controle oferece detecção automática, vírgula, ponto e vírgula, tabulação e barra vertical. Automático acerta quase sempre, porque um arquivo com várias colunas dá bastante evidência para o detector.

Vale nomear o separador manualmente em dois casos: um arquivo de coluna única, onde não há o que detectar; e um arquivo com uma coluna cheia do caractere errado — um campo de observações repleto de ponto e vírgula dentro de uma exportação separada por vírgula. Se o resultado mostrar uma coluna onde deveriam ser seis, ou o contrário, é isso que ajustar primeiro.

Uma tabulação dentro de um campo do CSV, e o que o TSV faz com ela

Tabulações dentro de campos de CSV acontecem, geralmente porque alguém colou de uma página web ou de outra planilha dentro de uma célula. No arquivo de origem isso é inofensivo, porque o separador é vírgula. Na saída não é, e o conversor lida com isso envolvendo esse campo em aspas duplas.

O resultado é correto para um leitor completo — mas TSV costuma ser escolhido justamente por quem não vai usar um leitor completo: `cut -f` conta caracteres de tabulação e não sabe o que é uma aspa. Se um pipeline produzir saída desalinhada em algumas linhas, essa é quase sempre a causa. Limpe as tabulações na origem antes de converter.

Vírgula decimal, e a coluna de número que na verdade é texto

Uma exportação europeia com ponto e vírgula costuma escrever 1234,56 onde uma versão em português do Brasil escreveria o mesmo formato — mas um arquivo americano escreveria 1234.56. A conversão não traduz isso, e não deveria: não há como saber se "1.234" significa mil duzentos e trinta e quatro ou um vírgula duzentos e trinta e quatro.

O valor permanece exatamente como escrito e, por não parecer número ao leitor, permanece texto. Uma coluna de preço estrangeira atravessa o TSV intacta, e o que vier a ler o arquivo depois precisa ser avisado da convenção decimal usada — em R isso é `dec = ","` na leitura; em pandas, `decimal=","`.

O que a conversão faz de fato com seus valores

Não é uma troca de byte a byte de um separador por outro. O arquivo é lido linha a linha e reescrito, e no caminho valores com cara de número são lidos como número. `true` e `false` viram booleano e voltam como palavra minúscula. Um campo vazio vira nulo e volta como campo vazio — o único caso em que nada visível muda.

A vítima é o zero à esquerda: uma coluna de CEP guardando 01234 chega ao TSV como 1234, e um código de peça com zeros de preenchimento perde eles em silêncio. O teste é simples: se somar dois valores da coluna não faz sentido, é um identificador e corre risco. Confira essa coluna antes de confiar no resultado.

As aspas quase somem da saída

Campos só são colocados entre aspas no TSV quando precisam: quando contêm tabulação, aspas duplas ou quebra de linha. Tudo o mais é escrito solto. Um CSV que chegou com aspas em todo campo — alguns exportadores fazem isso sem necessidade — sai quase sem nenhuma, o que é uma redução real de tamanho num arquivo largo.

Uma aspa dupla dentro de um campo que precisa de aspas é duplicada, a mesma convenção do CSV. Vale saber se o destino for algo que separa de forma ingênua, porque uma coluna de texto livre com aspas dentro é a outra coisa que gera um campo entre aspas onde ninguém esperava.

Quebra de linha e codificação no TSV que você recebe

Linhas são separadas por um único caractere de nova linha, e não pelo par usado no Windows, e o texto é UTF-8 sem marca de ordem de bytes. É o que um pipeline Unix, um diff do Git, R e pandas esperam, e é o que a maioria das ferramentas Windows aceita hoje também.

A ausência da marca de ordem de bytes tem uma consequência: abrir o arquivo com duplo clique no Excel do Windows pode mostrar acento como texto corrompido, já que o Excel recorre à codificação padrão do sistema quando não há marca dizendo o contrário. Importar via Dados, Obter Dados, De Texto/CSV e escolher UTF-8 evita isso.

Onde a conversão roda e que tamanho ela aguenta

Os dois formatos são texto puro e os dois leitores são JavaScript puro, então a conversão inteira roda nesta página. Nenhuma requisição carrega o arquivo para lugar nenhum, não há fila e não há nível pago — o que importa porque um CSV costuma ser lista de cliente, exportação de pedido ou extrato de sistema, dados que seria constrangedor explicar por que foram enviados a terceiros.

O limite é a memória, não uma política: o arquivo inteiro é lido em linhas antes de ser escrito, então dezenas de megabytes são rotina, e centenas é onde uma aba começa a sofrer. Passado isso, um leitor por streaming num script é a ferramenta certa.

Quando o arquivo deveria continuar sendo CSV

Se o destino é uma tela de importação que pede CSV literalmente, deixe como CSV — muitos formulários levam a palavra ao pé da letra e recusam um arquivo separado por tabulação por mais sensata que seja a escolha. Não vale a briga.

Saída separada por tabulação vale a pena quando algo vai dividir o arquivo por caractere em vez de fazer uma leitura completa: um script de shell, um script em R, uma colagem num programa com importação por tabulação. Se os valores precisam manter o tipo na jornada, nenhum formato delimitado ajuda — um arquivo de texto não distingue o número 7 da string "7" — e JSON, NDJSON ou Parquet é o destino honesto.

Como converter CSV para TSV

  1. Solte o seu arquivo CSV nesta página, ou clique para escolher um.
  2. Escolha TSV como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo TSV pronto.

CSV ou TSV: o que muda

CSV comparado com TSV
CSVTSV
Nome completoComma-Separated ValuesTab-Separated Values
Extensão do arquivo.csv.tsv, .tab
Tipo de mídiatext/csvtext/tab-separated-values
Publicado pela primeira vez19721993
EspecificaçãoRFC 4180IANA text/tab-separated-values
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorNenhum navegador
Considerado no lugarXLSX, JSON, ParquetJSON

O que se mantém

Nada é descartado. CSV e TSV guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.

Abrir o resultado

Microsoft Excel, LibreOffice Calc e pandas leem tanto CSV quanto TSV, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

CSV foi publicado em 1972. Está descrito em RFC 4180, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

TSV e de 1993, descrito em IANA text/tab-separated-values. Microsoft Excel, LibreOffice Calc e pandas leem o formato.

CSV foi publicado em 1972 e TSV em 1993. O mais antigo costuma ser o arquivo mais seguro para entregar; o mais novo faz o mesmo com menos bytes.

De CSV para TSV: perguntas frequentes

Meu arquivo CSV é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter CSV para TSV é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter CSV para TSV?

Não. TSV guarda o mesmo conteúdo sem jogar nada fora: o resultado é idêntico em qualidade ao original.

A conversão de CSV para TSV é sem perda?

Nada é descartado. CSV e TSV guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.

Mais sobre esses formatos