I’ve read plenty of articles about the all-importance of validation, and some about why validation isn’t important. The articles that dismiss striving for the green light usually cite examples of people breaking down their code and inadvertently removing functionality in a frenzied attempt to validate their markup.
While I’m sure this sometimes happens, if the developer of a site keeps standards in mind while building, there won’t be a need to change much, if anything, in order to validate.
The other argument against validation is the idea that in some cases, something that causes a page to not validate “should” be allowed. I must admit there have been times when I would like to place a tag inside of a tag, and have been frustrated by the fact that a block element isn’t allowed inside an inline element. The problem is that once you start doing things in non-standard ways, it’s difficult to predict how different browsers will handle the situation. In particular, mobile device browsers generally have much less capacity to “fix” poorly formed HTML, and may react in very unexpected ways.
My primary concession to this is CSS. Many nice effects can be achieved with CSS3, but the W3C CSS validator won’t validate CSS3, or the browser-specific “beta” versions of proposed CSS3 directives (such as -webkit-transition-duration). This concession comes with a caveat, however – the CSS still must be formed in such a way that browsers which don’t support CSS3 (in particular, Internet Explorer 8 and below) must not be negatively impacted, besides not getting to see the cool effects. In other words, the CSS must degrade gracefully.
I realize that validation itself is not the ultimate judge of a well-formed site.
Furthermore, it only determines whether the code is syntactically valid, not whether the layout is aesthetically pleasing and intuitive, or whether users will be able to get what they want from it – that’s what good design is for. However, cross-platform consistency and performance, and a search engine crawler’s ability to understand the code are important, and validation helps considerably with those.
The W3C has plenty of resources available for checking and fixing markup, CSS, and lots of other web-related things. Their Markup validator is particularly useful, and even has an option to use HTML Tidy to try to fix any problems it comes across. Matcha also offers validation services for existing sites along with original design and development.