Have you ever had the problem where you submit a pull request and the diff is much bigger than it should be? Perhaps the code looks identical but GitHub is telling you that it’s all different? This is typically due to a difference in line endings, primarily the difference of LF
vs CRLF
. Unix systems (Linux and MacOS) default to the LF
(line feed) character for line breaks. Windows on the other hand is special and uses CR/LF
(carriage return AND line feed) by default.

Unless you work on a Windows-only team, the answer is almost always to change all your code to the Unix default of LF
, that’s what we do with all of the code that hosts our coding courses on Qvault.
The Quick Fix for “End of line character is invalid”
If you’re here to quickly fix a single file that you’re having problems with, you’re in luck. At the bottom right of the screen in VS Code, click the little button that says LF
or CRLF
. After changing it to your preference, Voila, the file you’re editing now has the correct line breaks.

The Big Fix
If you want new files to automatically have the correct line endings, then you can set the following setting in the top level of your settings.json file:
For LF:
{
"files.eol": "\n",
}
CRLF:
{
"files.eol": "\r\n",
}
If you set the above in your global settings.json
file it will apply to your entire machine. If you just want the settings for the project you are working on, then edit the settings.json
in the .vscode
directory at the root of your project: .vscode/settings.json
.
This setting will not automatically fix all files in your project that have the wrong line endings! It only applies to new ones. To fix the old ones go through and use the manual method as described in the first paragraph.
What are LF and CRLF?
CR
and LF
are just bytecodes. Computers store text characters as numbers in binary, just 1’s and 0s. Carriage return (CR
), is represented in ASCII (a common character encoding protocol) as 13, or in binary, 00001101
. Likewise, the line feed character (LF
) is 10 or 00001010
. As you can imagine, CRLF
is just both bytes shoved up next to each other: 0000110100001010
.

Thanks For Reading!
Take computer science courses on our new platform
Follow and hit us up on Twitter @q_vault if you have any questions or comments
Subscribe to our Newsletter for more programming articles
You must log in to post a comment.