Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

I've heard many times that it's bad to use display: none for SEO reasons, as it could be an attempt to push in irrelevant popular keywords. A few questions:

  1. Is that still received wisdom?
  2. Does it make a difference if you're only hiding a single word, or perhaps a single character?
  3. If you should avoid any use of it, what are the preferred techniques for hiding (in situations where you need it to become visible again on certain conditions)?

Some references I've found so far:

Matt Cutts from 2005 in a comment

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 another comment on the same article

We can flag text that appears to be hidden using CSS at Google. To date we have not algorithmically removed sites for doing that. We try hard to avoid throwing babies out with bathwater.

(My emphasis)

Eric Enge said in 2008

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.

share|improve this question
add comment

5 Answers

up vote 34 down vote accepted

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.

A user states this in the Google Webmaster Central forum:

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

share|improve this answer
    
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? –  Andy Jul 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 Z Jul 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 Diplo Jul 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. –  Andy Jul 23 '10 at 8:36
add comment

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

share|improve this answer
    
Thanks, that's certainly the situation I was hoping for when I asked :) –  Andy Jul 21 '10 at 14:44
add comment

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. :)

share|improve this answer
    
Thanks Marco. That still leaves questions of whether you can use display: none on elements that are never visible. –  Andy Sep 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 Demaio Sep 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.) –  Andy Sep 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... –  user568458 Oct 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. –  Andy Oct 22 '12 at 13:06
add comment

I think you should try to come up with other alternatives but here are some reference articles

Includes links to Maile and Vanessa on A Webmaster radio chat on this topic http://luigimontanez.com/2010/stop-using-text-indent-css-trick/

Maile is a Google Engineer http://maileohye.com/html-text-indent-not-messing-up-your-rankings/

It is something Google are going to come up with a solution for, but negative offset and display none are not safe if you take a long term outlook.

share|improve this answer
    
Interesting, thanks. –  Andy Sep 14 '10 at 18:59
add comment

Use "display: none" only when it is the right tool to use.

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.

The right tool for the right job.

share|improve this answer
3  
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? –  Andy Jul 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. –  luiscubal Jul 23 '10 at 22:44
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.