Skip to content

Why we should default to Tabs instead of Spaces for an 'accessible first' environment

Alexander Sandberg on July 12, 2019

I'm sure you've come across the age-old, opinion-based debate of 'Tabs vs. Spaces' for indentation before. It has been going since forever, and the... [Read Full]
markdown guide

In the past, IDEs were more rigid and less dynamic, but modern IDEs can be configured to convert tabs to spaces automatically when opening a file, and the same thing can be done the other way around (spaces to tabs). Also the code can be unified when committing/pushing it into the repository. By doing that, the tabs/spaces issue is really not an issue.


I agree. Modern tools help us, no matter what "side" we choose!

But we should assume that not everyone is aware of, or is able to use this functionality. Therefore, it's still important to think about 'accessible first', which, in this context, means using tabs.

Accessibility shouldn't be an add-on, it should be a default. πŸ™‚


Accessibility as default is nonsense. Accessibility imply access for different needs, sometimes opposed, of course should be a add-on, an easy access add-on but an add-on nontheless; are you suggesting that every editor readout loud by default and have huge fonts with high contrast by default? we should also have by default the OS in all languages?. The default is almost by definition for most of the target user, which doesn't mean accessibility shouldn't be a available and/or hard. But definetely not the default. If you want 1 single space indent because your lines are too long, the write longer lines, a 120 char line is way better than a single space indent, 4 spaces are too few and is hard to read? then use the Linux Kernel style with 8 or look for a tool to help your particular needs; a tab looks like a bunch of spaces, that's it, visual symbols main purpouse is to express something and just one "something". You have vertical delimiters for indents, coloured indents to make them easier to distinguish, you can enlarge space between characters. Newsflash, JS is not always available or desirable, should we disabla all JS by default? and high contrast hurt my eyes but are needed for others, so how do you propose to make both defaults?


I'm all for Accessibility and think it should go first, but this is not a matter of Accessibility being an extra/add-on or not. Most likely the tools that are being used already have these accessible features out of the box and can be set as the default (VSCode even detects when a screen reader is running and suggest changes to improve the experience on the fly!)

Didn't know VS Code had those features. That's really cool!

Yes, most likely, but not guaranteed. πŸ™‚ Not everyone is using VS Code, Atom, or any of the other tools that have these kinds of features, but if we default to using tabs, it doesn't matter.

I guess the point I was trying to make is that, in an ideal world, everything should be designed for everyone. People with disabilities should not have to rely on certain tools or features.

Even though that's practically impossible, we should still aim for it, and make the default environment as accessible as possible.


I agree that accessibility is a concern in tabs vs spaces debate. I even tried using tabs about 6 years ago. It wasn't a great experience. Code in IDE looked fine. However I don't just look at my code in IDE - source control GUI app, git management web interface (my workplace wasn't using GitHub) all rendered tabs assuming 8 space indentation. So the result was accessibility issues even for individuals without special accessibility needs. In the ideal world tabs would be the best choice - the tools I was using would be easily adaptable for individual needs. In the real messy world the tools were developed with time constraints and did not have easy options to change the rendering options. So while I agree that tabs are best in principle, choosing spaces can be more practical, even when considering accessibility.


What's your current preference for indentation? Tabs or Spaces?

Would you consider switching to Tabs after learning this? πŸ™‚


I don't really care. I hit my tab button on my keyboard for indentation, and the IDE takes care of the rest regardless of indentation character.
Come to think of it, I usually just hit my enter key, and the indentation is already made for me :D

Knowing this, I might start advocating tabs in the future, though.


Yes! The Enter key is often taking care of everything anyway!

If you don't really have a preference, all the amazing developers out there in need of customizable tab-widths will thank you for choosing tabs. ☺️


Wow, I have never think about this issue at all. Thank you for enlighting me.

Used to use 4 spaces, however, I am going to figure out how I can set up my working environment.


Thank you for sharing, Juneau!

I was a tabs-dev for so long until I decided to try out 2 spaces instead, a few months ago. I didn't really think much of it until I came across Chase's post. Now I'm all for tabs again! πŸ™Œ


I personally prefer tabs. I don't understand why some people are obsessed with their code having to look the same everywhere.

code of conduct - report abuse