Tab stop

A tab stop on a typewriter is a location where the carriage movement is halted by an adjustable end stop. Tab stops are set manually, and pressing the tab key causes the carriage to go to the next tab stop. In text editors on a computer, the same concept is implemented simplistically with automatic, fixed tab stops.

Modern word processors generalize this concept by offering tab stops that have an alignment attribute and cause the text to be automatically aligned at left, at right or center of the tab stop itself. Such tab stops are paragraph-specific properties and can be moved to a different location in any moment, or even removed.

Sometimes, placeholders in code snippets are also called "tab stops" because the user can cycle through them by pressing the tab key.

Types of tab stops
A tab stop is a horizontal position which is set for placing and aligning text on a page. There are at least five kinds of tab stops in general usage in word processing or in Microsoft Word.


 * Left: text extends to the right from the tab stop.
 * Center: text is centered at the tab stop.
 * Right: text extends to the left from the tab stop until the tab's space is filled, and then the text extends to the right.
 * Decimal: text before the decimal point extends to the left, and text after the decimal point extends to the right.
 * Bar: a vertical line at the specified position on each line in a document.

Dynamic tab stops
In contrast to fixed positioning, tab stops can be adjusted dynamically, based on the length of adjacent tab-delimited line segments, by alignment to a specific character or string in each line, etc. Adobe InDesign supports a non-printing "indent to here" character.

In 2006, Nick Gravgaard published an algorithm for automatic dynamic tab stops called "Elastic tabstops". This can be useful for viewing/editing source code and essential for tabular data. Various text editors and IDEs have implemented the elastic tabstops algorithm either directly or by extension.

Software which supports elastic tabstops

 * Visual Studio
 * Atom
 * Textadept
 * Code Browser
 * JEdit
 * Notepad++
 * Go tabwriter package
 * Rust tabwriter crate
 * Emacs