Introduction from Rand: Guest poster Eric Enge (of Stone Temple Media) was gracious enough to contribute an immense effort on this impressive guide. In related news, he's done a brilliant, not-to-miss interview with Matt Cutts that was released just tonight. Thanks a ton, Eric - we hope to feature many more of your contributions in the future.
Hidden Text is one of the challenges faced by webmasters and search engines. Spammers continue to use hidden text to stuff keywords into their pages for purposes of artificially boosting their rankings. Search engines seek to figure out when spammers are doing this, and then then take appropriate action. For the average every day webmaster, one challenge is that there are many ways to create hidden text unintentionally, and no one wants to be penalized for something they did not intend to do. To start our look at hidden text, let's examine Google's Webmaster Guidelines for hidden text, to see the bottom line:
If your site is perceived to contain hidden text and links that are deceptive in intent, your site may be removed from the Google index, and will not appear in search results pages
Obviously, this is a fate we all want to avoid. Note the use of the word "perceived" in the above snippet. Doesn't sound like a simple black and white problem, does it? In fact, it's not, so let's look at some of the forms of hidden text.
A Few Ways to Create Hidden Text
There are many techniques for creating hidden text. Some of these can be done without the use of CSS, and they are usually fairly easy to detect:
- Make your text and background colors identical (or virtually identical) - this is the original method used by spammers for creating hidden text. It's easy to detect, and I am not aware of any legitimate use for this technique.
- Set the font size for text to 0, or to a negative number. This is also easy to detect, and I can't think of any legit use for it either.
- Use a Noscript tag. Here is some sample code for this:
<script type="text/javascript"> <!-- document.write("This text is not hidden") //--> </script> <noscript>This is hidden text</noscript>
This is really only "pseudo hidden text". While it's possible to make the text contained within the noscript tags different from what is in the Javascript, about 3% of users will see it, and that's more than enough to generate spam report complaints to the search engines. In other words, stuffing a lot of keywords within noscript tags comes with a fair amount of risk. - Text way below the fold. This is also a "psuedo hidden text" technique - that of providing content that is really not there for users. So while it is visible, the text is clearly out of the "action oriented" area of a page, and resides well below the fold, and the user needs to scroll down to see it. The text could well be directly related to the site's basic purpose, and the intent in this case would be that of "keyword stuffing". It's hard to detect algorithmically, but, under human review I would conjecture that it would be seen as a poor quality signal.
CSS techniques for creating hidden text are more interesting because they are much harder for search engine crawlers to detect unless they crawl and interpret the CSS. Most crawlers don't do that currently. Here are a few methods for using CSS to hide text:
- Specify an attribute of display:none. Here is a sample snippet for that:
<div class="hiddentext" style="display: none;">This text is hidden </div>
When you use display:none, the specified text does not display on the screen, and it is as if the element is simply not there (it has no effect on the placement of any other items on the page). One example use for this attribute is in dynamically creating printable versions of your articles. You can take the existing HTML version of a page, and create a print page by replicating the page, but applying the display:none attribute to the navigation and advertising elements of the page. It's a great technique that allows you to algorithmically create print pages for your articles quite easily. This technique is also used legitimately for the creation of menus, such as DHTML menus. - Specify an attribute of visibility: hidden. Here is a sample snippet for that:
<div class="hiddentext" style="visibility:hidden">This text is hidden </div>
This technique varies from that of display:none. While it also makes the text invisible, the space that the text would have occupied is still used up in the page layout. The space simply shows up as a blank area. - Use the z-index command to place your text on a layer below the currently viewable layer. The z-index command is just like any other property. Here is an example of what this could look like:
.hiddentext
{
position: absolute
top: 120px;
left: 250px;
z-index: 0;
}
.visibletext
{
position: absolute
top: 120px;
left: 250px;
z-index: 1;
}
The "visibletext" div is visible simply because it has a greater z-index than the "hiddentext" div. Of course, it does not take too much of a scan of the CSS to detect this technique. - Fahrner Image Replacement. This is usually done using CSS to place the image over HTML text. It works simply because the text does not appear to be invisible when you scan the HTML. However, after the text is drawn, if you place an image over the same spot, the text will be covered up by the image. One potential legitimate use for this is to make the text available in HTML for the visually impaired, and for search engines, while rendering a better looking version of the text in an image. Susan Moskwa at Google commented on a Google Groups thread about this and said "if your intent is purely to improve the visual user experience (e.g. by replacing some text with a fancier image of that same text), you don't need to worry."
- Use CSS to position the text off the screen. Sample code would look as follows:
.hiddentext
{
position: absolute
top: 0px;
left: -5000px;
}
This is another oldie, but goodie. A revised version of this would be to define a label for a table, so that the table is easier for people using screen readers (with impaired vision) to use:
.hiddentext
{
position:absolute;
left:0px;
top:-500px;
width:1px;
height:1px;
overflow:hidden;
}
This variant can then be used as a class for label tags within a table. The result is therefore accessible to screen readers, but does not clutter up the screen for users who have normal vision. However, while the intent may be pure here, there is a risk of the search engines misinterpreting your intent.
- Scalable Inman Flash Replacement (sIFR). sIFR is a technique that uses Javascript to read in HTML text and render it in Flash instead. The essential fact to focus on here is that the method guarantees that the HTML content and the Flash content are identical. One great use for this is to render the text in an anti-aliased font. This can provide a great improvement in the presentation of your site. At a recent Search Engine Marketing New England (SEMNE) event, Dan Crow, head of Google's crawl team, said that as long as this technique is used in moderation, that it was OK. However, extensive use of sIFR could be interpreted as a poor site quality signal.
- SWFObject. Unlike sIFR, this method does not guarantee that the HTML and the content in the Flash are the same. SWFObject does not reference the text in the HTML at all. It simply draws a pre-compiled Flash movie in place of the HTML. At the same SEMNE event referenced in the prior point, Dan Crow indicated that this technique was "dangerous". Even though this technique could be used for entirely legitimate reasons (e.g. the same purpose as outlined for sIFR above), there is no way for Google to detect that. Worse still, since an approved technique exists, it just looks bad when you use an unapproved technique.
Unintentionally Creating Hidden Text
There are a few ways that this happens. One of the most common methods is that your Content Management System (CMS) has some of these techniques built into it. This is actually quite common. In particular, some of the CSS based methods are used by CMS systems. For example, many CMS systems use the display:none technique to to implement drop-down menus, or other widgets that the user clicks on that then "expand" to display more text. Tab folders would be a great example of this. Sometimes the display:none technique is used in user generated content systems where the page normally shows the number of comments on a post, but chooses to suppress the text "0 Comments" in the event that no comments have been made yet.
Another common way that people create hidden text occurs when they start providing enhancements for the visually impaired. As with the example provided above of using hidden lables within a table, it comes about because you are trying to place text in a place that will make it look cluttered to a user with normal vision. The solution people use to serve both audiences is to hide the text from the sighted users.
Detecting Hidden Text
So how does Google do at detecting all of these types of hidden text, and telling whether or not the purpose is a legitimate one v.s. a illegitimate one? A recent post titled Number One on Google Using Hidden Text gives you reason to think that it's not as simple as it sounds. That noted, there are some techniques that Google has clearly labelled as bad, or intuitively just seem bad. These are:
- White text on a white background
- Setting the font size to 0, or a negative number
- SWFObject
- Specify an attribute of visibility:hidden
- Using the z-index command - someone tell me if I am giving this technique a bad rap, but it smells like trouble to me
- Use CSS to position the text off the screen. This is one of those things that can be abused, or could be used legitimately for improved the experience of users with impaired vision as we discussed above.
- Use a Noscript tag. There is a real application for this to deal with those users who have Javascript disabled. This is about 3% or so of the web surfing public.
- Text way below the fold. As note before, it is not really hidden text, but it's intent is not good, and it's likely to be seen as a poor quality signal.
- Specify an attribute of display:none. This technique certainly can be abused, but it is also commonly used for many types of things as a coding technique with legitimate intent.
- Fahrner Image Replacement. I have listed this technique here, even though the Google Guidelines identify this as a no-no. However, one cannot overlook the comments by Susan Moskwa above.
- sIFR. The beauty of this is that it by definition shows the same text as the HTML, but still, use it in moderation.
- Putting keywords unrelated to the rest of your content is a sure flag
- Putting too many keywords in your "legitimately" hidden text. Too much text in there in general could inspire someone to take a closer look
- Use a legitimate technique, but use it too much, so it raises an "investigate me" flag
- Use an edgy amount of hidden text in seemingly legitimate ways, but then also participate in several other edgy techniques. This will also raise an "investigate me" flag.
- Have a competitor report you. It is in your competitor's interest to do so, and it happens all the time. Google guarantees that all authenticated spam reports are reviewed.
- Have your site reviewed by a human. However, this happens, there is no upside to this, only downside.
Google's Position on Hidden Text
It's always good to start with the Google Guidelines for Hidden Text, but you need to look a bit deeper than that. Note the Berghausen, Dan Crow, and Susan Moskwa comments I have referenced above, as well as these statements by Googlers:
In the following Google Groups thread Googler Susan Moskwa had this to say:
Of course, as with many techniques, there are shades of gray between "this is clearly deceptive and wrong" and "this is perfectly acceptable". Matt did say that hiding text moves you a step further towards the gray area. But if you're running a perfectly legitimate site, you don't need to worry about it. If, on the other hand, your site already exhibits a bunch of other semi-shady techniques, hidden text starts to look like one more item on that list. It's like how 1 grain of sand isn't noticeable, but many grains together start to look like a beach.Related to this is a recent posting by Matt Cutts on Threadwatch
If you're straight-out using CSS to hide text, don't be surprised if that is called spam. I'm not saying that mouseovers or DHTML text or have-a-logo-but-also-have-text is spam; I answered that last one at a conference when I said "imagine how it would look to a visitor, a competitor, or someone checking out a spam report. If you show your company's name and it's Expo Markers instead of an Expo Markers logo, you should be fine. If the text you decide to show is 'Expo Markers cheap online discount buy online Expo Markers sale ...' then I would be more cautious, because that can look bad.And, in my most recent interview with Matt Cutts, we spoke about hidden text.
Typically with hidden text, a regular person can look at it and instantly tell that it is hidden text. There are certainly great cases you could conjure up where that is not the case, but the vast majority of the time it's relatively obvious. So, for that it would typically be a removal for 30 days.Summary
Then, if the site removes the hidden text or does a reconsideration request directly after that it could be shorter. But, if they continue to leave up that hidden text then that penalty could get longer.
All these statements suggest that Google does try to detect intent, and is not going to ban a site solely because of someone using hidden text in a way that appears to be legitimate. This does open the door to those who want to abuse this. If someone stuffs a few words in a bit lf legitimate looking text here or there, it's hard to detect algorithmically. However, this is a trap door and an accident waiting to happen. Many webmasters who choose to walk the line on this technique may well be walking the line on other techniques. Google, and the other search engines, relay on this to out real abusers. Also, competitors are anxious to expose those sites that are over the line.
Witness the commentary in my recent interview with Matt Cutts. We talked about a blog post that a relatively little known blog about a competitor ranking for the term access panel using hidden text. Matt Cutts had picked up on this quite quickly, and Google was prepared to take action on it. However, it turns out that the site that was "outed," responded and removed the hidden text, so as Matt indicated in our interview, he removed the offending text. The point is that your competitor wants to report you for doing bad things. That motivation should be a strong deterrent to abusing these techniques.
Ultimately, intent is one of the most important factors. Don't use these techniques to abuse the system. Too much of a good thing turns into a very bad thing. Also, use them in commonly used ways. This is no time to invent some novel new way to apply hidden text to making your site design snazzy or better. For better or worse, doing something unusual, even if your intent is pure, is just asking for trouble. While the search engines want to treat your site appropriately, you make it harder for them by inventing new and unusual coding techniques. Stick to the methods that are commonly in use by others, and you will be better off. In addition, even if your use is completely legitimate, you still need to use any hidden text techniques in moderation. Extensive use of any technique, even in perfectly legitimate ways exposes you to risk. This may by wrong or unfair in some ways, but it's the world we live in. Being morally right, but banned, does not help anyone at the end of the day.
Sources:
A few comments:
Eric -
Love the post, but I do have a question about SWFObject. I totally see your point about avoiding it, and the potential for trouble is there. Still, every Flash designer I know sings the praises of SWFObject, and I've seen it on a number of high profile sites.
The warnings against SWFObject aside, do you, or does anyone, really believe Google would purge all sites using SWFObject from its index?
Thanks for all the great comments. A couple of responses:
1. I understand that SWFObject can be used in legitimate ways. In fact it probably is most often often used by people for completely clean purposes. Unfortunately, it's hard to overlook the statements of the head of Google's crawl team, Dan Crow.
2. One of the most important themes I have heard from Google over and over again, is that they do try to establish the intent or a person who uses a potentially abusable technique.
I can't speak for Google, but if they were to ban every site using a given technique, they would wipe out a lot of quality sites in the process. This certainly makes their job harder.
I personally suspect that the bottom line is that it's best to stay away from techniques they consider risky (if you can), and limit the scope of the use of the techniques when you can't avoid using them.
Good summary Eric. Applying Newton to this: for every push towards the shady line, there's a pull back from it. Google is generally smart enough to calculate that tug-of-war and make an accurate decision about a a site's validity.
In that vein, I'd say if you have to use a technique for usability and "WOW" factor, go for it--if you're confident many people will link to that page.
I agree with phantom and Special K in questioning why Google would perceive SWFObject as trouble. SWFObject is used by web developers to provide an alternative for visitors without Flash installed. It seems unusual to me that Google would penalize sites using it. Perhaps Dan Crow can revisit his objections to SWFObject?
Judging by these criteria, many of the more creative CSS site designs are probably raising a lot of red flags. Z-index is used quite a bit in these, and web designers tend to push the boat out in terms of how they use CSS. This is understandable of course, given that their only concern is to create an innovative design that will wow their peers/clients - I would say very few take their Google rankability into account en route!
Thanks for the article Eric.
One thing that always comes to my mind when the discussion of hiiden text comes up is to wonder why it's done. It seems like the main advantage of hiding text is that it's a way to stuff keywords. Doesn't that imply that something like keyword density count more than most would say it does?
Isn't the idea that you're hiding the text from real people because it reads so poorly, but are still wanting search spiders to see all the keywords?
Am I missing something?
Back when KW density had a much greater importance than it does today, stuffing pages with hidden text was necessary for any image or brand concious sites. They would want their site to read normal but would also want high rankings so techniques like off-white text on white backgrounds in the footers and hiding text behind absolute positioned images (an old-school version of Fehrer image replacement) was fairly common.
Once Google came on the scene and had a couple years to refine their algorithms having those extra 3-7 occurances of whatever keywords you were targeting had much smaller impact in where your page would rank. People still talk about KW density because it will affect the SERPs but it's impact these days is small enough - and the penalty large enough - that most white/grey hat SEOs smartly focus on other techniques to improve rankings.
Thanks Adam. I guess my question then is why do people still try to use invisible text to stuff keywords? If it's not effective I would think it's not worth the risk of getting caught.
Is it mostly now done by people who only think it has more impact than it actually does? I guess if there are still people who think stuff keywords into titles or altributes is the thing to do then some will still use invisible text to get them in too.
It's definitely the easy thing to do and there's still plenty of kw density blog posts, tools, and half-assed SEO's out there to make the tactic seem legit.
That makes sense. There are plenty of things people try that don't work, but they still try anyway.
Probably because it worked once. Here's an idea for someone: create an SEO Snopes (Just give me a lil kick back on that, eh?). A lot of urban legends in this biz have some basis in truth. And the legends are easier to spread than a guide to the Google Guidelines + CSS + Java + Flash + SEO, and if you go back to the source, they swear it was so (in HotBot, in '99)
here's also the image/text factor. If you try to be descriptive of your images with a CSS replacement--beyond the text in the image--you're likely going to get close to, or go over, the line. Another factor (more so with usability) is hidden images to enhance other page load speeds.
Combine viable methods, disinformation, and non-standard coding practices and there are several ways to back into it. As with anything though, the malicious occurrences are going to look the worst..
SEO Snopes = What a fantastic idea but there's no way in hell I'd have time to implement properly.
I should have been clearer in my first comment that when I was using hidden text regularly it was from 98-00 and specifically for AltaVista/Hotbot-Lycos (were they the first SEs to merge? I can't remember anymore)/NorthernLight/Infoseek/etc. Once Google became the most popular SE all my attention became focused on ranking for them.
Regarding KW stuffing via non-traditional methods: It's been years since I've tried anything along those lines and I try to stay focused on tactics that have proven to work, that I think likely to work, or that I've never tested before. Until I see stuffed pages show up in the SERPs for KWs I'm targeting I'm not going to bother with anything along those lines.
sIFR and SWFObject are 2 core components of high quality web design. google needs to catch up and instead of being against web standard initiatives, maybe work with them.
Kinda scary they can build an ajax based web analytics solution but they can't keep up with anything passed a text only page and not penalize for poorly designed site. Human edited directories make me happier every day.
This is still as relevant today as it ever was. The bottom line on hidden text is quite simple, just don't do it. Period.
SWFObject blackhat? Can someone please point me in the right direction as to where Google announced they frown upon this technique?
I thought it was a good accessibilty feature - How could a blind visitor know what the site was about?
Eric has certainly provided some great insight and information on this post, but the bottom line is that these are Eric’s opinions (regarding SWFobject) etc. The fact that someone from google used the word “dangerous” (or some other negative connotation) doesn’t mean that the technique is out and out banned. As a matter of fact, SWFobject is utilized by many sites, and when used properly (i.e. when the flash and html content are identical) those sites have been penalized by the search engines.What’s interesting about this post is that while Eric seems to imply that SiFR is preferable for flash optimization, the fact is that the Google rep specifically said that even this technique is frowned upon if overused.I think that the main takeaway from this post is that there is no perfect way to optimize for flash, and therefore, building all-flash sites is not recommended. But then again, we already knew that!
Oh, and don't stuff keywords into CSS...
Funny that a company which is developing a search for "accessible" sites (https://labs.google.com/accessible/) would penalize sites for using techniques specifically intended to make those sites accessible. I have to question whether (taking into account good web design and development practices) it is good advice to sacrifice accessibility for the mere possibility of search engine penalties.
KUDOS for this still very relevant and comprehensive post on hidden text and Google SERPs. What about Bing and Yahoo, how do they treat hidden text?
Fantastic!
I personally would not take the risk hidding text, if you have to cram content into a small box use CSS to make a scroll bar, you can make it look funky with CSS and you won't be taking a risk.
Great post, this subjects been very hot since 2004
Chris
SEO TOP PAGE
I recently wrote a post about this very topic and how a competitor's website had achieved the #1 organic position.
https://google.blognewschannel.com/archives/2007/09/18/number-one-on-google-using-hidden-text/
Lots of Ajax tricks rely on hidden text to serve content to users (say I click on this and I get that appear, etc...)
Should I stay completely out of this practice? But wouldnt that go against the user friendly goal?
I know in the article, Matt Cutts said "I'm not saying that mouseovers or DHTML text or have-a-logo-but-also-have-text is spam". I use the Gilder/Levin Method for using the h1 tag with some span tags as branding. I also try to use a "tooltip" CSS rule so that people can mouse over it and see the h1 tag. My first impression is that this was simply a way of saving space and forcing content further up the page. I can see how that could be room for abuse, but is that considered unethical? The only reason I do CSS Standards based design is because of the SEO benefits. I was also planning on using z-index, just simply for the benefit of creating a more "break-out" effect with my websites. Am I just being naive? Is it me, or is Search Engine Roundtable down?
Clif - edited your post for spacing issues :) Also - SERoundtable looks up to me. Maybe just a bad ping?
That Google can detect hidden text is a myth. Sites that use the most primitive ways of hiding text are still thriving.
What do I mean by "most primitive"?
font style="font-size: 1" defined for a paragraph.
bgcolor="#FFFFFF" text="#FFFFFF" link="#FFFFFF" defined for BODY
What do I mean by "thriving"?
Being top ten or even top three for the best keywords of their respective business segments. Not for a couple of months. For years.
Then you should report them (easy to do via the Webmaster Central).
I have suspected for a long time that Google does very little of automatic hidden text discovery. They probably rely on spam reports.
yup... especially for "small search volumes" ... I know of sites that the home page has 200 keywords all in white - when one of the competitors came to me and say he would like to be a client, but use the exact method...I turned him down polietly...(but I did report the site, and it has since disappeared from the SERPs)
If they're that old they probably have several legitimate links with anchor text that does more for them than their hidden text. It's most likely a case of ranking well despite themselves... Nothing for certain without solid examples though.
I've written a blog entry on Using CSS to replace text with images in response --- I've been meaning to post about my favourite image replacement technique for a while, and you've just given me the incentive to do so. As I say in my blog entry, I am surprised that shifting the text off screen is recommended, and I'm also surprised that sIFR is not more readily accepted.
Your users might have another font than you have defined, they might also view it with another font size so that your defined title size actually might be to small (if viewed without images). A better way to to the Fehrer Image Replacement is to put the text inside the span like this:<h1 id="title">Some Title Text</h1>the corresponding CSS looks like this:#title span { display: none;}#title { width: width of your image; height: height of your image; background-image: url(/path/to/image);}
I agree that you need to be aware of the potential for different font sizes. However, the alternatives proposed all have the text hidden altogether (e.g. your proposed CSS has display: none for the text), and at least a bad font size will show some text. It's a good idea to make sure that the size chosen works with at least one font size up from your intended size, so the text is not clipped too much under these circumstances. I've updated my blog entry to make this clearer.
Hi Anthony,
Nice article...you could maybe add a note about span tag, which can be easily replaced with link tag. Then we have linked title (which is not so unusual if I may add).
There, just my two cents ;)
Thanks for the comment. Do you mean replacing the <span></span> with <a name="foo"></a>? That's not a bad suggestion, thanks.
SWFObject bad? I can see how it can be abused, but it allows a load of flexibility for fallback content for if the user doesn't have Flash or Javascript. From an accessibility point of view it's a huge boost.
I thought that too Robin.
Saying 'stay away from these techniques' with regards to SWFObject, visibility:hidden and z-index is a little harsh in my opinion.
All three have valid uses for hiding text and can be combined with other methods to ensure you have no problems.
It's shocking to hear that SWFObject is considered bad. We use that technique quite alot at my company for both accessibility and usability reasons; it provides alternate content for those without Flash, and it gets rid of those damn "click here to activate" messages in IE. Is there any other technique out there that can do both of those, and is _not_ considered bad by google?
Personally I don't report other websites that use these type of tactics. I know that unless they have a solid grasp of the search engines that eventually they will get hit by a search engine and they will see a traffic loss. I am more confident that I can use my own skills to rank above them anyways. Spam is spam and if people don't take to to create something of value then that is what it will be.
Good quality CSS styling with accessible web design, especially when sites include dynamic menus, rollover effects etc necessitate the use of z-index and other CSS techniques that your post indicates as venturing into a potentially grey area of SEO.
I think webmasters have a much more important task to keep in mind than just keeping Google happy - and that is keeping their customers / visitors happy. And if this can be done by using dynamic layers and hiding them to create rollover effects, so be it.
Google normally does not assign penalty points just because you hide text. I strongly suspect there is a manual element to this. Perhaps sites that have a lot of hidden text, layers etc get flagged up for manual review.
Our rule of thumb is that if a user can easily view the hidden layers, that is good enough justification for having them there. By easily, of course, I mean by a mere click of a visible button or rolling over a visible link or clicking on visible tabs in the site.
There are lots of 100% legit reasons to use display:none and z-indeces. Any site with small boxes with tabs and pre-loaded content (so you don't have to do an annoying ajax call every time someone moves to another tab) uses display:none. So do most drop down menu systems.
Z-indexes are nice for layouts and, in the case of sites with Google maps, they keep the map at full size and ready to go while showing other content.
So I hope intent is taken into account - the site I run is guilty on both counts, but we use display:none and z-indexes to improve the site experience.
Many thanks for the informative post Eric... and must concur with Rand, the interview with Matt Cutts was great stuff!
Just a quick formatting quibble... I think some of the sub headings above need to be tidied up for easier reading; ie "A Few Ways to Create Hidden Text" and "CSS Based Methods for Hiding Text" need to be bolded and set apart from the main paragraphs. They might have been messed up with the transfer to blog :)
Burgo - nice catches. Thanks! I've tried my best to clean up the formatting and make it clean.
Rand,
Wondering if " CSS Based Methods for Hiding Text" still wants to be bolded and shifted over?
Nice article,
Over the past year in my current job, for one reason or another I've had to build many sites with legitimate reasons for hiding text. Its thrown up lots of debate over its use, especially with regard to accessibility and my input on how to do it without getting reported for cloaking.
When we're hiding text, we tend to write everything into the DOM, mark it up correctly. Then when the DOM is complete I put a javascript layer on top and either completely remove stuff from the DOM or write the classes into the nodes with it.
I think from a hidden text point of view its got to be more difficult to track if you are using javascript to then attach a class which then hides the text.
Thanks for such a great post Eric and also for posting the interview with Matt.