CSS vendor prefixes like -webkit, -ms, -moz and -o are constantly being dropped as people updates their browsers and as browsers adopt the standard unprefixed properties. A post about today's recommended prefixes would probably be outdated in a few months. I'll just add caniuse.com frames showing updated compatibility tables for the most important CSS properties that still may need prefixes to make it easier for you to decide by yourself.
Properties not listed here, like box-shadow and text-shadow do not need prefixing. This doesn't mean they are fully supported. Internet Explorer 9 and below, for example, don't support text-shadow, prefixed or not. Border-radius is not supported by IE8 and below.
Use the buttons to switch to the different tables. CSS vendor prefixes are shown in the table cells, for the browser versions that require them. Remember to always use the unprefixed version of the property after the prefixed one. This way the standard version overrides the experimental (prefixed) ones and is always used in browsers that support it.
CSS 2D and 3D transforms have different vendor prefix support, though both use the same transform property. For example:
transform: rotate(90deg) is 2D while
transform: perspective(500px) is 3D.
CSS functions: matrix, translate, translateX, translateY, scale, scaleX, scaleY, rotate, skew, skewX, skewY
CSS functions: matrix3d, translate3d, translateZ, scale3d, scaleZ, rotate3d, rotateX, rotateY, rotateZ, perspective
CSS property: box-shadow
CSS property: box-sizing
CSS3 Multiple Columns
CSS properties: column-count, column-fill, column-gap, column-rule, column-rule-color, column-rule-style, column-rule-width, column-span, column-width, columns
Other more specific CSS properties/functions that may require vendor prefixes are:
- repeating-linear-gradient and repeating-radial-gradient functions (just repeating gradients)
- border-image properties (use images as borders)
- ::selection pseudoelement (portion of the document highlighted by the user)
- flexbox layout module (a complete module to lay out, align and distribute space among items in a container)
- font-feature-settings property (advanced typographic features in OpenType fonts)
- tab-size property property (used to specify the width of a tab)
- min-content constraint (to make containers adapt to the width of their content)
There are a couple of webkit-only features that are available only with the -webkit prefix like the canvas backgrounds with -webkit-canvas (for using an HTML5 canvas as background), element reflections with -webkit-box-reflect, text stroke with -webkit-text-stroke, and filter effects with -webkit-filters.
Prefixing the easy way
If you find yourself dealing with prefixes more often than it's safe, you can almost forget about CSS vendor prefixes by using tools like Prefixr.
Just paste your unprefixed code into the tool, click a button, and it will automatically add the recommended prefixed properties.
To completely forget about prefixes, use a tool like prefix-free, which adds the current browser’s prefix to any CSS code, only when it’s needed. Sounds great, but it obviously adds another script to your <head> (its very lightweight though) and may cause flashes of unstyled content.