Leaving out the last semicolon of a CSS block

Is it good practice?

It’s not good practice to manually exclude semicolons. This is purely because it’s easy to overlook when adding more styles, especially if you’re working in a team:

Imagine you start with:

.foo {
    background-color: #F00;
    color: #000             <-- missing semi-colon
}

And then someone adds some styles:

.foo {
    background-color: #F00;
    color: #000             <-- missing semi-colon
    width: 30px;
    z-index: 100;
}

Suddenly the other developer is wasting time figuring out why their width declaration isn’t working (or worse yet, doesn’t notice that it’s not working). It’s safer to leave the semi-colons in.

Will it, on a large scale, result in better load times?

Most definitely, for every block, you’d save a couple of bytes. These add up, especially for large style sheets. Instead of worrying about these performance gains yourself, it’s better to use a CSS compressor, such as the YUI Compressor to automatically remove the ending semi-colons for you.

Can it result in browsers ‘breaking’?

No, it’s safe, as browsers implement this part of the specification correctly. The CSS2 specification defines a declaration thusly:

A declaration is either empty or consists of a property name, followed by a colon (:), followed by a property value.

More importantly:

…multiple declarations for the same selector may be organized into semicolon (;) separated groups.

This means that ; is used to separate multiple declarations, but it is not needed to terminate them.

Is the same true for the last function in JavaScript?

JavaScript is a whole different beast with a completely different specification. This particular question has been answered in depth many times before on Stack Overflow.

Leave a Comment