HTML validators and case of broken link

w3c_icon cse_icon I was poking blog looking for stuff to tweak or add and noticed really weird link on subscribe page. It was pointing to subscribe page - obviously wrong on subscribe page itself. I though I must have mis-copied something, clicked “edit” to correct it… And found out that link code was perfectly pointing my RSS feed (as it should).

Three different browsers and five minutes of very puzzled struggling later I finally thought of validating page.

This was broken link:

<a href=""http://feeds.rarst.net/rarst-posts/>

This is how it should be:

<a href="http://feeds.rarst.net/rarst-posts/">

Really hard to notice difference in bunch of text. I wonder what time it could take me if I didn’t use validator. And what amount of possible subscribers I had lost to this broken link because I forgot to validate page after I wrote it. :(

Validating is automated process of checking page code. HTML (and newer XHTML Internet is slowly switching to) actually has set of more or less (depends on specific type of page) strict rules. Sceptic people may say those are only for show but rules do help to find bugs.

There are two ways to validate page:

  1. Online service (such as W3C Validator) .
  2. Offline software (I use CSE HTML Validator Lite) .

Online validating

Online validating requires nothing except knowing how to do it. And it’s really simple - go to validator page and paste URL of the page you want to validate. You can tweak settings but most of the time it isn’t necessary.


Nice shortcut is having special bookmarklet, pressing which validates page you currently have open. Bookmark this JavaScript code in your browser to make it.

Opera users can get same by installing this button.

Offline validating

This one requires installing software. I use free (for personal and educational use) version of CSE HTML Validator which offers good validating, editing capabilities and lots of seducing into buying professional version of it. :) It keeps bugging about errors free version is missing - ignore that. Those are mostly really deep or SEO-related stuff (some may actually find interesting but it’s out of bug-fixing theme).


It validates both local files (File > Open) and URLs (File > Open from the Web). Tools > Validate to actually validate what you had opened (or F6 hotkey).

Which one to use?

For properly made pages offline way may seem like overkill comparing to single-click online check. But if there are [lots of] mistakes… Even one can sometimes trigger whole chain of validation errors and online check leaves you with bunch of them and very little data on where to start fixing.

Offline validator requires more maintaining but gives you more tools and information as well.

In the end it depends on specific needs. But if you run blog or site it is really good idea to validate it at least weekly if not more often. I try to online validate my index page and last post every time I write something.

W3C Validator home page http://validator.w3.org/

CSE HTML Validator Lite home&download page http://www.htmlvalidator.com/lite/

PS Please don’t go validating every single site you read and mail webmasters that they failed it. :) It’s impolite, some people simply don’t care enough to spend thin resources on that and some have no choice because of scripts or other stuff they have to run.

Related Posts


  • Encode text to post online with Postable | www.Rarst.net #

    [...] Even if it displays properly skipping encoding may create code that won’t pass validation. [...]
  • Stress test your video card with FurMark and GPU-Z | Rarst.net #

    [...] latest game at unnecessarily high settings is fun enough, sometimes you need hard numbers to validate your purchase. FurMark is simple and fun video card benchmark, that also can (with help of GPU-Z) [...]
  • Links I visit by alphabet | Rarst.net #

    [...] – I learned to validate and do it with each [...]
  • How to integrate Google search into WordPress site | Rarst.net #

    [...] It is good idea to stick with one search box per page, otherwise it can produce non-valid code. [...]