csstidy(1) CSS parser and optimiser


csstidy input-file [options] [output-file]


The csstidy(1) command parses and optimises a css file given as input-file. If no output-file is specified, the results are displayed to standard output. Various options allow for fine-grained control over the level of readability, file size and other items.

If you use the filename "-", csstidy reads from stdin. In most case you will probably find that csstidy defaults are reasonable and applicable to most situations.

Note that csstidy is not designed to be a css validator. Although you should only enter valid (or rather well-formed) code, csstidy will also parse and fix incorrect code.


To optimise a CSS file and send the output to screen use:

csstidy mycssfile.css

If you want to save the output to a file, use:

csstidy mycssfile.css myoutputfile.css

If you want to use an option[s] and output to a file, use:

csstidy mycssfile.css --lowercase_s=true myoutputfile.css



default = false


Case for properties. Default = false.


If set to true, csstidy will optimize color value by trying to save bytes (i.e. black becomes #000). Default = true.


If set to true, csstidy will optimize font value by trying to save bytes (i.e. normal becomes 400). Default = true.


If set to true, csstidy will remove invalid properties. In a sense this is like validation, except you get no warnings unless you study the output. As an example, if you misspelled the property "width" as "with", that property will simply be removed. Default = false.


If set to true, all uppercase selectors (i.e. A, P, SPAN) will be rewritten in lowercase. Default = false.


All comments and most browser specific hacks will be removed if this is set to false. Setting this to true will preserve browser specific hacks. Default = false.


Remove unnecessary backslashes. This may or may not be desirable depending upon whether you have used backslashes to accomodate browsers that do not comply with w3c standards. Default = true.


Default = false.


When set to true, csstidy will not output information about the optimizations preformed. Default = false.


Sorts properties (i.e. background, color, width) of selectors. Default = false.


Sorts selectors. Use this with caution, as it will totally rearrange any sense of layout in your file that you may have written into it, and css is sensitive to order. Sorts in order of ID's, classes and then selectors. Default = false.


If set to true, adds a comment enclosed timestamp to the top of the output. Default = false.


If selectors (including ID's and classes) have identical properties, then csstidy will merge them. A setting of 2 represents a high degree of merging. 0 represents no merging. Default = 2.


If set to 2, csstidy will invoke all optimisations. 0 represents no optimisations, and 1 a safe level of optimatisations. Default = 1.


Affects how much whitespace is removed and ultimately the readability of the output.


The following is a list of all CSS hacks that will not be modified by default by csstidy. If you enable "preserve CSS", more hacks will be saved. In general you should do without CSS hacks anyway, but if you need them and want to use csstidy you should use one of the following hacks:

p\roperty:value; (only if you disable the removal of unnecessary backslashes)
head:first-child+body div
html[xmlns] div
@import "null?\"\\{"; @import "styles.css"; (and all other @import rules)
@media all{/\* rules \*/}
* html div
i\{content:"\"/*"\} div\{property:value\}


Written by Florian Schmitz <[email protected]>


Main web site: http://csstidy.sourceforge.net/

This manual page was written by Kevin Coyner <[email protected]> for the Debian project but may be used by others.