The vendor prefixes still worth writing, and the ones that are not

Most prefixed declarations in a stylesheet are copied from a snippet that was correct in 2010 and has not been reviewed since. Some are still doing work at the end of 2013 and some are pure weight, and the split is not the one people expect.

/* still needed */
.panel {
    -webkit-transform: translateZ(0);
            transform: translateZ(0);
    background: -webkit-linear-gradient(#fff, #eee);
    background:         linear-gradient(#fff, #eee);
    -moz-box-sizing: border-box;
         box-sizing: border-box;
}

/* dead weight — unprefixed everywhere still shipping */
.panel {
    -webkit-border-radius: 3px;
       -moz-border-radius: 3px;
    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
       -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
}

-moz-box-sizing is the one that surprises people: the property everybody now applies globally is also the one Firefox still needs prefixed. border-radius and box-shadow have been unprefixed since Firefox 4 and Safari 5, so those pairs buy nothing unless Android 2.x is on the support list. Keeping a prefix past its usefulness is not free either — the old -webkit-gradient syntax and the 2009 flexbox draft have different semantics from the standard, so a stale line can win the cascade and be wrong. The maintainable answer is to stop writing them by hand: Compass mixins or a Grunt prefixer task generate the set from browser-support data, and it shrinks when the support matrix does.