CSS Optimization Checker

Try it yourself - Enter a CSS URL in the menu search bar, or check out the examples below

Optimize CSS delivery and performance by checking for redundancy, validation errors, and following best practices.

Clean up unused selectors and rules using our CSS tool.

  • This tool has one goal in mind - to keep your CSS simple
  • Test and weigh the complexity of a CSS document
  • Analyze your CSS selectors by reducing complexity and optimizing for performance

TestMyCSS Results forhttp://www.json2yaml.com/css/main.fb44307f4ffaaed0958a286a7e322826.css

Check and Cleanup CSS Offenders

  • Complex Selectors5

    Selectors with uneccessary depth and traversal

    Consider simplifying for speed and readability

    .pure-menu-horizontal>.pure-menu-children>.pure-menu-can-have-children>.pure-menu-label:after {}.pure-menu-horizontal>.pure-menu-children>.pure-menu-can-have-children>.pure-menu-label {}.pure-table-bordered tbody>tr:last-child td {}.pure-table-horizontal tbody>tr:last-child td {}.pure-table-horizontal tbody>tr:last-child td {}
  • Complex Selectors By Attribute4

    Selectors whose attribute value contains a specified value

    Attribute selectors have a slower lookup time

    [class^="icon-"] {}[class*=" icon-"] {}.pure-g [class*="pure-u"] {}.pure-g [class*="pure-u"] {}
  • Duplicated Properties11

    Duplicate properties detected for your selector

    Remove or combine duplicate properties to clean up your css

    pre {white-space: pre-wrap} q, q:after {content: none} .pure-button {color: rgba(0,0,0,0.8)} .pure-button {border: 0 transparent} .pure-button[disabled], .pure-button-disabled, .pure-button-disabled:hover, .pure-button-disabled:focus, .pure-button-disabled:active {filter: alpha(opacity=40)} .pure-form input[type=text]:focus, .pure-form input[type=password]:focus, .pure-form input[type=email]:focus, .pure-form input[type=url]:focus, .pure-form input[type=date]:focus, .pure-form input[type=month]:focus, .pure-form input[type=time]:focus, .pure-form input[type=datetime]:focus, .pure-form input[type=datetime-local]:focus, .pure-form input[type=week]:focus, .pure-form input[type=number]:focus, .pure-form input[type=search]:focus, .pure-form input[type=tel]:focus, .pure-form input[type=color]:focus, .pure-form select:focus, .pure-form textarea:focus {outline: thin dotted \9} .pure-form input:not([type]):focus {outline: thin dotted \9} .pure-form input[type=file]:focus, .pure-form input[type=radio]:focus, .pure-form input[type=checkbox]:focus {outline: 1px auto #129FEA} .cm-searching {background: rgba(255,255,0,0.4)} .copy-btn {background: linear-gradient(to bottom, #999 0%, #7c7c7c 100%)} .copy-btn {text-transform: none !important} 
  • Duplicated Selectors17
    .CodeMirror {} /* (3 times) */.CodeMirror-scroll {} /* (3 times) */.pure-button {} /* (2 times) */h2 {} /* (2 times) */h4 {} /* (2 times) */.pure-g {} /* (2 times) */.opera-only :-o-prefocus, .pure-g {} /* (2 times) */.pure-u {} /* (2 times) */.pure-g [class*="pure-u"] {} /* (2 times) */[hidden] {} /* (2 times) */.pure-button::-moz-focus-inner {} /* (2 times) */.pure-menu ul {} /* (2 times) */.CodeMirror div.CodeMirror-cursor {} /* (2 times) */body {} /* (2 times) */.CodeMirror-lines {} /* (2 times) */.CodeMirror pre {} /* (2 times) */.CodeMirror-gutters {} /* (2 times) */
  • Importants31

    Provides a way for a stylesheet author to give a CSS value more weight than it naturally has

    Avoid usage if at all possible. When you use !important, you’re disrupting the natural flow of your rules, giving more weight to rules that are undeserving of such weight

    [data-icon] {font-family: "untitled-font-2" !important} [data-icon] {font-style: normal !important} [data-icon] {font-weight: normal !important} [data-icon] {font-variant: normal !important} [data-icon] {text-transform: none !important} [class^="icon-"], [class*=" icon-"] {font-family: "untitled-font-2" !important} [class^="icon-"], [class*=" icon-"] {font-style: normal !important} [class^="icon-"], [class*=" icon-"] {font-weight: normal !important} [class^="icon-"], [class*=" icon-"] {font-variant: normal !important} [class^="icon-"], [class*=" icon-"] {text-transform: none !important} [hidden] {display: none !important} .cm-s-monokai div.CodeMirror-selected {background: #49483E !important} .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important} .cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important} .cm-s-monokai .CodeMirror-matchingbracket {color: white !important} .status-icon {font-family: 'untitled-font-2' !important} .status-icon {font-weight: normal !important} .status-icon {font-style: normal !important} .status-icon {font-variant: normal !important} .status-icon {text-transform: none !important} .copy-btn {font-family: 'untitled-font-2' !important} .copy-btn {font-weight: normal !important} .copy-btn {font-style: normal !important} .copy-btn {font-variant: normal !important} .copy-btn {text-transform: none !important} .copy-btn {text-transform: none !important} .status-msg {font-family: 'untitled-font-2' !important} .status-msg {font-weight: normal !important} .status-msg {font-style: normal !important} .status-msg {font-variant: normal !important} .status-msg {text-transform: none !important} 
  • Multi Classes Selectors12

    Selectors with multiple classes

    Unnecessary specificity, consider reducing to single class or id instead

    .pure-menu.pure-menu-open {}.pure-menu.pure-menu-horizontal {}.pure-menu.pure-menu-horizontal {}.pure-menu.pure-menu-open {}.pure-menu.pure-menu-horizontal {}.pure-menu.pure-menu-horizontal {}.pure-menu.pure-menu-horizontal {}.pure-menu-can-have-children.pure-menu-disabled {}.pure-menu.pure-menu-fixed.pure-menu-open {}.CodeMirror.cm-keymap-fat-cursor {}.CodeMirror.cm-keymap-fat-cursor {}.CodeMirror.cm-s-monokai {}
  • Old IE Fixes170

    Rules specific to IE greater than or equal to IE 6 or IE 7

    Lower browser usage for previous versions of IE prevents these rules from being very useful

    audio, canvas, video {*display: inline} audio, canvas, video {*zoom: 1} legend {*margin-left: -7px} button, input, select, textarea {*vertical-align: middle} button, html input[type=button], input[type=reset], input[type=submit] {*overflow: visible} input[type=checkbox], input[type=radio] {*height: 13px} input[type=checkbox], input[type=radio] {*width: 13px} .pure-g {*letter-spacing: normal} .pure-g {*word-spacing: -.43em} .pure-u {*display: inline} .pure-u-1, .pure-u-1-1, .pure-u-1-2, .pure-u-1-3, .pure-u-2-3, .pure-u-1-4, .pure-u-3-4, .pure-u-1-5, .pure-u-2-5, .pure-u-3-5, .pure-u-4-5, .pure-u-5-5, .pure-u-1-6, .pure-u-5-6, .pure-u-1-8, .pure-u-3-8, .pure-u-5-8, .pure-u-7-8, .pure-u-1-12, .pure-u-5-12, .pure-u-7-12, .pure-u-11-12, .pure-u-1-24, .pure-u-2-24, .pure-u-3-24, .pure-u-4-24, .pure-u-5-24, .pure-u-6-24, .pure-u-7-24, .pure-u-8-24, .pure-u-9-24, .pure-u-10-24, .pure-u-11-24, .pure-u-12-24, .pure-u-13-24, .pure-u-14-24, .pure-u-15-24, .pure-u-16-24, .pure-u-17-24, .pure-u-18-24, .pure-u-19-24, .pure-u-20-24, .pure-u-21-24, .pure-u-22-24, .pure-u-23-24, .pure-u-24-24 {*display: inline} .pure-u-1-24 {*width: 4.1357%} .pure-u-1-12, .pure-u-2-24 {*width: 8.3023%} .pure-u-1-8, .pure-u-3-24 {*width: 12.469%} .pure-u-1-6, .pure-u-4-24 {*width: 16.6357%} .pure-u-1-5 {*width: 19.969%} .pure-u-5-24 {*width: 20.8023%} .pure-u-1-4, .pure-u-6-24 {*width: 24.969%} .pure-u-7-24 {*width: 29.1357%} .pure-u-1-3, .pure-u-8-24 {*width: 33.3023%} .pure-u-3-8, .pure-u-9-24 {*width: 37.469%} .pure-u-2-5 {*width: 39.969%} .pure-u-5-12, .pure-u-10-24 {*width: 41.6357%} .pure-u-11-24 {*width: 45.8023%} .pure-u-1-2, .pure-u-12-24 {*width: 49.969%} .pure-u-13-24 {*width: 54.1357%} .pure-u-7-12, .pure-u-14-24 {*width: 58.3023%} .pure-u-3-5 {*width: 59.969%} .pure-u-5-8, .pure-u-15-24 {*width: 62.469%} .pure-u-2-3, .pure-u-16-24 {*width: 66.6357%} .pure-u-17-24 {*width: 70.8023%} .pure-u-3-4, .pure-u-18-24 {*width: 74.969%} .pure-u-19-24 {*width: 79.1357%} .pure-u-4-5 {*width: 79.969%} .pure-u-5-6, .pure-u-20-24 {*width: 83.3023%} .pure-u-7-8, .pure-u-21-24 {*width: 87.469%} .pure-u-11-12, .pure-u-22-24 {*width: 91.6357%} .pure-u-23-24 {*width: 95.8023%} .pure-button {*display: inline} .pure-button {*font-size: 90%} .pure-button {*overflow: visible} .pure-button {*color: #444} .pure-button-hover, .pure-button:hover, .pure-button:focus {filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000', GradientType=0)} .pure-button[disabled], .pure-button-disabled, .pure-button-disabled:hover, .pure-button-disabled:focus, .pure-button-disabled:active {filter: progid:DXImageTransform.Microsoft.gradient(enabled=false)} .pure-form-aligned input, .pure-form-aligned textarea, .pure-form-aligned select, .pure-form-aligned .pure-help-inline, .pure-form-message-inline {*display: inline} .pure-form-aligned input, .pure-form-aligned textarea, .pure-form-aligned select, .pure-form-aligned .pure-help-inline, .pure-form-message-inline {*zoom: 1} .pure-menu.pure-menu-horizontal>.pure-menu-heading {*display: inline} .pure-menu.pure-menu-horizontal>ul {*display: inline} .pure-menu-horizontal li {*display: inline} .pure-paginator {*letter-spacing: normal} .pure-paginator {*word-spacing: -.43em} .pure-paginator li {*display: inline} .pure-g {*letter-spacing: normal} .pure-g {*word-spacing: -.43em} .pure-u {*display: inline} .pure-u-sm-1, .pure-u-sm-1-1, .pure-u-sm-1-2, .pure-u-sm-1-3, .pure-u-sm-2-3, .pure-u-sm-1-4, .pure-u-sm-3-4, .pure-u-sm-1-5, .pure-u-sm-2-5, .pure-u-sm-3-5, .pure-u-sm-4-5, .pure-u-sm-5-5, .pure-u-sm-1-6, .pure-u-sm-5-6, .pure-u-sm-1-8, .pure-u-sm-3-8, .pure-u-sm-5-8, .pure-u-sm-7-8, .pure-u-sm-1-12, .pure-u-sm-5-12, .pure-u-sm-7-12, .pure-u-sm-11-12, .pure-u-sm-1-24, .pure-u-sm-2-24, .pure-u-sm-3-24, .pure-u-sm-4-24, .pure-u-sm-5-24, .pure-u-sm-6-24, .pure-u-sm-7-24, .pure-u-sm-8-24, .pure-u-sm-9-24, .pure-u-sm-10-24, .pure-u-sm-11-24, .pure-u-sm-12-24, .pure-u-sm-13-24, .pure-u-sm-14-24, .pure-u-sm-15-24, .pure-u-sm-16-24, .pure-u-sm-17-24, .pure-u-sm-18-24, .pure-u-sm-19-24, .pure-u-sm-20-24, .pure-u-sm-21-24, .pure-u-sm-22-24, .pure-u-sm-23-24, .pure-u-sm-24-24 {*display: inline} .pure-u-sm-1-24 {*width: 4.1357%} .pure-u-sm-1-12, .pure-u-sm-2-24 {*width: 8.3023%} .pure-u-sm-1-8, .pure-u-sm-3-24 {*width: 12.469%} .pure-u-sm-1-6, .pure-u-sm-4-24 {*width: 16.6357%} .pure-u-sm-1-5 {*width: 19.969%} .pure-u-sm-5-24 {*width: 20.8023%} .pure-u-sm-1-4, .pure-u-sm-6-24 {*width: 24.969%} .pure-u-sm-7-24 {*width: 29.1357%} .pure-u-sm-1-3, .pure-u-sm-8-24 {*width: 33.3023%} .pure-u-sm-3-8, .pure-u-sm-9-24 {*width: 37.469%} .pure-u-sm-2-5 {*width: 39.969%} .pure-u-sm-5-12, .pure-u-sm-10-24 {*width: 41.6357%} .pure-u-sm-11-24 {*width: 45.8023%} .pure-u-sm-1-2, .pure-u-sm-12-24 {*width: 49.969%} .pure-u-sm-13-24 {*width: 54.1357%} .pure-u-sm-7-12, .pure-u-sm-14-24 {*width: 58.3023%} .pure-u-sm-3-5 {*width: 59.969%} .pure-u-sm-5-8, .pure-u-sm-15-24 {*width: 62.469%} .pure-u-sm-2-3, .pure-u-sm-16-24 {*width: 66.6357%} .pure-u-sm-17-24 {*width: 70.8023%} .pure-u-sm-3-4, .pure-u-sm-18-24 {*width: 74.969%} .pure-u-sm-19-24 {*width: 79.1357%} .pure-u-sm-4-5 {*width: 79.969%} .pure-u-sm-5-6, .pure-u-sm-20-24 {*width: 83.3023%} .pure-u-sm-7-8, .pure-u-sm-21-24 {*width: 87.469%} .pure-u-sm-11-12, .pure-u-sm-22-24 {*width: 91.6357%} .pure-u-sm-23-24 {*width: 95.8023%} .pure-u-md-1, .pure-u-md-1-1, .pure-u-md-1-2, .pure-u-md-1-3, .pure-u-md-2-3, .pure-u-md-1-4, .pure-u-md-3-4, .pure-u-md-1-5, .pure-u-md-2-5, .pure-u-md-3-5, .pure-u-md-4-5, .pure-u-md-5-5, .pure-u-md-1-6, .pure-u-md-5-6, .pure-u-md-1-8, .pure-u-md-3-8, .pure-u-md-5-8, .pure-u-md-7-8, .pure-u-md-1-12, .pure-u-md-5-12, .pure-u-md-7-12, .pure-u-md-11-12, .pure-u-md-1-24, .pure-u-md-2-24, .pure-u-md-3-24, .pure-u-md-4-24, .pure-u-md-5-24, .pure-u-md-6-24, .pure-u-md-7-24, .pure-u-md-8-24, .pure-u-md-9-24, .pure-u-md-10-24, .pure-u-md-11-24, .pure-u-md-12-24, .pure-u-md-13-24, .pure-u-md-14-24, .pure-u-md-15-24, .pure-u-md-16-24, .pure-u-md-17-24, .pure-u-md-18-24, .pure-u-md-19-24, .pure-u-md-20-24, .pure-u-md-21-24, .pure-u-md-22-24, .pure-u-md-23-24, .pure-u-md-24-24 {*display: inline} .pure-u-md-1-24 {*width: 4.1357%} .pure-u-md-1-12, .pure-u-md-2-24 {*width: 8.3023%} .pure-u-md-1-8, .pure-u-md-3-24 {*width: 12.469%} .pure-u-md-1-6, .pure-u-md-4-24 {*width: 16.6357%} .pure-u-md-1-5 {*width: 19.969%} .pure-u-md-5-24 {*width: 20.8023%} .pure-u-md-1-4, .pure-u-md-6-24 {*width: 24.969%} .pure-u-md-7-24 {*width: 29.1357%} .pure-u-md-1-3, .pure-u-md-8-24 {*width: 33.3023%} .pure-u-md-3-8, .pure-u-md-9-24 {*width: 37.469%} .pure-u-md-2-5 {*width: 39.969%} .pure-u-md-5-12, .pure-u-md-10-24 {*width: 41.6357%} .pure-u-md-11-24 {*width: 45.8023%} .pure-u-md-1-2, .pure-u-md-12-24 {*width: 49.969%} .pure-u-md-13-24 {*width: 54.1357%} .pure-u-md-7-12, .pure-u-md-14-24 {*width: 58.3023%} .pure-u-md-3-5 {*width: 59.969%} .pure-u-md-5-8, .pure-u-md-15-24 {*width: 62.469%} .pure-u-md-2-3, .pure-u-md-16-24 {*width: 66.6357%} .pure-u-md-17-24 {*width: 70.8023%} .pure-u-md-3-4, .pure-u-md-18-24 {*width: 74.969%} .pure-u-md-19-24 {*width: 79.1357%} .pure-u-md-4-5 {*width: 79.969%} .pure-u-md-5-6, .pure-u-md-20-24 {*width: 83.3023%} .pure-u-md-7-8, .pure-u-md-21-24 {*width: 87.469%} .pure-u-md-11-12, .pure-u-md-22-24 {*width: 91.6357%} .pure-u-md-23-24 {*width: 95.8023%} .pure-u-lg-1, .pure-u-lg-1-1, .pure-u-lg-1-2, .pure-u-lg-1-3, .pure-u-lg-2-3, .pure-u-lg-1-4, .pure-u-lg-3-4, .pure-u-lg-1-5, .pure-u-lg-2-5, .pure-u-lg-3-5, .pure-u-lg-4-5, .pure-u-lg-5-5, .pure-u-lg-1-6, .pure-u-lg-5-6, .pure-u-lg-1-8, .pure-u-lg-3-8, .pure-u-lg-5-8, .pure-u-lg-7-8, .pure-u-lg-1-12, .pure-u-lg-5-12, .pure-u-lg-7-12, .pure-u-lg-11-12, .pure-u-lg-1-24, .pure-u-lg-2-24, .pure-u-lg-3-24, .pure-u-lg-4-24, .pure-u-lg-5-24, .pure-u-lg-6-24, .pure-u-lg-7-24, .pure-u-lg-8-24, .pure-u-lg-9-24, .pure-u-lg-10-24, .pure-u-lg-11-24, .pure-u-lg-12-24, .pure-u-lg-13-24, .pure-u-lg-14-24, .pure-u-lg-15-24, .pure-u-lg-16-24, .pure-u-lg-17-24, .pure-u-lg-18-24, .pure-u-lg-19-24, .pure-u-lg-20-24, .pure-u-lg-21-24, .pure-u-lg-22-24, .pure-u-lg-23-24, .pure-u-lg-24-24 {*display: inline} .pure-u-lg-1-24 {*width: 4.1357%} .pure-u-lg-1-12, .pure-u-lg-2-24 {*width: 8.3023%} .pure-u-lg-1-8, .pure-u-lg-3-24 {*width: 12.469%} .pure-u-lg-1-6, .pure-u-lg-4-24 {*width: 16.6357%} .pure-u-lg-1-5 {*width: 19.969%} .pure-u-lg-5-24 {*width: 20.8023%} .pure-u-lg-1-4, .pure-u-lg-6-24 {*width: 24.969%} .pure-u-lg-7-24 {*width: 29.1357%} .pure-u-lg-1-3, .pure-u-lg-8-24 {*width: 33.3023%} .pure-u-lg-3-8, .pure-u-lg-9-24 {*width: 37.469%} .pure-u-lg-2-5 {*width: 39.969%} .pure-u-lg-5-12, .pure-u-lg-10-24 {*width: 41.6357%} .pure-u-lg-11-24 {*width: 45.8023%} .pure-u-lg-1-2, .pure-u-lg-12-24 {*width: 49.969%} .pure-u-lg-13-24 {*width: 54.1357%} .pure-u-lg-7-12, .pure-u-lg-14-24 {*width: 58.3023%} .pure-u-lg-3-5 {*width: 59.969%} .pure-u-lg-5-8, .pure-u-lg-15-24 {*width: 62.469%} .pure-u-lg-2-3, .pure-u-lg-16-24 {*width: 66.6357%} .pure-u-lg-17-24 {*width: 70.8023%} .pure-u-lg-3-4, .pure-u-lg-18-24 {*width: 74.969%} .pure-u-lg-19-24 {*width: 79.1357%} .pure-u-lg-4-5 {*width: 79.969%} .pure-u-lg-5-6, .pure-u-lg-20-24 {*width: 83.3023%} .pure-u-lg-7-8, .pure-u-lg-21-24 {*width: 87.469%} .pure-u-lg-11-12, .pure-u-lg-22-24 {*width: 91.6357%} .pure-u-lg-23-24 {*width: 95.8023%} .pure-u-xl-1, .pure-u-xl-1-1, .pure-u-xl-1-2, .pure-u-xl-1-3, .pure-u-xl-2-3, .pure-u-xl-1-4, .pure-u-xl-3-4, .pure-u-xl-1-5, .pure-u-xl-2-5, .pure-u-xl-3-5, .pure-u-xl-4-5, .pure-u-xl-5-5, .pure-u-xl-1-6, .pure-u-xl-5-6, .pure-u-xl-1-8, .pure-u-xl-3-8, .pure-u-xl-5-8, .pure-u-xl-7-8, .pure-u-xl-1-12, .pure-u-xl-5-12, .pure-u-xl-7-12, .pure-u-xl-11-12, .pure-u-xl-1-24, .pure-u-xl-2-24, .pure-u-xl-3-24, .pure-u-xl-4-24, .pure-u-xl-5-24, .pure-u-xl-6-24, .pure-u-xl-7-24, .pure-u-xl-8-24, .pure-u-xl-9-24, .pure-u-xl-10-24, .pure-u-xl-11-24, .pure-u-xl-12-24, .pure-u-xl-13-24, .pure-u-xl-14-24, .pure-u-xl-15-24, .pure-u-xl-16-24, .pure-u-xl-17-24, .pure-u-xl-18-24, .pure-u-xl-19-24, .pure-u-xl-20-24, .pure-u-xl-21-24, .pure-u-xl-22-24, .pure-u-xl-23-24, .pure-u-xl-24-24 {*display: inline} .pure-u-xl-1-24 {*width: 4.1357%} .pure-u-xl-1-12, .pure-u-xl-2-24 {*width: 8.3023%} .pure-u-xl-1-8, .pure-u-xl-3-24 {*width: 12.469%} .pure-u-xl-1-6, .pure-u-xl-4-24 {*width: 16.6357%} .pure-u-xl-1-5 {*width: 19.969%} .pure-u-xl-5-24 {*width: 20.8023%} .pure-u-xl-1-4, .pure-u-xl-6-24 {*width: 24.969%} .pure-u-xl-7-24 {*width: 29.1357%} .pure-u-xl-1-3, .pure-u-xl-8-24 {*width: 33.3023%} .pure-u-xl-3-8, .pure-u-xl-9-24 {*width: 37.469%} .pure-u-xl-2-5 {*width: 39.969%} .pure-u-xl-5-12, .pure-u-xl-10-24 {*width: 41.6357%} .pure-u-xl-11-24 {*width: 45.8023%} .pure-u-xl-1-2, .pure-u-xl-12-24 {*width: 49.969%} .pure-u-xl-13-24 {*width: 54.1357%} .pure-u-xl-7-12, .pure-u-xl-14-24 {*width: 58.3023%} .pure-u-xl-3-5 {*width: 59.969%} .pure-u-xl-5-8, .pure-u-xl-15-24 {*width: 62.469%} .pure-u-xl-2-3, .pure-u-xl-16-24 {*width: 66.6357%} .pure-u-xl-17-24 {*width: 70.8023%} .pure-u-xl-3-4, .pure-u-xl-18-24 {*width: 74.969%} .pure-u-xl-19-24 {*width: 79.1357%} .pure-u-xl-4-5 {*width: 79.969%} .pure-u-xl-5-6, .pure-u-xl-20-24 {*width: 83.3023%} .pure-u-xl-7-8, .pure-u-xl-21-24 {*width: 87.469%} .pure-u-xl-11-12, .pure-u-xl-22-24 {*width: 91.6357%} .pure-u-xl-23-24 {*width: 95.8023%} .CodeMirror-gutter {*zoom: 1} .CodeMirror-gutter {*display: inline} .CodeMirror span {*vertical-align: text-bottom} 
  • Old Property Prefixes14

    Properties with a no longer needed vendor prefix

    These have since been integrated or removed from mentioned browsers and can safely be removed from CSS

    hr { -moz-box-sizing: content-box } // was required by firefox 28 and earlier input[type=search] { -moz-box-sizing: content-box } // was required by firefox 28 and earlier input[type=search] { -webkit-box-sizing: content-box } // was required by android 3, chrome 9, ios_saf 4.2, safari 5 and earlier .pure-form input[type=text], .pure-form input[type=password], .pure-form input[type=email], .pure-form input[type=url], .pure-form input[type=date], .pure-form input[type=month], .pure-form input[type=time], .pure-form input[type=datetime], .pure-form input[type=datetime-local], .pure-form input[type=week], .pure-form input[type=number], .pure-form input[type=search], .pure-form input[type=tel], .pure-form input[type=color], .pure-form select, .pure-form textarea { -webkit-box-sizing: border-box } // was required by android 3, chrome 9, ios_saf 4.2, safari 5 and earlier .pure-form input[type=text], .pure-form input[type=password], .pure-form input[type=email], .pure-form input[type=url], .pure-form input[type=date], .pure-form input[type=month], .pure-form input[type=time], .pure-form input[type=datetime], .pure-form input[type=datetime-local], .pure-form input[type=week], .pure-form input[type=number], .pure-form input[type=search], .pure-form input[type=tel], .pure-form input[type=color], .pure-form select, .pure-form textarea { -moz-box-sizing: border-box } // was required by firefox 28 and earlier .pure-form input:not([type]) { -webkit-box-sizing: border-box } // was required by android 3, chrome 9, ios_saf 4.2, safari 5 and earlier .pure-form input:not([type]) { -moz-box-sizing: border-box } // was required by firefox 28 and earlier .CodeMirror-linenumber { -moz-box-sizing: content-box } // was required by firefox 28 and earlier .cm-animate-fat-cursor { -moz-animation: blink 1.06s steps(1) infinite } // was required by firefox 15 and earlier .CodeMirror-scroll { -moz-box-sizing: content-box } // was required by firefox 28 and earlier .CodeMirror-sizer { -moz-box-sizing: content-box } // was required by firefox 28 and earlier .CodeMirror-gutter { -moz-box-sizing: content-box } // was required by firefox 28 and earlier .CodeMirror pre { -moz-border-radius: 0 } // was required by firefox 3.6 and earlier .CodeMirror pre { -webkit-border-radius: 0 } // was required by android 2.1, chrome 4, ios_saf 3.2, safari 4 and earlier 
  • Qualified Selectors35

    Since IDs are unique and classes are more unique than tags, adding a tag name would slow down the matching process needlessly

    Don’t qualify class or ID rules with tag names, as they are more unique than the tag. Strip tag names where possible

    a.pure-button-primary {}a.pure-button-selected {}.pure-form input.pure-input-rounded {}.pure-menu-horizontal li.pure-menu-separator {}.pure-menu-horizontal li li.pure-menu-separator {}.pure-menu li.pure-menu-disabled a:hover {}.pure-menu li.pure-menu-disabled a:focus {}.CodeMirror div.CodeMirror-cursor {}.CodeMirror div.CodeMirror-secondarycursor {}.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {}.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors {}div.CodeMirror span.CodeMirror-matchingbracket {}div.CodeMirror span.CodeMirror-matchingbracket {}div.CodeMirror span.CodeMirror-nonmatchingbracket {}div.CodeMirror span.CodeMirror-nonmatchingbracket {}.CodeMirror div.CodeMirror-cursor {}div.CodeMirror-cursors {}.CodeMirror-focused div.CodeMirror-cursors {}.CodeMirror div.CodeMirror-cursors {}span.CodeMirror-selectedtext {}.cm-s-monokai div.CodeMirror-selected {}.cm-s-monokai span.cm-comment {}.cm-s-monokai span.cm-atom {}.cm-s-monokai span.cm-number {}.cm-s-monokai span.cm-property {}.cm-s-monokai span.cm-attribute {}.cm-s-monokai span.cm-keyword {}.cm-s-monokai span.cm-string {}.cm-s-monokai span.cm-variable {}.cm-s-monokai span.cm-variable-2 {}.cm-s-monokai span.cm-def {}.cm-s-monokai span.cm-bracket {}.cm-s-monokai span.cm-tag {}.cm-s-monokai span.cm-link {}.cm-s-monokai span.cm-error {}
  • Universal Selectors10

    The universal selector matches any element type

    Universal selectors can be implied (and therefore omitted) if it isn’t the only component of the simple selector, avoid whenever possible

    [data-icon] {}[class^="icon-"] {}[class*=" icon-"] {}[hidden] {}[hidden] {}.opera-only :-o-prefocus {}.pure-g [class*="pure-u"] {}.opera-only :-o-prefocus {}.opera-only :-o-prefocus {}.pure-g [class*="pure-u"] {}

CSS Metrics

Base64 Length0
Redundant Body Selectors0
Redundant Child Nodes Selectors0
Colors84
Comments5
Comments Length597
Empty Rules0
Expressions0
Imports0
Media Queries7
Parsing Errors0
Specificity Id Avg0
Specificity Id Total1
Specificity Class Avg1.25
Specificity Class Total1206
Specificity Tag Avg0.37
Specificity Tag Total360
Selectors By Attribute118
Selectors By Class976
Selectors By Id1
Selectors By Pseudo92
Selectors By Tag336
Length42235
Rules462
Selectors964
Declarations1112