What it does
One selector per line in a list, one declaration per line in a block, and nested at-rules — @media, @supports, @layer — indented inside their parent. The last declaration in each block gets its semicolon back; leaving it off is legal but reads as an oversight.
Strings and url() values are handed through untouched, so a data URI or a content string full of braces survives intact.
Where the line breaks go
One selector per line in a list, one declaration per line inside a block, and nested at-rules indented within their parent. The last declaration gets its semicolon back — legal without one, but its absence reads as an accident rather than a choice.
Strings and url() values pass through untouched, so a data URI or a content string full of braces survives intact. That is the part a regex-based formatter gets wrong.
Frequently asked questions
Is my CSS uploaded anywhere?
No. The stylesheet is parsed and laid out locally. Nothing is uploaded, so unreleased source code stays on your machine and the tool keeps working offline.
Will it change how my styles render?
No. Only whitespace and line breaks change. Selectors, values and their order are untouched.
Will it change how my styles render?
No. Only whitespace and line breaks change. Selectors, values and their order are untouched, so the formatted stylesheet is the same stylesheet.
Can it undo a minified file?
Yes — that is the main use. Run a minified stylesheet through it to read what a rule actually does before changing anything.
Something wrong with this tool, or an idea for it? Tell us