expand – Converts a file’s tabs to whitespace

The expand command is a Linux utility that is used to convert tabs in a file to whitespace. This command is very useful when working with files that contain tabs, especially when the tabs are used inconsistently or when different editors or programs use different tab widths.


The syntax for the expand command is as follows:

expand [OPTIONS] [FILE]

Here, OPTIONS are the various options that can be used with the command and FILE is the name of the file that needs to be modified.

The expand command reads the contents of the specified file and replaces any tabs with the appropriate number of spaces. By default, each tab is replaced with eight spaces. However, this can be changed using the -t option.


  1. To convert all tabs in a file to spaces:
expand myfile.txt
  1. To convert all tabs in a file to spaces, and save the output to a new file:
expand myfile.txt > newfile.txt
  1. To specify the number of spaces to use instead of a tab:
expand -t 4 myfile.txt

Specific use cases

The expand command is particularly useful in the following scenarios:

  • When working with files that contain tabs that are used inconsistently.
  • When working with files that have been created using different editors or programs that use different tab widths.
  • When working with files that need to be converted to a format that requires spaces instead of tabs.


The following table lists all the available options for the expand command:

Option Description
-t NUM Specifies the number of spaces to use instead of a tab.
-i Ignores leading tabs in a line.
-t Treats each tab as a single character.
-s Only converts tabs that appear after non-whitespace characters.
-a Converts all spaces to tabs where possible.
-j Merges consecutive spaces into a single tab.

Troubleshooting tips

The expand command is a simple utility and does not have many common issues. However, here are a few tips to keep in mind:

  • If the output does not look as expected, check the input file for any formatting issues.
  • If the output file is not created, ensure that the user has the necessary permissions to create files in the specified directory.


  • The expand command is often used in conjunction with the unexpand command, which does the opposite – it replaces spaces with tabs.
  • The expand command does not modify the original file. Instead, it outputs the modified text to the console, which can then be redirected to a new file if needed.