In the Lord of the Rings fandom there’s a persistent debate whether balrogs, or Durin’s Bane specifically, have wings. The text in Fellowship is ambiguous whether what it is describing are literal wings or something else wing-like.
In the Lord of the Rings fandom there’s a persistent debate whether balrogs, or Durin’s Bane specifically, have wings. The text in Fellowship is ambiguous whether what it is describing are literal wings or something else wing-like.
Are tabs worth two spaces or four?
However many I feel like that day. Sometimes depends on the language and use case - if it tends to be deeply indented, I’d gravitate towards 2.
If using actual tabs, you can change how they appear just for yourself without touching the actual code; the same can’t be said about spaces.
I was trying to stay out of the fray but this one I feel I have to respond to:
This is why I use spaces. A space is a space everywhere, a tab depends too strongly on the editor. I’ve had too many times where I had to edit on a different machine and it transmogrified my tabs into a different non-character entity in a way that didn’t reveal itself until later.
I can kind of see your point if you’re speaking from a devops/sysadmin’s point of view (i.e. something that would require you to use default editors on the go on systems that you don’t necessarily have control over).
Other than that, a tab’s principal purpose is indentation. One tab is one level of indentation regardless of how it appears. If a tab gets transformed into something else, it sounds like a text encoding problem and indentation would then be just one of (and possibly the smallest of) several possible issues.
I’m speaking from a web dev’s point of view - I’m assuming that I’ll always have my own configured editor on hand and I’ll be able to tell it that one tab is N spaces, sometimes even differently for different file types in the same project. Worst that could happen is that I don’t have a specific configuration and the editor just falls back to the default until I set otherwise. Since I’m working in a team, using spaces for a source controlled project would mean that everyone has to use the same. Having tabs means that everyone can configure it for themselves (assuming editor configs don’t go in the repo).
Live a little and do a mix of both
This way people from both sides of the argument can hate you. Win-win!
Four, but I’m a spaces fella.
That’s the beauty of tabs, it can be whatever you want.
But the correct answer is 4
I’m a spaces guy, but agree on the 4. A coder told me decades ago that 4 is better than 2 because if your code starts wrapping due to too many indents you should be refactoring it into functions anyway.
Spaces, in 2026? Why?
In part, because it forces 2-space tab users to confront the indentation issue above
Also there are no drawbacks… I still hit the tab key to indent (and shift tab to dedent). My editor does the rest.
The drawback to spaces is that people with vision issues or dyslexia lose the ability to make the code more readable in their IDE by adjusting tab size.
I can’t speak to dyslexia (but in would guess that 4 spaces is easier than 2?).
At my last job we had a default linter policy of 4 spaces across all languages (python, JS, rust, mostly). We also had a blind coder. He never mentioned it. I’d guess screen readers are capable of dealing with it these days?
You can do the same thing with a linter rule, without forcing everyone to see the code in your preferred way.
That’s just not true.
Enlighten me?
You might want to read this: https://www.reddit.com/r/javascript/comments/c8drjo/nobody_talks_about_the_real_reason_to_use_tabs/
(There are more downsides of spaces, but I do not care to list everything. It should be obvious that “there are no drawbacks” is a far too general statement. :P)
Tabs are one space *quickly runs away*
I use a single space to indent when writing Python in a SecureCRT command window that gets sent to an interactive Python shell on the server.
Run all you want, but we will find you!!! 😉
Three.
I might have the solution: Elastic Tabs. They di what tabs were always meant to do from the start, whilst also fixing the shortcomings that spaces are currently used to fill.
Wtf is this witchcraft and how can I use it in VS Code?
When you display a TSV file using elastic tabs, they finally display nicely.
:set tabwidth=4I’ve heard of 8, 4, and even 3 which is pretty crazy… how could it possibly be 2!?
2 spaces is pretty common in JavaScript… And I think I remember it being pretty standard in HTML way back when. Screens used to be smaller, with low resolution. 4 spaces was a luxury.
Isn’t 2 spaces the standard in Ruby? I don’t use it, but I’ve heard such things.
This is my experience as well. These days, fewer than 4 spaces is downright unreadable to my aging eyes.
Two spaces sure, but that’s for people who don’t use tabs.
Yes, I mean tab stops set to two spaces.
3 is just downright evil.
3 is a tab width compromise. It is wider than 2 but not as wide as 4. No one is happy but not as unhappy as they would be at their less preferred extreme.
Enlightened centrism at its finest.
That depends; are oranges worth 9 feathers or 12?