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."

The legitimate use of this technique is so prevalent that I would rarely expect search engines to penalize a site for using the display: none attribute. It’s just very difficult to implement an algorithm that could truly ferret out whether the particular use of display: none is meant to deceive the search engines or not.

5 Answers
5

In these days of jQuery (and other JavaScript frameworks) heavy websites then I can't see how it can be a problem, since it's used extensively when you use things like jQuery sliders, transitions, galleries, tickers etc. These are now commonplace and search-engines are clever enough not to blindly penalise their use.

"Merely using display:none will not
automatically trigger a penalty. The
key is whether or not there is a
mechanism - either automatic or one
that is invoked by the user - to make
the content visible.Google is becoming
very adept at processing JavaScript to
find and interpret such mechanisms.If
you use valid HTML, CSS, and
JavaScript you have nothing to worry
about. Good luck!"

Interesting, thanks. That implies I should avoid being lazy and using display: none to remove items in CSS that could be removed in code; but for effects and suchlike I'm fine. I wonder then how they might detect situations where there's a picture logo, and the logo's text is also included for accessibility but hidden. From the description, this would be counted as bad?
–
AndyJul 21 '10 at 14:39

@Andy: It might. But you shouldn't use CSS to hide the logo's text; put it in the alt attribute of the img tag. That's what the attribute is there for, and as far as I know, using it tends to boost your SEO rating.
–
David ZJul 22 '10 at 2:06

Actually, it sounds like it could be a case where you use the longdesc attribute of the image tag to provide a link to another page that contains the full description. This will only be seen by screen-readers (and perhaps search engines). See webaim.org/techniques/images/longdesc#longdesc
–
Dan DiploJul 22 '10 at 8:31

I'm not actually looking for the best way to present a description of a graphic... I was referring to Matt Cutts' quote I'm not saying that... have-a-logo-but-also-have-text is spam. It doesn't sound to me like he's talking about using the alt or longdesc attributes, and it provided a slight contrast to The key is whether or not there is a mechanism... to make content visible.
–
AndyJul 23 '10 at 8:36

As the quotes suggest, the problem search engines have with display none is spam. Attempting to spam search engines, regardless of what tools you use for that, is a bad idea. If you use CSS for anything other than spam, then there is no problem.

Thanks. The question then becomes when is display: none the right tool. You say that if CSS is used for anything but spam, it won't be an issue: are you confident that if I use display: none as a lazy way to remove elements, that it won't be a problem?
–
AndyJul 21 '10 at 14:44

@Andy display: none is the correct tool when you don't want to display some content. To remove elements, it might be best to not include it at all(or, if using JavaScript, removing the elements from the DOM). If you remove the content from the page using display: none, so users don't see it but search engines still index it, then that'd be spam. If you have some sort of "Show/Hide" button, or something like that, then it's OK.
–
luiscubalJul 23 '10 at 22:44

If you are not abusing it, it will not be a problem. At this time Google does not crawl CSS stylesheets looking for instances of display: none

Google is not going to declare war on a widely used style rule, they are just giving a warning to those thinking they could add 1000 keywords to a site that are all set to display: none or even worse, margin-left: 9999px

I agree with Dan Diplo and to add to what he said, also Google itself uses display: none in its HOME PAGE, so it can't really be a problem using it, as long as you don't use it for spamming (i.e. inserting hundreds fo keywords in a display:none DIV panel).

Open Google HOME PAGE and look in HTML source code. Search for display:none you are gonna see it many times. :)

Thanks Marco. That still leaves questions of whether you can use display: none on elements that are never visible.
–
AndySep 14 '10 at 18:57

@Andy: never visible elements are supposed to be just SPAM, I don't see why you should use never visible elements, why bothering placing them in HTML page then? So I would expect using them is not a good idea. Google might be able to detect them now or in future and penalize your site.
–
Marco DemaioSep 16 '10 at 8:32

The only example I can think of is when you're using a CMS and for time reasons you might want to use CSS to hide one or two small bits of markup, rather than custom theming the markup away entirely. (And I'm only asking the Q to understand the current situation better - my CMS of choice is Drupal, where altering the markup is quick and easy.)
–
AndySep 19 '10 at 14:03

@Andy - Is it even logically possible for a search engine to read thousands of lines of javascript and identify cases where it's logically impossible for an element to be shown? It would take some immense reverse-engineering to study the code of any site with one line that says $('.'+somevar).show(); and figure out every possible value somevar could have and compare that to every possible state of the DOM - and that's an exceptionally trivial case... Also, plenty of cases where a div won't be shown due to data, input, API/AJAX call results, user behaviour, etc, but logically could...
–
user568458Oct 22 '12 at 10:11

@user568458 I think that's the point being made by Eric Enge in the last paragraph of the question, and by Dan Diplo in the accepted answer.
–
AndyOct 22 '12 at 13:06