1001Ferramentas
↩️ Utilitários

Detector de Line Ending (LF/CRLF/CR)

Detecta se um texto usa LF (Unix), CRLF (Windows) ou CR (clássico Mac) e quantos de cada tipo aparecem.

Descobrir se o arquivo está em CRLF, LF ou CR

A quebra de linha nunca virou um padrão só. O Windows terminou a linha com dois caracteres, retorno de carro e avanço de linha — o CRLF. Unix, Linux e macOS moderno usam apenas o avanço de linha, o LF. E o Mac até a versão 9 usava só o retorno de carro, o CR sozinho, que ainda aparece em arquivo antigo e em export de sistema legado.

Cole o texto e a página conta cada tipo separadamente, apontando qual predomina. A contagem trata o CRLF como uma unidade antes de procurar CR e LF avulsos, então um arquivo Windows normal aparece com CRLF alto e os outros dois zerados. Quando os três aparecem misturados, o arquivo passou por editores diferentes sem normalização — situação que quebra script de shell, confunde diff e faz o Git marcar o arquivo inteiro como modificado.

Onde isso costuma morder: script com CRLF em servidor Linux devolve "bad interpreter: /bin/bash^M", porque o retorno de carro entra no nome do interpretador; arquivo de configuração lido linha a linha carrega um caractere invisível no fim de cada valor; e o diff mostra alteração em todas as linhas mesmo quando ninguém tocou no conteúdo. A correção definitiva é combinar a normalização no .gitattributes com o ajuste do editor.

Perguntas frequentes

Colei um texto vindo do Windows e nenhum CRLF apareceu. Por quê?
É esperado. Ao colar num campo de texto, o navegador normaliza a quebra de linha, e o CR original pode não chegar até aqui. Para diagnóstico confiável de arquivo, use file arquivo.txt ou cat -A, que mostram os caracteres de controle. A página é precisa quando o texto vem de uma fonte que preserva os caracteres.
Como converter de CRLF para LF?
No terminal, dos2unix arquivo, ou sed -i 's/\r$//' arquivo. No VS Code, o indicador CRLF/LF no canto inferior direito troca com um clique. Para o repositório inteiro, configure o .gitattributes e rode git add --renormalize . uma vez.
Isso afeta a contagem de caracteres?
Afeta. Cada linha de um arquivo CRLF ocupa um byte a mais que a mesma linha em LF. Em arquivo grande a diferença aparece no tamanho, e em campo com limite de caracteres — descrição, mensagem — o texto pode estourar o limite por causa dos retornos de carro invisíveis.

Ferramentas Relacionadas