
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
detect-indent
Advanced tools
Detect the indentation of code
Pass in a string of any kind of text and get the indentation.
npm install detect-indent
Here we modify a JSON file while persisting the indentation:
import fs from 'node:fs';
import detectIndent from 'detect-indent';
/*
{
"ilove": "pizza"
}
*/
const file = fs.readFileSync('foo.json', 'utf8');
// Tries to detect the indentation and falls back to a default if it can't
const indent = detectIndent(file).indent || ' ';
const json = JSON.parse(file);
json.ilove = 'unicorns';
fs.writeFileSync('foo.json', JSON.stringify(json, undefined, indent));
/*
{
"ilove": "unicorns"
}
*/
Accepts a string and returns an object with stats about the indentation:
type {'tab' | 'space' | undefined} - The type of indentation. It is undefined if no indentation is detected.amount {number} - The amount of indentation. For example, 2.indent {string} - The actual indentation.The current algorithm looks for the most common difference between two consecutive non-empty lines. Single-space indentations and changes are ignored by default to prevent common false positives from comment alignment.
In the following example, even if 4-space indentation appears 3 times while 2-space appears only 2 times, the 2-space indentation is detected because there are 4 indent changes of 2 spaces vs only 2 changes of 4 spaces:
html {
box-sizing: border-box;
}
body {
background: gray;
}
p {
line-height: 1.3em;
margin-top: 1em;
text-indent: 2em;
}
Furthermore, if there are multiple indent differences with the same usage count, the indentation with the most lines is selected.
In the following example, the indentation is detected as 4-spaces:
body {
background: gray;
}
p {
line-height: 1.3em;
margin-top: 1em;
text-indent: 2em;
}
The indent-string package is used for adding indentation to strings. While detect-indent is focused on detecting and analyzing indentation, indent-string allows you to modify strings by adding a specified amount of indentation. This makes indent-string complementary to detect-indent, as you could detect indentation with one and apply it with the other.
Strip-indent is designed to remove leading indentation from every line in a string. This is somewhat the inverse of what detect-indent does; while detect-indent identifies the indentation style and level, strip-indent removes it entirely. This can be useful in preprocessing text to normalize indentation before further processing or display.
FAQs
Detect the indentation of code
The npm package detect-indent receives a total of 17,090,178 weekly downloads. As such, detect-indent popularity was classified as popular.
We found that detect-indent demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.