<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.seomofo.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>! SEO Mofo !</title>
	
	<link>http://www.seomofo.com</link>
	<description>The Web's best search engine optimization website offering SEO tips to search engine optimizers opting to optimize their search engine optimisation options.</description>
	<lastBuildDate>Sun, 29 Aug 2010 03:14:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.seomofo.com/seomofo" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="seomofo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">seomofo</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Hey, Matt Cutts, I’m using JavaScript to hide links from Google, cool?</title>
		<link>http://www.seomofo.com/ethics/using-javascript-to-hide-links.html</link>
		<comments>http://www.seomofo.com/ethics/using-javascript-to-hide-links.html#comments</comments>
		<pubDate>Wed, 16 Jun 2010 09:12:13 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[SEO Ethics]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2449</guid>
		<description><![CDATA[Lazy-loading affiliate marketing links can minimize page load times and PageRank loss, but does it violate the Google Webmaster Guidelines?]]></description>
			<content:encoded><![CDATA[<p></p><p>
Recently, I published an article called <a href="http://www.seomofo.com/marketing/seo-for-affiliate-links.html">Advanced SEO for Affiliate Marketing Links</a>, which explains linking techniques that prevent the transfer of PageRank to affiliate links, while also allowing the page to load faster&#8211;in some cases, <strong>a lot faster</strong>. However, the article has been generating some concerns amongst my fellow SEO practitioners that perhaps my advanced SEO linking techniques are actually violating Google&#8217;s Webmaster Guidelines.
</p>
<p class="info_mofo">
<strong>UPDATE: </strong>I submitted a question to the Google Help Forums, asking whether or not this technique violates the Google Webmaster Guidelines. There were quite a few answers from the &#8220;Top Contributors&#8221; and even a Google employee responded. As I expected, their responses focused on the fact that this technique manipulates Google, and they desperately tried to avoid the inescapable reality that <strong>this method improves the User experience</strong>. So the question basically came down to this: is it okay to hide content from Google if it results in a better user experience? The jury is still out, but I&#8217;ll update again when I get an answer. Meanwhile, you can follow the heated debate on the Help Forums: <a href="http://www.google.com/support/forum/p/Webmasters/thread?tid=43c85ef328efaea4&#038;hl=en">Can I use JavaScript to hide affiliate links from Google?</a>
</p>
<p>
<span class="afframe post-ad-left" title="CJ Zone 3"></span>
I&#8217;d like to take a moment to share my thoughts on this issue, but I&#8217;d also like to hear some outside opinions from other SEO/SEM folks&#8211;especially all you white hat extremists out there. Hopefully I can persuade Matt Cutts or someone from the search quality team to comment on this post and provide a more definitive answer. Personally, I&#8217;m very interested in Google&#8217;s official stance on this issue, since&#8230;um&#8230;I&#8217;m currently using these techniques all throughout this site, and if I get booted from Google&#8217;s index&#8230;my nine children will surely starve.
</p>
<h2>What are these advanced SEO techniques you speak of?</h2>
<p>
I should probably recap the techniques I wrote about, to make sure everyone understands what we&#8217;re talking about here. Here&#8217;s a quick overview:
</p>
<ol>
	<li>Remove affiliate links from your pages&#8217; HTML code.</li>
	<li>If it&#8217;s a text link embedded in page content, then just remove the <code>&lt;a&gt;</code> tags and leave the anchor text there (as plain text).</li>
	<li>If it&#8217;s an image link, remove the <code>&lt;a&gt;</code> tags AND the <code>&lt;img&gt;</code> tag.</li>
	<li>Replace the <code>&lt;a&gt;</code> tags with <code>&lt;span&gt;</code> tags, and assign a class name to them (e.g. <code>&lt;span class="affiliate"&gt;</code>).</li>
	<li>Write a JavaScript function that looks for <code>&lt;span&gt;</code> elements that contain <code>class="affiliate"</code> and replaces them with your affiliate links. (Yes, the ones you removed in Step 1).</li>
	<li>Put the JavaScript function in an external .js file and block Google from accessing it (using robots.txt).</li>
	<li>Attach the JavaScript function to the <code>onload</code> event, which means users&#8217; web browsers won&#8217;t call the function until after the page is finished loading.</li>
	<li>Googlebot&#8211;and users without JavaScript enabled&#8211;can&#8217;t call the JavaScript function, so your affiliate links are never inserted into the page content.</li>
	<li>Only users with JavaScript-enabled browsers will see your affiliate links. Everything/everyone else sees plain text instead of affiliate text links, and an empty space instead of affiliate image links.</li>
</ol>
<p>
If you still don&#8217;t get it, check out this awesome diagram I spent 6 hours making just for you: <a href="http://www.seomofo.com/img/lazy-loading-affiliate-marketing-anchors.png">lazy-loading affiliate marketing anchors</a>.
</p>
<p>
If you still don&#8217;t get it, even after viewing the diagram, then there&#8217;s no hope for you. I don&#8217;t mean just with this article&#8230;I mean your entire life is hopeless and you should seriously consider killing yourself. However, if you do understand&#8230;then let&#8217;s continue.
</p>
<div id="blackie-vs-whitey"></div>
<h2>The Big Question: Does the practice of lazy-loading affiliate marketing links violate the Google Webmaster Guidelines?</h2>
<p>
<span class="afframe post-ad-right" title="CJ Zone 4"></span>
I&#8217;ll kick off this debate by quoting some of the related information from Google&#8217;s Webmaster Guidelines&#8211;specifically the <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35769#3">Quality Guidelines</a> portion, which focuses on the things that might get your site penalized.
</p>
<p>
To make things more entertaining, I&#8217;ll turn this into an argument between 2 imaginary characters, whom I&#8217;ve arbitrarily named Blackie and Whitey. In this debate, Whitey thinks the SEO technique in question is deceptive and shouldn&#8217;t be used. Blackie thinks the SEO technique in question is not inherently evil whatsoever and it can actually benefit users, webmasters, AND search engines. Read what these guys have to say&#8230;and then feel free to express your opinion in the comments section.
</p>
<blockquote>
<p>
Webmasters who spend their energies upholding the spirit of the basic principles will provide a much better user experience and subsequently enjoy better ranking than those who spend their time looking for loopholes they can exploit.
</p>
</blockquote>
<p>
<strong>Blackie:</strong> The SEO technique in question is <strong>not</strong> designed to exploit any loopholes; it&#8217;s designed to benefit users, Google, and me&#8230;the webmaster. Users benefit from faster page load times. Google benefits because it doesn&#8217;t have to waste resources trying to crawl affiliate links, and because it avoids contaminating the link graph with links that have no inherent editorial endorsement from the affiliate marketer. And as a webmaster, I benefit from higher rankings that might result from minimizing &#8220;PageRank evaporation&#8221; and <a href="http://www.seomofo.com/speed/" class="selfish">decreasing page load times</a>.
</p>
<p>
<strong>Whitey:</strong> The SEO technique in question is <strong>clearly</strong> exploiting loopholes. The most obvious example is the fact that it&#8217;s not really decreasing the amount of time it takes to load a page. All it&#8217;s doing is delaying the loading of affiliate links/content until after the main content is loaded. If we ignore the <code>onload</code> event, the amount of time it takes to load ALL of the content has actually INCREASED, because the user&#8217;s web browser now has to request and process the external JavaScript file.
</p>
<p>
<strong>Blackie:</strong> First of all, webmasters can add the code to their existing .js files, so this technique doesn&#8217;t necessarily require an extra HTTP request.
</p>
<p>
Second of all, what the hell are you talking about, &#8220;if we ignore the <code>onload</code> event&#8221;? While we&#8217;re at it, let&#8217;s ignore the definition of a &#8220;second,&#8221; and I&#8217;ll argue that this SEO technique reduces page load times by 2 millennia.
</p>
<p>
<span class="afframe post-ad-left" title="CJ Zone 2"></span>
The fact is&#8230;the <code>onload</code> event is extremely important and cannot be ignored. It&#8217;s the web browser&#8217;s way of saying &#8220;Ok, User, this web page is done loading, and you are now free to begin perusing the content.&#8221; It&#8217;s also the point at which the &#8220;<em>Loading&#8230;</em>&#8221; message/icon goes away. Sure, some affiliate banners might appear a few seconds later, but that has little or no effect on the user&#8217;s experience. All the user cares about is accessing the main content as quickly as possible, and with this <a href="http://www.seomofo.com/advanced/" class="selfish">advanced SEO</a> technique&#8230;the user doesn&#8217;t have to wait for your affiliate banners to load.
</p>
<p>
<strong>Whitey:</strong> Whatever. Let&#8217;s move on to the next section and see if your SEO trick upholds &#8220;the spirit of the basic principles.&#8221;
</p>
<blockquote>
<p>
Make pages primarily for users, not for search engines. Don&#8217;t deceive your users or present different content to search engines than you display to users, which is commonly referred to as &#8220;cloaking.&#8221;
</p>
</blockquote>
<p>
<strong>Whitey:</strong> There you go, Blackie! Read it and weep! It clearly says &#8220;DO NOT present different content to search engines than you display to users.&#8221; Sorry, but that&#8217;s exactly what you&#8217;re doing. You&#8217;re cloaking. End of story.
</p>
<p>
<strong>Blackie:</strong> No&#8230;NOT &#8220;end of story.&#8221; Cloaking uses <strong>server-side</strong> programming to <strong>serve</strong> different content to different user-agents or IP addresses. My server returns <strong>the exact same document</strong> to users and search engines. If a user views the HTML source of my page, they will see exactly what Google sees. The HTML code is identical, down to every last character.
</p>
<p>
<strong>Whitey:</strong> Yes, but a web page is much more than just HTML code; it&#8217;s also CSS, JavaScript, images, Flash objects, videos, and all kinds of other stuff. You may be serving the same HTML document, but you&#8217;re not allowing Googlebot to fetch your JavaScript file, and it is this file that instructs web browsers to rewrite the HTML code <strong>internally</strong> to show affiliate links and ads. So ultimately, the user sees their browser&#8217;s rewritten HTML, which is different from the HTML Googlebot sees.
</p>
<p>
<span class="afframe post-ad-right" title="CJ Zone 1"></span>
<strong>Blackie:</strong> First of all, I highly doubt that Google even requests external files to begin with. Even if it did, I don&#8217;t imagine Google is capable of parsing JavaScript, using it to rewrite the HTML of any documents that referenced it, and then retroactively updating those documents&#8217; index data to reflect the newly-discovered content. So unless Google is actually trying to fetch my JavaScript&#8211;which it isn&#8217;t&#8211;then blocking it with robots.txt isn&#8217;t really doing anything anyway.
</p>
<p>

Second of all, bandwidth costs money, and I&#8217;m not obligated to serve Googlebot anything I don&#8217;t want to. It&#8217;s my JavaScript file; I have the right to control access to it.
</p>
<p>
<strong>Whitey:</strong> You&#8217;re right&#8230;but similarly, it&#8217;s Google&#8217;s index and Google has the right to ban your website from it.
</p>
<p>
<strong>Blackie:</strong> Yeah yeah yeah&#8230;blow me. Next quote.
</p>
<blockquote>
<p>
Avoid tricks intended to improve search engine rankings. A good rule of thumb is whether you&#8217;d feel comfortable explaining what you&#8217;ve done to a website that competes with you. Another useful test is to ask, &#8220;Does this help my users? Would I do this if search engines didn&#8217;t exist?&#8221;
</p>
</blockquote>
<p>
<strong>Whitey:</strong> The SEO technique in question is definitely a trick intended to improve search engine rankings.
</p>
<p>
<strong>Blackie:</strong> True, the technique is intended to improve search engine rankings, but it&#8217;s not a &#8220;trick.&#8221; That&#8217;s like saying AJAX is a trick. Or Flash is a trick. There are always going to be emerging web technologies and languages that Google can&#8217;t crawl or doesn&#8217;t understand. That doesn&#8217;t mean using them is intended to trick search engines.
</p>
<p>
<span class="afframe post-ad-left" title="CJ Zone 3"></span>
Plus, let&#8217;s consider the two suggested ways of testing whether or not this technique should be used. &#8220;Does this help my users?&#8221; YES. &#8220;Would I do this if search engines didn&#8217;t exist?&#8221; YES.
</p>
<p>
<strong>Whitey:</strong> But would you feel comfortable explaining what you&#8217;ve done to a website that competes with you? I doubt it.
</p>
<p>
<strong>Blackie:</strong> Um&#8230;I spent the last three days trying to explain this, in vivid detail, to every SEO/SEM &#8220;competitor&#8221; who will listen. I even made a diagram, so idiots like you would understand it.
</p>
<p>
<strong>Whitey:</strong> Yeah yeah yeah&#8230;suck it. Next quote.
</p>
<blockquote>
<p>
Use of JavaScript is an entirely legitimate web practice. However, use of JavaScript with the intent to deceive search engines is not. For instance, placing different text in JavaScript than in a noscript tag violates our webmaster guidelines because it displays different content for users (who see the JavaScript-based text) than for search engines (which see the noscript-based text).
</p>
</blockquote>
<p>
<strong>Whitey:</strong> Gee&#8230;that sounds kinda like what I was saying. 
</p>
<p>
<strong>Blackie:</strong> The SEO technique in question doesn&#8217;t deceive anyone. I&#8217;m explicitly telling search engines they can&#8217;t request my JavaScript file, and therefore they can&#8217;t see the content it generates. I&#8217;m not displaying different content to search engines; I&#8217;m simply telling them this content is for humans only&#8230;no bots allowed. I mean come on, Whitey, surely you of all people can understand the value of segregation and discrimination.
</p>
<p>
<strong>Whitey:</strong> Of course. Wait&#8230;what?!
</p>
<p>
<strong>Blackie:</strong> Next quote, please.
</p>
<blockquote>
<p>
Avoid hidden text or hidden links.
</p>
</blockquote>
<p>
<strong>Whitey:</strong> Obviously, your technique is a way to hide links from search engines.
</p>
<p>
<strong>Blackie:</strong> I also disallow search engines from trying to crawl my contact form. Does that mean I&#8217;m hiding my email address from Google? And I also disallow search engines from crawling my infinite calendar pages. Does that mean I&#8217;m hiding my dentist appointment next week?
</p>
<p>
I&#8217;m using JavaScript to create links that <strong>only users</strong> can see; there&#8217;s nothing in the Quality Guidelines that says you must show Google everything that users see. In many cases, that&#8217;s not even possible. The <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=66353">hidden links</a> section of the Guidelines even defines hidden links as &#8220;links that are intended to be crawled by Googlebot, but are unreadable to humans.&#8221; That&#8217;s not what I&#8217;m doing. I&#8217;m doing the exact opposite of that.
</p>
<p>
<strong>Whitey:</strong> I just realized something&#8230;you&#8217;re right. This SEO technique is awesome. Where can I subscribe to your blog?
</p>
<p>
<strong>Blackie:</strong> You can click the RSS icon below. It&#8217;s one of the 18 <a href="http://www.seomofo.com/antisocial-media/" class="selfish">social media</a> buttons I lazy-loaded onto this page while you were reading the article content. I didn&#8217;t want to make you wait.
</p>
<p>
<strong>Whitey:</strong> Well thank you. I appreciate that. Your lazy-loading trickery has indeed improved my user experience here today. I was a fool for doubting you, Blackie. Thankfully, the fog has been lifted, and for the first time&#8230;I can clearly see the&#8211;
</p>
<p>
<strong>Blackie:</strong> &#8211;Just click the icons.
</p><div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=7ZxNGiJCnvU:FvD9UyM6bbA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=7ZxNGiJCnvU:FvD9UyM6bbA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=7ZxNGiJCnvU:FvD9UyM6bbA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=7ZxNGiJCnvU:FvD9UyM6bbA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=7ZxNGiJCnvU:FvD9UyM6bbA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=7ZxNGiJCnvU:FvD9UyM6bbA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=7ZxNGiJCnvU:FvD9UyM6bbA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=7ZxNGiJCnvU:FvD9UyM6bbA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/7ZxNGiJCnvU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/ethics/using-javascript-to-hide-links.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced SEO for Affiliate Marketing Links</title>
		<link>http://www.seomofo.com/marketing/seo-for-affiliate-links.html</link>
		<comments>http://www.seomofo.com/marketing/seo-for-affiliate-links.html#comments</comments>
		<pubDate>Mon, 14 Jun 2010 10:03:01 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Advanced SEO]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Page Speed]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2355</guid>
		<description><![CDATA[These advanced SEO techniques were developed specifically for affiliate marketers. Optimized for page speed, PageRank, and accessibility.]]></description>
			<content:encoded><![CDATA[<p></p><p>
<span class="afframe post-ad-right" title="CJ Zone 3"></span>
<strong>Affiliate marketing</strong> is primarily about two things: (1) acquiring traffic, and (2) converting that traffic. In my experience, I find that affiliate marketers typically focus more of their time on the conversion rate/click-through rate side of things. However, since I don&#8217;t know a damn thing about conversion rates, this article will address the &#8220;traffic acquisition&#8221; side of things by discussing some <a href="http://www.seomofo.com/advanced/" class="selfish">advanced SEO techniques</a> I&#8217;ve developed specifically for affiliate marketers. Some of this information can be applied to banner advertising-based sites as well.
</p>
<p class="notice_mofo">
This article is going to get a bit technical. You&#8217;ll need to analyze my code examples and customize them to suit your needs. It&#8217;s not completely necessary to know JavaScript, but it will certainly help if you do. If you&#8217;re hoping to skim through this article in a few minutes&#8230;forget it. You won&#8217;t get anything out of it. If you&#8217;re hoping for some advanced SEO techniques for affiliate marketers that can minimize PageRank loss and make your pages load a lot faster, then you&#8217;re in the right place&#8230;but you&#8217;ll need to really pay attention. Grab a cup of coffee and then proceed.
</p>
<p class="info_mofo">
<strong>Update: </strong>I wrote another post about the techniques mentioned in this post. It addresses the question of whether or not these techniques are permitted by the Google Webmaster Guidelines. Check it out: <a href="http://www.seomofo.com/ethics/using-javascript-to-hide-links.html">Using JavaScript to Hide Links from Google</a><br/>
<br />
Also, when I wrote that second post, I created a diagram of the SEO techniques mentioned in this post. If you are more of a visual learner, then I recommend you check it out: <a href="http://www.seomofo.com/img/lazy-loading-affiliate-marketing-anchors.png">lazy-loading affiliate marketing anchors</a>
</p>
<h2>Common SEO Issues of Affiliate Marketers</h2>
<p>
Let&#8217;s start by looking at a couple of SEO-related topics that are relevant to a large percentage of affiliate marketing websites&#8211;PageRank and page speed.
</p>
<h3>PageRank</h3>
<p>
There are a couple of different ways in which PageRank can affect the performance of your affiliate website&#8217;s rankings in Google&#8217;s search results. For one, you can hinder your rankings by bleeding your site&#8217;s PageRank through outbound links to affiliate URLs. Even if your affiliate links contain the <code>rel="nofollow"</code> attribute, there&#8217;s still a strong possibility that Google factors them into the calculation of the followed links&#8217; PageRank. In other words, just because the nofollowed links don&#8217;t pass PageRank to your affiliate URLs, that doesn&#8217;t necessarily mean your remaining links (i.e. the ones <strong>without</strong> the <code>rel="nofollow"</code> attribute) get a bigger slice of the PageRank pie. The mere presence of nofollowed affiliate links on your web pages might result in an overall loss of site-wide PageRank, a concept some of you may know as &#8220;PageRank evaporation.&#8221;
</p>
<p>
The second way that PageRank might affect affiliate marketing sites is less common, but much more severe, and it has to do with Google&#8217;s Webmaster Guidelines. One of the things Google (i.e. Matt Cutts) has said repeatedly is that <strong>paid links must not pass PageRank</strong>. Now granted, paid links are not exactly the same as affiliate links, because theoretically (according to Google&#8217;s stupid reasoning) paid links are definitely NOT unbiased, editorial-grade endorsements of the linked content, whereas affiliate links might be. Personally, I&#8217;d rather avoid the issue entirely, by making sure <strong>none</strong> of my affiliate links pass PageRank.
</p>
<h3>Page Speed</h3>
<p>
<span class="affiliate post-ad-right" id="gate300x250" title="Gate 300x250"></span>
As most of you know, Google has incorporated <a href="http://www.seomofo.com/speed/" class="selfish">page speed</a> into its ranking algorithm. This is bad news for any affiliate sites that rely heavily on image links and ad banners, because these resources typically slow down the loading time of your pages.
</p>
<h2>Affiliate Link Optimization</h2>
<p>
Here are the basic goals I set for myself when developing my super-advanced SEO technique.
</p>
<h3>Don&#8217;t Lose PageRank</h3>
<p>
As an SEO&#8211;the best in the world, as a matter of fact&#8211;my primary concern is avoiding the potential &#8220;evaporation&#8221; of PageRank that might occur as the result of nofollowed affiliate links in my page content. Therefore, my super-advanced SEO solution must NOT rely on the use of the <code>rel="nofollow"</code> attribute.
</p>
<h3>Don&#8217;t Pass PageRank</h3>
<p>
In order to comply with Google&#8217;s Webmaster Guidelines, my extremely-advanced SEO solution must prevent search engines from crawling my affiliate links or passing PageRank through them.
</p>
<h3>Follow the FTC Guidelines</h3>
<p>
The Federal Trade Commission published their Guides Concerning the Use of Endorsements and Testimonials in Advertising, an 80-page document that can be summarized in 3 words: disclose paid endorsements. At least I think that summarizes it&#8230;honestly, I didn&#8217;t read any of it. My extra-super-advanced SEO solution should automatically identify affiliate links by applying some kind of unique styling or visual aid.
</p>
<h3>Don&#8217;t Slow Down My Page Speed</h3>
<p>
Affiliate-related content (links, images links, banner ads, etc.) must not delay the loading of my page content&#8230;at all.
</p>
<h3>Make it Degrade Gracefully</h3>
<p>
If you haven&#8217;t guessed yet, my &uuml;ber-advanced SEO solution is going to rely on JavaScript. Therefore, it should degrade gracefully in browsers that don&#8217;t have JavaScript enabled. Also, it shouldn&#8217;t negatively affect accessibility. So to all you SEOs and affiliate marketers out there who are rockin&#8217; screen readers or whatever&#8230;don&#8217;t worry, I gotcha covered.
<span class="affiliate post-ad-center" id="adobe468x60" title="Adobe Dreamweaver 468x60"></span>
</p>
<h3>Make it Easy to Use</h3>
<p>
A small percentage of my dear readers are actually &#8220;advanced SEOs&#8221;&#8211;or advanced <em>anything</em>, for that matter&#8211;and I can publish a loosely-defined solution, confident that they will tweak my code or improve on it, in order to meet the specific needs of their website. However, the majority of you have the cognitive abilities of a small piece of driftwood, and for your sakes&#8230;my solution should be reasonably easy to implement.
</p>
<h2>My Incredibly-Advanced SEO Solution</h2>
<p>
Alright then, Woody, let&#8217;s dig in!
</p>
<h3>What You&#8217;ll Need</h3>
<p>
Here is a generalized list of the various files and page elements that we&#8217;ll be working with:
</p>
<ol>
<li>external JavaScript file (e.g. <code>scripts.js</code>)</li>
<li>external stylesheet (e.g. <code>styles.css</code>)</li>
<li>robots.txt file (e.g. <code>robots.txt</code>)</li>
<li>a web page that contains affiliate links</li>
</ol>
<h3>Step 1: Create the JavaScript</h3>
<p>
Paste the following JavaScript code into your external .js file. I have made lots of comments throughout it, in order to help you understand (and/or customize) the code.
</p>
<p class="info_mofo">
<strong>Attribution:</strong> My code uses a utility function, called <code>hasClass()</code>, which is from the book JavaScript: The Definitive Guide, 5th Edition, by David Flanagan. Copyright 2006 O&#8217;Reilly Media, Inc. (ISBN: 0596101996).
</p>
<pre class="brush: jscript; collapse: true; light: false; toolbar: true;">
/**
  * Advanced SEO Technique for Affiliate Marketing Links
  * Copyright 2010, Darren Slatten, http://www.SEOmofo.com/
  * 
  * The following code consists of 2 functions. The first 
  * function is a utility function that requires 2 parameters:
  * an element name and a CSS class name. It checks to see if
  * the specified element (e) is a member of the specified class (c),
  * and returns true or false. The element name can be either an
  * id or a tag name. The class name can either be the only class
  * assigned to the element OR it can be one of several CSS classes
  * assigned to the element. This function is used by the second
  * function.
  * 
  * The second function finds all &lt;span&gt; elements that have &quot;affiliate&quot;
  * as one of their CSS classes and then turns them into affiliate
  * links.
  * 
  */



// Utility function for checking if an element (e) is a member of CSS class (c).
function hasClass(e, c) {

// If we passed the function a string, then get the element with that id.
	if (typeof e == &quot;string&quot;) e = document.getElementById(e);

// Declare the variable &quot;classes&quot; as the text value of our element's CSS classes.
	var classes = e.className;

// If our element doesn't have any CSS classes assigned to it, return false.
	if (!classes) return false;

// If our element has exactly one class and that class is (c), return true.
	if (classes == c) return true;

// If our element has multiple classes and one of them is (c), return true.
	return e.className.search(&quot;\\b&quot; + c + &quot;\\b&quot;) != -1;
};



// Function for rendering affiliate links in a way that won't pass PageRank.
function affiliateLinks(){

// Declare local variables.
	var theURL, theAnchorText, theTitle;

// Declare the variable &quot;spans&quot; as the collection of all &lt;span&gt; elements.
	var spans = document.getElementsByTagName('span');

// Perform the following steps for every &lt;span&gt; element.
	for (var i = 0; i&lt;spans.length; i++){

// If the &lt;span&gt; element is part of the &quot;affiliate&quot; class...
		if (hasClass(spans[i], 'affiliate')){

// Use the content between the &lt;span&gt; tags as our affiliate link's anchor text.
// Example: &lt;span class=&quot;affiliate&quot; title=&quot;Affiliate Site&quot;&gt;this will be our anchor text&lt;/span&gt;
// The content doesn't have to be just text; it can be HTML too.
// Example: &lt;span class=&quot;affiliate&quot; title=&quot;Affiliate Site&quot;&gt;&lt;img src=&quot;/banners/affiliate-logo.png&quot; /&gt;&lt;/span&gt;
			theAnchorText = spans[i].innerHTML;

// Get the value of the &lt;span&gt; element's title attribute, make it lowercase, and remove whitespace
// characters from the beginning and end.
			theTitle = spans[i].title.toLowerCase().replace(/^\s+|\s+$/g,&quot;&quot;);

// Check the value of the &lt;span&gt; element's title attribute against the following possibilities.
			switch (theTitle) {

// If the &lt;span&gt; element's title is &quot;thesis&quot; then set our affiliate link's href to
// &quot;http://www.seomofo.com/affiliate/thesis/&quot;
				case 'thesis': theURL = 'http://www.seomofo.com/affiliate/thesis/'; break;

// If the &lt;span&gt; element's title is &quot;thesis plans&quot; then set our affiliate link's href to
// &quot;http://www.seomofo.com/affiliate/thesis/plans/&quot;
				case 'thesis plans': theURL = 'http://www.seomofo.com/affiliate/thesis/plans/'; break;

// If the &lt;span&gt; element's title doesn't match any of the possibilities I've provided, then make
// my affiliate link do NOTHING when clicked on, because I f***ed up my code somewhere.
				default: theURL = 'javascript: void(0)';
			}

// Insert the new affiliate link into its corresponding &lt;span&gt; element and copy the &lt;span&gt; element's
// CSS classes (all of them) into the affiliate link's &lt;a&gt; tag.
			spans[i].innerHTML = '&lt;a href=&quot;' + theURL + '&quot; class=&quot;' + spans[i].className + '&quot;&gt;' + theAnchorText + '&lt;/a&gt;';

// Remove the title attribute from the &lt;span&gt; element, to prevent Firefox from displaying it in a tooltip.
			spans[i].removeAttribute('title');
		}
	}
}



// Call the affiliateLinks function AFTER the document has finished loading.
window.onload = function(){
	affiliateLinks();
}
</pre>

<h3>Step 2: Define the CSS Styles (Optional)</h3>
<p>
The following CSS code is an <strong>example</strong> showing how I have defined my affiliate links&#8217; styles. You don&#8217;t necessarily have to use my styles; you can use your own if you prefer.
</p>
<p>
If you want to use this example, be aware that it assumes you have placed a cursor file, called <code>affiliate-link.cur</code>, in a directory called <code>/cursors/</code> on your web server. If you save your cursor in a different subdirectory, adjust the URL accordingly in the CSS code.
</p>
<p>
Also be aware that this example assumes you have a 125px ad banner, called <code>thesis-125x125.gif</code>, in a directory called <code>/banners/</code> on your web server. You will obviously need to customize the code so it references ad banners you&#8217;re actually using on your site.
</p>
<p>
You can use any cursor you&#8217;d like (perhaps one of these <a href="http://www.seomofo.com/middle-finger-cursors.html">middle finger cursors</a>?) or you can download a copy of the one I&#8217;m using, by clicking on it below.<br />
</p>
<p style="line-height:32px; height:32px; width:324px; vertical-align:middle; margin:0 auto; text-align:center; border: 1px solid rgb(122, 188, 241); padding:8px; color:rgb(0, 102, 153); font-family:Georgia,'Times New Roman',Times,serif; font-size: 16px; text-shadow:0pt 1px 1px rgb(204, 204, 204); -moz-border-radius-topleft: 12px; -moz-border-radius-topright: 12px; -moz-border-radius-bottomright: 12px; -moz-border-radius-bottomleft: 12px; -moz-box-shadow: 0pt 0pt 5px rgba(82, 168, 236, 0.5);"><a href="http://www.seomofo.com/img/cursors/affiliate-link.cur" style="outline:0; text-decoration:none;display:block;width:324px;height:32px;">
To download this cursor, click here &rArr;&nbsp;&nbsp; <img src="http://www.seomofo.com/img/icons/affiliate-link.png" alt="Affiliate link cursor" width="32" height="32" style="margin:0; vertical-align:middle;" /></a>
</p>
<pre class="brush: css;">
a.affiliate {
	color:#339900;
}
a.affiliate:hover {
	cursor:url('/cursors/affiliate-link.cur'), pointer;
}
a.affiliate span {
	display:none;
}
#thesis125 {
	width:125px;
	height:125px;
}
#thesis125 a.affiliate {
	display:block;
	width:125px;
	height:125px;
	background:url('/banners/thesis-125x125.gif') transparent no-repeat;
}
</pre>

<h3>Step 3: Link Your Web Page to the External Files</h3>
<p>
Assuming your file names are <code>styles.css</code> and <code>scripts.js</code>, you would need to put something like the following code in the &lt;head&gt; section of your web page:
</p>
<pre class="brush: xml;">
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/styles.css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/scripts.js&quot;&gt;&lt;/script&gt;
</pre>

<h3>Step 4: Block Search Engines from Viewing Your External Files</h3>
<p>
Google&#8217;s ability to crawl JavaScript links keeps getting better and better. However, in this case, the URLs are not actually in our web page&#8217;s HTML source code. The only markup Google will see is the empty <code>&lt;span;&gt;</code> tags. In order for Google to find our affiliate links, it would have to fetch our external JavaScript file first. To make sure this doesn&#8217;t happen, you would need to Disallow your JavaScript file in your robots.txt file.
</p>
<p>
If you saved <code>scripts.js</code> in your site&#8217;s root directory, your code would look like this:
</p>
<pre>
User-agent: *
Disallow: /scripts.js
</pre>
<p>
If you saved <code>scripts.js</code> in a subdirectory called <code>/nobots/</code>, your code would look like this:
</p>
<pre>
User-agent: *
Disallow: /nobots/scripts.js
</pre>

<h3>Step 5: Insert the HTML Code into Your Web Page</h3>
<p>
The final step is to mark up your web pages. After the content of your web page is finished loading, the <code>affiliateLinks()</code> function will be called, and the <code>&lt;span&gt;</code> tags that have the <code>affiliate</code> CSS class will be injected with affiliate links. The next section has some mark up examples.
</p>
<h2>HTML Markup Examples</h2>
<p>
The following examples should give you a better understanding of how the script works. For each example, I will show you the <strong>HTML before</strong> (i.e. before the script modifies it), the <strong>HTML after</strong>, the final result with <strong>JavaScript enabled</strong> and the final result with <strong>JavaScript disabled</strong>.
</p>
<p style="text-align:center;">
<span class="afframe" title="CJ Zone 1"></span>
</p>
<br /><br /><br />

<h3><strong>Simple Plain Text Link</strong></h3>
<h4>HTML Before:</h4>
<pre class="brush: xml; wrap-lines: true;">
&lt;p&gt;
	SEOmofo.com runs on the &lt;span class=&quot;affiliate&quot; title=&quot;Thesis&quot;&gt;Thesis Theme for WordPress&lt;/span&gt;.
&lt;/p&gt;
</pre>
<h4>HTML After:</h4>
<pre class="brush: xml; wrap-lines: true;">
&lt;p&gt;
	SEOmofo.com runs on the &lt;span class=&quot;affiliate&quot;&gt;&lt;a class=&quot;affiliate&quot; href=&quot;http://www.seomofo.com/affiliate/thesis/&quot;&gt;Thesis Theme for WordPress&lt;/a&gt;&lt;/span&gt;.
&lt;/p&gt;
</pre>
<h4>Result with JavaScript Enabled:</h4>
<p>
	SEOmofo.com runs on the <span class="affiliate" title="Thesis">Thesis Theme for WordPress</span>.
</p>
<h4>Result with JavaScript Disabled:</h4>
<p>
	SEOmofo.com runs on the <span title="Thesis">Thesis Theme for WordPress</span>.
</p>

<br /><br /><br />

<h3><strong>Another Plain Text Link</strong></h3>
<h4>HTML Before:</h4>
<pre class="brush: xml; wrap-lines: true;">
&lt;p&gt;
	Find out more about my site's WordPress theme, by reviewing the &lt;span class=&quot;affiliate&quot; title=&quot;Thesis Plans&quot;&gt;Thesis &lt;b&gt;plans and pricing&lt;/b&gt;&lt;/span&gt;.
&lt;/p&gt;
</pre>
<h4>HTML After:</h4>
<pre class="brush: xml; wrap-lines: true;">
&lt;p&gt;
	Find out more about my site’s WordPress theme, by reviewing the &lt;span class=&quot;affiliate&quot;&gt;&lt;a class=&quot;affiliate&quot; href=&quot;http://www.seomofo.com/affiliate/thesis/plans/&quot;&gt;Thesis &lt;b&gt;plans and pricing&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;.
&lt;/p&gt;
</pre>
<h4>Result with JavaScript Enabled:</h4>
<p>
	Find out more about my site&#8217;s WordPress theme, by reviewing the <span class="affiliate" title="Thesis Plans">Thesis <b>plans and pricing</b></span>.
</p>
<h4>Result with JavaScript Disabled:</h4>
<p>
	Find out more about my site&#8217;s WordPress theme, by reviewing the <span title="Thesis Plans">Thesis <b>plans and pricing</b></span>.
</p>

<br /><br /><br />

<h3><strong>Image Link</strong></h3>
<h4>HTML Before:</h4>
<pre class="brush: xml; wrap-lines: true;">
&lt;p&gt;
	&lt;span class=&quot;affiliate post-ad-right&quot; id=&quot;adobe300x250&quot; title=&quot;Adobe 300x250&quot;&gt;&lt;/span&gt;
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vel lorem ipsum, in vulputate purus. Nullam faucibus turpis vel ipsum vestibulum eleifend. Maecenas vel velit aliquet purus feugiat pellentesque.
&lt;/p&gt;
</pre>
<h4>HTML After:</h4>
<pre class="brush: xml; wrap-lines: true;">
&lt;p&gt;
	&lt;span class=&quot;affiliate post-ad-right&quot; id=&quot;adobe300x250&quot;&gt;&lt;a class=&quot;affiliate post-ad-right&quot; href=&quot;http://www.seomofo.com/affiliate/adobe/cs5/production-premium/&quot;&gt;&lt;/a&gt;&lt;/span&gt;
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vel lorem ipsum, in vulputate purus. Nullam faucibus turpis vel ipsum vestibulum eleifend. Maecenas vel velit aliquet purus feugiat pellentesque.
&lt;/p&gt;
</pre>
<h4>Result with JavaScript Enabled:</h4>
<p>
	<span class="affiliate post-ad-right" id="adobe300x250" title="Adobe 300x250"></span>
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vel lorem ipsum, in vulputate purus. Nullam faucibus turpis vel ipsum vestibulum eleifend. Maecenas vel velit aliquet purus feugiat pellentesque.
</p>
<div style="clear:both;"></div>
<h4>Result with JavaScript Disabled:</h4>
<p>
	<span class="post-ad-right" id="adobe300x250" title="Adobe 300x250"></span>
	Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vel lorem ipsum, in vulputate purus. Nullam faucibus turpis vel ipsum vestibulum eleifend. Maecenas vel velit aliquet purus feugiat pellentesque.
</p>



<h2>Conclusion</h2>
<p>
The SEO techniques I&#8217;ve discussed in this article are best suited for affiliate marketers who work with niche sites. This is because the JavaScript example I provided contains a list of name/value pairs that tie the <code>title</code> attributes of the affiliate <code>&lt;span&gt;</code> elements to their corresponding affiliate link URLs. This kind of setup works fine for most people, but it doesn&#8217;t scale up very well. Affiliate sites that link to a large number of different advertisers and/or products would find it impractical to constantly update their JavaScript file. In those cases, the script could be modified so that the function takes an obfuscated URL as it&#8217;s argument, and then decodes it before injecting it back into the HTML source. (Obfuscating the URL keeps Google from randomly picking it out of your HTML and crawling it.)
</p>
<p>
I&#8217;m planning on doing a follow-up article about advanced SEO for affiliate marketers. It will build upon the basic concepts in this article, by giving some examples that inject 3rd-party scripts, Flash objects, and iframes. Just to give you an idea of what&#8217;s possible with these techniques, I&#8217;ll leave you with a copy of the page speed test results of the page you just read. If you&#8217;re not sure how to read this, then I&#8217;ll give you a hint: the green line indicates where the page begins to appear in the user&#8217;s browser, the blue line indicates where the page is officially loaded (i.e. where Google stops the &#8220;Site Performance&#8221; stopwatch), and everything to the right of the blue line is all the stuff I lazy-loaded after the onload event fired. Or in other words&#8230;this technique just cut down on my page load time by about 82%!!! Click the image link below.
</p>
<p style="text-align:center;">
<a href="http://www.seomofo.com/img/affiliate-speed-savings.png"><img src="http://www.seomofo.com/img/thumbnails/advanced-seo-affiliate-links.png" alt="Page speed savings from advanced SEO technique" width="72" height="72" style="margin:0 auto;border:2px solid blue;" /></a>
</p>
<p style="text-align:center;">
<span class="afframe" title="CJ Zone 2"></span>
</p>
<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=NgUeDAelYl8:BRDB9t3l2Yc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=NgUeDAelYl8:BRDB9t3l2Yc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=NgUeDAelYl8:BRDB9t3l2Yc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=NgUeDAelYl8:BRDB9t3l2Yc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=NgUeDAelYl8:BRDB9t3l2Yc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=NgUeDAelYl8:BRDB9t3l2Yc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=NgUeDAelYl8:BRDB9t3l2Yc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=NgUeDAelYl8:BRDB9t3l2Yc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/NgUeDAelYl8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/marketing/seo-for-affiliate-links.html/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>New Google Logo</title>
		<link>http://www.seomofo.com/orm/new-google-logo.html</link>
		<comments>http://www.seomofo.com/orm/new-google-logo.html#comments</comments>
		<pubDate>Tue, 25 May 2010 00:19:29 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Reputation Management]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2318</guid>
		<description><![CDATA[I was having trouble finding a high-resolution copy of the new Google logo, so I made my own png file with a fully transparent background.]]></description>
			<content:encoded><![CDATA[<p></p><p class="notice_mofo">
This website is not endorsed by nor associated with Google in any way.
</p>
<p>
I was searching for a high-resolution copy of Google&#8217;s new logo and couldn&#8217;t find one, so I made my own. I&#8217;m posting it here for anyone else who needs it. Enjoy.
</p>
<p>
To all the large companies out there: when you refuse to publish high-quality copies of your logos, you&#8217;re <b>not</b> protecting your brand&#8211;all you&#8217;re doing is forcing people to recreate your logo in Photoshop. In the end, what have you really accomplished? Instead of your authentic company logo being used without your permission&#8230;you now have a shitty knockoff being used without your permission.
</p>
<p>
And on that note, dear readers, I present to you&#8230;the new Google logo! I have two versions here, for your viewing pleasure. The first version is the highest-resolution <strong>official Google logo</strong> that I could find. I found it in the Google blog post, <a href="http://googleblog.blogspot.com/2010/05/google-design-turned-up-notch.html">The Google design, turned up a notch</a>. The only real limitation of this image is that it has a white background instead of a transparent background.
<h2 style="text-align:center; margin-bottom:0;">Official New Google Logo</h2>
<p style="font-size:80%; text-align:center; font-variant:small-caps;">
click logo below for larger image
</p>
<p style="text-align:center;">
<a href="http://www.seomofo.com/downloads/new-google-logo-official.png"><img src="http://www.seomofo.com/img/google-new-logo.png" width="195" height="70" alt="New Google logo - official" style="border:2px solid #00C;" /></a>
</p>
<p>
The second version is a Photoshopped knockoff. It has a higher resolution and a transparent background, but it&#8217;s not perfectly identical to the authentic Google logo (it&#8217;s pretty damn close though).
</p>
<h2 style="text-align:center; margin-bottom:0;">Unofficial New Google Logo</h2>
<p style="font-size:80%; text-align:center; font-variant:small-caps;">
click logo below for larger image
</p>
<p style="text-align:center;">
<a href="http://www.seomofo.com/downloads/new-google-logo-knockoff.png"><img src="http://www.seomofo.com/img/google-new-logo.png" width="195" height="70" alt="New Google logo - unofficial knockoff" style="border:2px solid #00C;" /></a>
</p><div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=313UKUOikJw:R8MCiDVKwOI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=313UKUOikJw:R8MCiDVKwOI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=313UKUOikJw:R8MCiDVKwOI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=313UKUOikJw:R8MCiDVKwOI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=313UKUOikJw:R8MCiDVKwOI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=313UKUOikJw:R8MCiDVKwOI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=313UKUOikJw:R8MCiDVKwOI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=313UKUOikJw:R8MCiDVKwOI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/313UKUOikJw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/orm/new-google-logo.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Identify rel="nofollow" Links without Viewing the HTML Source Code</title>
		<link>http://www.seomofo.com/advanced/identify-nofollow-links.html</link>
		<comments>http://www.seomofo.com/advanced/identify-nofollow-links.html#comments</comments>
		<pubDate>Fri, 23 Apr 2010 14:30:21 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Advanced SEO]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2278</guid>
		<description><![CDATA[Improve your advanced SEO skills by being able to easily identify links that cannot be crawled nor flow PageRank, e.g. iframes and rel&#61;&#34;nofollow&#34; links.]]></description>
			<content:encoded><![CDATA[<p></p><p>
One of the most important skills an <a href="http://www.seomofo.com/advanced/" class="selfish">advanced SEO</a> must possess is the ability to analyze and understand the link structure of a given web page or website. This skill can be applied to many different SEO-related topics, such as information architecture, link building, and the mysterious practice of <em>PageRank sculpting</em>. Even &#8220;content is king&#8221; advocates rely on links to deliver traffic, increase rankings, and to make their content <em>discoverable</em> to search engine crawlers.
</p>
<p>
Anyone who&#8217;s serious about SEO needs to be able to easily identify links that (a) <strong>cannot be crawled</strong>, or (b) <strong>cannot flow PageRank</strong>. Two common examples of this are:
</p>
<ul>
	<li>links that include the <code>rel="nofollow"</code> attribute</li>
	<li>links that are embedded in a page via inline frames (i.e. <code>&lt;iframe&gt;</code> elements)</li>
</ul>
<p>
In this article, I will show you how I have customized my web browser (Firefox 3.5) to help me identify nofollowed links and iframes, <strong>without viewing a page&#8217;s HTML source code</strong>. If you don&#8217;t use Firefox, you can still benefit from the CSS examples in this post, but you will have to figure out how to add custom user-defined CSS styles to your browser. If you&#8217;re using Internet Explorer, just kill yourself.
</p>
<h2>Step 1: Install the <strong>Stylish</strong> Firefox Extension</h2>
<p>
Stylish is a simple Firefox extension that allows you to add custom CSS styles to your browser. In other words, it lets you override the author-defined styles on any website. There are other extensions out there that provide similar functionality, but Stylish seems to be the easiest and most popular. Plus, it&#8217;s what I use&#8230;and I&#8217;m the <a href="http://www.seomofo.com/" class="selfish">greatest SEO who&#8217;s ever lived</a>. Install it from the official <a href="https://addons.mozilla.org/en-US/firefox/addon/2108">Stylish Firefox Add-ons page</a>.
</p>
<h2>Step 2: Create a New Style</h2>
<p>
After you install Stylish and restart Firefox, you should see the Stylish icon in the bottom-right corner of your browser. If you don&#8217;t see it, try clicking View => Toolbars => Customize, and then add the icon to your toolbar. The icon is a box with an &#8220;S&#8221; on it. Once you&#8217;ve found the icon and opened the Stylish menu, click on Write new style => Blank style.
</p>
<p style="text-align:center;">
<img src="http://www.seomofo.com/img/stylish-create-new-style.png" width="510" height="214" alt="Create a new style in Stylish" />
</p>
<h2>Step 3: Pimp Your <code>nofollow</code> Attributes</h2>
<p>
Now it&#8217;s up to you to add your own custom CSS styles to make nofollowed links stand out in your browser. Here are some tips to get you started: 
</p>
<ul>
	<li>Remember to add <code>!important</code> after every style declaration (but before the semicolon). Example: <code>.black{color:#000 !important;}</code></li>
	<li>Take advantage of the powerful <a href="http://www.w3.org/TR/CSS2/selector.html#pattern-matching">CSS 2.1 selector syntax</a>, which enables you to select elements based on their attributes. To select all links with the <code>nofollow</code> attribute, you would use <code>a[rel~="nofollow"]{...}</code></li>
	<li>If you&#8217;re the adventurous type, check out the <a href="http://www.w3.org/TR/css3-selectors/">CSS 3 selectors</a> (not an official W3C Recommendation yet). Remember that you aren&#8217;t limited to cross-browser compatible CSS&#8211;you can use anything that your specific browser accepts.</li>
	<li>For more information about using Stylish, see <a href="http://userstyles.org/help/coding">Coding User Styles</a>.</li>
</ul>
<p>
The possibilities are endless, but try the code example below and take it from there. This example will achieve the following results:
</p>
<ul>
	<li>Text nofollow links have a strikethrough in their anchor text.</li>
	<li>When you hover over text nofollow links, they turn red (and remove the strikethrough).</li>
	<li>Image nofollow links and iframe elements have a red border when you hover over them.</li>
</ul>

<pre class="brush: css;">
a[rel~=&quot;nofollow&quot;]{
	text-decoration:line-through !important;
}
a:hover[rel~=&quot;nofollow&quot;]{
	color:#F00 !important;
	text-decoration:inherit !important;
}
a:hover[rel~=&quot;nofollow&quot;] img,
iframe:hover{
	outline-width:1px !important;
	outline-offset:-1px !important;
	outline-color:#F00 !important;
	outline-style:solid !important;
}
</pre>
<p>
NOTE: If you&#8217;re wondering about these strange <code>outline</code> properties, they&#8217;re from the <a href="http://www.w3.org/TR/css3-ui/#outline1">CSS3 Candidate Recommendation</a>. They all work in Firefox 3.5. The difference between <code>outline</code> and <code>border</code> is that border adds to the width of a box, but outline doesn&#8217;t. The <code>outline-offset</code> declaration is set such that the red border falls on the inside of the box being outlined. In other words, using these declarations instead of <code>border</code> declarations should prevent you from unintentionally shifting the layout of the page you&#8217;re viewing.
</p>
<p>
If you have any SEO-related custom style declarations to add, feel free to leave a comment.
</p>




<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=Mhrvf9mH0vA:0bUlWnA8s6Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=Mhrvf9mH0vA:0bUlWnA8s6Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=Mhrvf9mH0vA:0bUlWnA8s6Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=Mhrvf9mH0vA:0bUlWnA8s6Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=Mhrvf9mH0vA:0bUlWnA8s6Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=Mhrvf9mH0vA:0bUlWnA8s6Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=Mhrvf9mH0vA:0bUlWnA8s6Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=Mhrvf9mH0vA:0bUlWnA8s6Y:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/Mhrvf9mH0vA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/advanced/identify-nofollow-links.html/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Trick People into Subscribing to Your Blog With a Fake FeedBurner Icon</title>
		<link>http://www.seomofo.com/marketing/fake-feedburner-icon.html</link>
		<comments>http://www.seomofo.com/marketing/fake-feedburner-icon.html#comments</comments>
		<pubDate>Thu, 15 Apr 2010 16:02:49 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Reputation Management]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2210</guid>
		<description><![CDATA[A custom FeedBurner icon is a subtle way to peer-pressure visitors into subscribing to your blog. It's like saying, "Come on, man...everybody's doin' it!"]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.seomofo.com/marketing/fake-feedburner-icon.html" title="Permanent link to Trick People into Subscribing to Your Blog With a Fake FeedBurner Icon"><img class="post_image alignright" src="http://www.seomofo.com/img/fake-feedburner-icon.png" width="144" height="26" alt="Trick People into Subscribing to Your Blog With a Fake FeedBurner Icon" /></a>
</p><p>
Since I started writing this blog, my number of subscribers has been increasing steadily. If you average it out, I&#8217;ve been getting about 2-3 new subscriptions every day. That&#8217;s not bad, if you ask me. If I keep this up, I&#8217;ll surpass Matt Cutts&#8217; total in only 106 years! Well&#8230;that&#8217;s assuming his number of subscriptions stays exactly the same until then.
</p>
<p>
But anyways&#8230;I was looking at my subscriber stats in FeedBurner today, and I thought to myself, &#8220;I kinda want to put one of these custom FeedCount chicklets in my side bar&#8230;&#8221;
</p>
<p style="text-align:center;">
<img alt="FeedBurner menu to create a custom FeedCount chicklet" src="http://www.seomofo.com/img/feedburner-feedcount-chicklet.png" title="FeedBurner menu to create a custom FeedCount chicklet" width="390" height="324" />
</p>
<p>
You see&#8230;one of the things I&#8217;ve noticed about human nature is that most people don&#8217;t want to think for themselves. They&#8217;d rather take the beaten path than blaze a new trail. So when you publish your number of subscribers, new visitors to your site will look at that number and think, &#8220;Lot&#8217;s of people are subscribed to this blog, so it must be good. I too will subscribe to this blog!&#8221;
</p>
<p>
The reason I like the idea of putting one of these custom FeedBurner icons on my site is because it allows me to show the World how popular I am. It&#8217;s a subtle way for me to peer-pressure my visitors into subscribing to my blog&#8211;like saying, &#8220;Come on, man&#8230;everybody&#8217;s doin&#8217; it!&#8221;
</p>
<p>
The problem is&#8230;my FeedBurner count isn&#8217;t really high enough to pull off said psychological trickery. People might look at my subscription total and think, &#8220;WTF? This guy only has 361 subscribers? That&#8217;s weak. Screw this, I&#8217;m outta here.&#8221;
</p>
<p>
Therefore, I needed a way to&#8230;shall we say&#8230;<em>embellish</em> my r&eacute;sum&eacute;.
</p>
<p>
I considered hijacking someone else&#8217;s stats. For example, I could take the HTML code that FeedBurner gave me and simply change the name in the image src location&#8230;
</p>
<p>
<code>
&lt;p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="http://feeds.seomofo.com/seomofo"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src="http://feeds.feedburner.com/~fc/<span style="text-decoration:line-through; color:#F00;">seomofo</span><span style="color:#00F;">seomoz</span>?bg=FF6600&amp;fg=000000&amp;anim=0" height="26" width="88" style="border:0" alt="" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&lt;/p&gt;
</code>
</p>
<p style="text-align:center;">
<a href="http://feeds.seomofo.com/seomofo" rel="nofollow">
<img src="http://feeds.feedburner.com/~fc/seomoz?bg=FF6600&amp;fg=000000&amp;anim=0" height="26" width="88" style="border:0" alt="" />
</a>
</p>
<p>
&#8230;but the problem with that is it doesn&#8217;t let me see my actual subscriber count. Ideally, I&#8217;d like to just add a digit in front of my real number. I could have made a fake digit and absolute-positioned it over my chicklet, but that would limit me to a static .gif image and I really wanted to use one of the fancy animated .gif images to draw people&#8217;s attention to my subscribe link.
</p>
<p>
Finally, I thought of the perfect solution&#8230;
</p>
<p>
I started with the static chicklet that FeedBurner gave me:
</p>
<p style="text-align:center;">
<a href="http://feeds.seomofo.com/seomofo" rel="nofollow">
<img src="http://feeds.feedburner.com/~fc/seomofo?bg=FF6600&amp;fg=000000&amp;anim=0" height="26" width="88" style="border:0" alt="" />
</a>
</p>
<p>
Then I used Photoshop to pull apart the animated chicklet that FeedBurner gave me. I used the layers from that file to create my own animated .gif, except I added a <strong><code>5</code></strong> and left transparent holes where the static chicklet numbers could show through:
</p>
<div style="width:100%; margin-bottom:2em;">
<div style="margin:0 auto; width:136px; height:76px; background:url('http://www.seomofo.com/img/checkered-background.png') no-repeat; text-align:center;">
<img src="http://www.seomofo.com/img/icons/feedburner-mofos.gif" alt="FeedBurner mofos" width="88" height="26" style="margin-top:24px;" />
</div>
</div>
<p>
Finally, I used CSS to absolute position my animated .gif on top of the static FeedBurner chicklet:
</p>
<div style="width:100%; margin-bottom:2em;">
<div style="margin:0 auto; width:88px; height:26px; text-align:center;">
<a href="http://feeds.seomofo.com/seomofo" rel="nofollow" style="display:block; width:88px; height:26px; position:relative;">
<img src="http://feeds.feedburner.com/~fc/seomofo?bg=FF6600&amp;fg=000000&amp;anim=0" height="26" width="88" style="position:absolute; top:0; left:0;" alt="FeedBurner readers" /><img src="http://www.seomofo.com/img/icons/feedburner-mofos.gif" alt="FeedBurner mofos" width="88" height="26"  style="position:absolute; top:0; left:0;" />
</a>
</div>
</div>
<p style="text-align:center;">
<strong>&#8230;and voil&aacute;! My blog subscriptions just increased by 5,000!</strong>
</p>
<p>
Now that you&#8217;ve seen how it&#8217;s done, go ahead and make yourself a fake FeedBurner icon. I&#8217;ll even give you a head start by providing all the digits for you:
</p>
<p style="text-align:center;">
<img src="http://www.seomofo.com/img/feedburner-numbers.gif" alt="FeedBurner icon numbers" width="68" height="7" />
</p>
<p>
Oh, and one last thing&#8230;be sure to subscribe to my blog, if you haven&#8217;t already. Come on&#8230;everybody&#8217;s doing it.
</p>



<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=THlsH1QXomc:ZNYQzi4alH4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=THlsH1QXomc:ZNYQzi4alH4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=THlsH1QXomc:ZNYQzi4alH4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=THlsH1QXomc:ZNYQzi4alH4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=THlsH1QXomc:ZNYQzi4alH4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=THlsH1QXomc:ZNYQzi4alH4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=THlsH1QXomc:ZNYQzi4alH4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=THlsH1QXomc:ZNYQzi4alH4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/THlsH1QXomc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/marketing/fake-feedburner-icon.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New ‘Comments Are Closed’ Filter Hooks for Thesis 1.7</title>
		<link>http://www.seomofo.com/wordpress/thesis/comments-are-closed-filters.html</link>
		<comments>http://www.seomofo.com/wordpress/thesis/comments-are-closed-filters.html#comments</comments>
		<pubDate>Tue, 13 Apr 2010 20:31:52 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Thesis Theme]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2066</guid>
		<description><![CDATA[Looking at the code of the newly-released Thesis 1.7 theme for WordPress, I found 2 new filters: thesis_comments_closed and thesis_comments_link_closed.]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.seomofo.com/wordpress/thesis/comments-are-closed-filters.html" title="Permanent link to New &#8216;Comments Are Closed&#8217; Filter Hooks for Thesis 1.7"><img class="post_image alignright" src="http://www.seomofo.com/img/comments-on-this-entry-are-closed.png" width="144" height="128" alt="Comments on this entry are closed." /></a>
</p><p>I was looking at the code of the newly-released <a href="http://www.seomofo.com/wordpress/thesis/" class="selfish">Thesis 1.7 theme</a> for <a href="http://www.seomofo.com/wordpress/" class="selfish">WordPress</a>, and I came across 2 filters that I hadn&#8217;t seen before:</p>
<p style="text-align:center; font-size:150%; line-height:150%; color:#090; font-family:'Courier New', Courier, monospace;">
<strong>thesis_comments_closed</strong><br />
<strong>thesis_comments_link_closed</strong>
</p>
<p>I wanted to find out more about these filters, so I googled them. To my surprise&#8230;there were <strong>zero results</strong>!?</p>
<p>
It was at that moment that I realized&#8230;the World is counting on me to demystify these mysterious mysteries, for I am the chosen one. Fear not, my fellow Thesis theme users! I will share my great wisdom with you.</p>
<h2>Where can I find these mysterious Thesis filters?</h2>
<p>After searching through my local copy of Thesis, I discovered that each filter was mentioned in only one location:</p>
<p>
thesis_comments_closed: <strong>line 110</strong><br />
<span class="uri_mofo">/wp-content/themes/thesis_17/lib/<span style="background-color:#FF9;">classes</span>/comments.php</span>
</p>
<p>
thesis_comments_link_closed: <strong>line 14</strong><br />
<span class="uri_mofo">/wp-content/themes/thesis_17/lib/<span style="background-color:#FF9;">functions</span>/comments.php</span>
</p>
<p>
Notice that these filters are not located in the same files. I&#8217;ve highlighted the directory that sets them apart.
</p>
<h2>How are these Thesis filters defined in the code?</h2>
<p>
Here is the php code of the functions that contain the Thesis filters:
</p>

<pre class="brush: php; collapse: true; first-line: 56; highlight: [110]; light: false; toolbar: true;">
	function form() {
		global $thesis_site;

		if (comments_open()) { #wp
			global $user_ID, $user_identity;

			if (get_option('comment_registration') &amp;&amp; !$user_ID) { // If registration is required and the user is NOT logged in... #wp
				echo &quot;\t\t\t\t&lt;div class=\&quot;login_alert\&quot;&gt;\n&quot;;
				echo &quot;\t\t\t\t\t&lt;p&gt;&quot; . sprintf(__('You must &lt;a href=&quot;%s&quot; rel=&quot;nofollow&quot;&gt;log in&lt;/a&gt; to post a comment.', 'thesis'), get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink())) . &quot;&lt;/p&gt;\n&quot;; #wp
				echo &quot;\t\t\t\t&lt;/div&gt;\n&quot;;
			}
			else { // Otherwise, show the user the stinkin' comment form already!
				echo &quot;\t\t\t\t&lt;div id=\&quot;respond\&quot;&gt;\n&quot;;
				echo &quot;\t\t\t\t\t&lt;div id=\&quot;respond_intro\&quot;&gt;\n&quot;;

				if (get_option('thread_comments')) cancel_comment_reply_link(__('Cancel reply', 'thesis')); #wp

				echo &quot;\t\t\t\t\t\t&lt;p&gt;&quot; . apply_filters('thesis_comment_form_title', __('Leave a Comment', 'thesis')) . &quot;&lt;/p&gt;\n&quot;; #filter
				echo &quot;\t\t\t\t\t&lt;/div&gt;\n&quot;;
				echo &quot;\t\t\t\t\t&lt;form action=\&quot;&quot; . get_option('siteurl') . &quot;/wp-comments-post.php\&quot; method=\&quot;post\&quot; id=\&quot;commentform\&quot;&gt;\n&quot;; #wp
				thesis_hook_comment_form_top();

				if ($user_ID) // If the user is logged in... #wp
					echo &quot;\t\t\t\t\t\t&lt;p&gt;&quot; . sprintf(__('Logged in as &lt;a href=&quot;%1$s&quot; rel=&quot;nofollow&quot;&gt;%2$s&lt;/a&gt;.', 'thesis'), get_option('siteurl') . '/wp-admin/profile.php', $user_identity) . ' ' . sprintf(__('&lt;a href=&quot;%s&quot; title=&quot;Log out of this account&quot; rel=&quot;nofollow&quot;&gt;Logout &amp;rarr;&lt;/a&gt;', 'thesis'), thesis_logout_url()) . &quot;&lt;/p&gt;\n&quot;; #wp
				else { // Otherwise, give your name to the doorman
					$req = (bool) get_option('require_name_email');
?&gt;
						&lt;p&gt;&lt;input class=&quot;text_input&quot; type=&quot;text&quot; name=&quot;author&quot; id=&quot;author&quot; value=&quot;&lt;?php echo $comment_author; ?&gt;&quot; tabindex=&quot;1&quot;&lt;?php if ($req) echo ' aria-required=&quot;true&quot;'; ?&gt; /&gt;&lt;label for=&quot;author&quot;&gt;&lt;?php _e('Name', 'thesis'); if ($req) _e(' &lt;span class=&quot;required&quot; title=&quot;Required&quot;&gt;*&lt;/span&gt;', 'thesis'); ?&gt;&lt;/label&gt;&lt;/p&gt;
						&lt;p&gt;&lt;input class=&quot;text_input&quot; type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; value=&quot;&lt;?php echo $comment_author_email; ?&gt;&quot; tabindex=&quot;2&quot;&lt;?php if ($req) echo ' aria-required=&quot;true&quot;'; ?&gt; /&gt;&lt;label for=&quot;email&quot;&gt;&lt;?php _e('E-mail', 'thesis'); if ($req) _e(' &lt;span class=&quot;required&quot; title=&quot;Required&quot;&gt;*&lt;/span&gt;', 'thesis'); ?&gt;&lt;/label&gt;&lt;/p&gt;
						&lt;p&gt;&lt;input class=&quot;text_input&quot; type=&quot;text&quot; name=&quot;url&quot; id=&quot;url&quot; value=&quot;&lt;?php echo $comment_author_url; ?&gt;&quot; tabindex=&quot;3&quot; /&gt;&lt;label for=&quot;url&quot;&gt;&lt;?php _e('Website', 'thesis'); ?&gt;&lt;/label&gt;&lt;/p&gt;
&lt;?php 
				}

				thesis_hook_comment_field();
				echo &quot;\t\t\t\t\t\t&lt;p class=\&quot;comment_box\&quot;&gt;\n&quot;;
				echo &quot;\t\t\t\t\t\t\t&lt;textarea name=\&quot;comment\&quot; id=\&quot;comment\&quot; tabindex=\&quot;4\&quot; cols=\&quot;40\&quot; rows=\&quot;8\&quot;&gt;&lt;/textarea&gt;\n&quot;;
				echo &quot;\t\t\t\t\t\t&lt;/p&gt;\n&quot;;

				thesis_hook_after_comment_box();

				echo &quot;\t\t\t\t\t\t&lt;p class=\&quot;remove_bottom_margin\&quot;&gt;\n&quot;;
				echo &quot;\t\t\t\t\t\t\t&lt;input name=\&quot;submit\&quot; class=\&quot;form_submit\&quot; type=\&quot;submit\&quot; id=\&quot;submit\&quot; tabindex=\&quot;5\&quot; value=\&quot;&quot; . __('Submit', 'thesis') . &quot;\&quot; /&gt;\n&quot;;
				comment_id_fields(); #wp
				echo &quot;\t\t\t\t\t\t&lt;/p&gt;\n&quot;;

				thesis_hook_comment_form_bottom();
				do_action('comment_form', $post-&gt;ID); #wp

				echo &quot;\t\t\t\t\t&lt;/form&gt;\n&quot;;
				echo &quot;\t\t\t\t&lt;/div&gt;\n&quot;;
			}
		}
		elseif ($thesis_site-&gt;comments['show_closed']) {
			echo &quot;\t\t\t\t&lt;div class=\&quot;comments_closed\&quot;&gt;\n&quot;;
			echo &quot;\t\t\t\t\t&lt;p&gt;&quot; . apply_filters('thesis_comments_closed', __('Comments on this entry are closed.', 'thesis')) . &quot;&lt;/p&gt;\n&quot;;
			echo &quot;\t\t\t\t&lt;/div&gt;\n&quot;;
		}
	}
}
</pre>

<pre class="brush: php; collapse: true; first-line: 3; highlight: [14]; light: false; toolbar: true;">
/**
 * function thesis_comments_link()
 *
 * Generates and outputs a direct link to a page's or post's comments from index
 * or archive views.
 *
 * @since 1.0.2
 */
function thesis_comments_link() {
	if (!is_single() &amp;&amp; !is_page()) { #wp
		$num_comments = get_comments_number(); #wp
		$link = (comments_open()) ? '&lt;a href=&quot;' . get_permalink() . '#comments&quot; rel=&quot;nofollow&quot;&gt;' . thesis_num_comments($num_comments, true) . '&lt;/a&gt;' : apply_filters('thesis_comments_link_closed', __('Comments on this entry are closed', 'thesis')); #wp #filter
		echo &quot;&lt;p class=\&quot;to_comments\&quot;&gt;&quot; . apply_filters('thesis_comments_link', $link) . &quot;&lt;/p&gt;\n&quot;; #filter
	}
}

function default_skin_comments_link($link) {
	return &quot;&lt;span class=\&quot;bracket\&quot;&gt;{&lt;/span&gt; $link &lt;span class=\&quot;bracket\&quot;&gt;}&lt;/span&gt;&quot;;
}

function default_skin_edit_comment_link($link) {
	return &quot;[$link]&quot;;
}
</pre>
<h2>What can I do with these Thesis filters?</h2>
<p>
These filters control the text that appears when you disable comments on one of your posts. To change the text that appears on the home page, you would use the <code>thesis_comments_link_closed</code> filter. To change the text that appears on the post itself, you would use the <code>thesis_comments_closed</code> filter.
</p>
<p>
<img alt="To change the text that appears on the home page, you would use the Thesis filter called thesis_comments_link_closed." src="http://www.seomofo.com/img/thesis-comments-link-closed.png" title="thesis_comments_link_closed" width="553" height="382" />
</p>
<p>
<img alt="To change the text that appears on a post that has comments disabled, you would use the Thesis filter called thesis_comments_closed." src="http://www.seomofo.com/img/thesis-comments-closed.png" title="thesis_comments_closed" width="553" height="440" />
</p>
<h2>Why don&#8217;t I see that text&#8230;</h2>
<p>
<span style="font-family:Georgia, 'Times New Roman', Times, serif; color:#069;">&#8230;anywhere?</span><br />
A new feature in Thesis 1.7 is the ability to disable the text entirely. To see if your comment text is disabled, go to the settings menu at <code>Thesis => Page Options => Display Options => Comments</code> and make sure the box is checked next to <code>If comments are closed, display a message</code>.
</p>
<p style="text-align:center;">
<img src="http://www.seomofo.com/img/thesis-display-options-comments.png" alt="If comments are closed, display a message" width="300" height="431" />
</p>
<p>
<span style="font-family:Georgia, 'Times New Roman', Times, serif; color:#069;">&#8230;on my home page?</span><br />
Not everyone will see the text that appears on the home page. It depends on your Thesis settings. If you have your settings such that the home page doesn&#8217;t show any featured posts, then you probably won&#8217;t see the text. This setting can be found under <code>Thesis => Page Options => Home Page Display => Number of featured posts to show</code>.
</p>
<p>
If your home page shows featured posts, but the comment text still isn&#8217;t showing up, then check your custom.css stylesheet to see if you intentionally made it disappear sometime in the past and forgot about it. The element that contains the text is <code>&lt;p class="to_comments"&gt;...&lt;/p&gt;</code>, so your CSS code would probably look like one of these:
</p>
<ul>
	<li><code>.custom .to_comments{ display: none; }</code></li>
	<li><code>.custom .to_comments{ text-indent: -9999px; }</code></li>
	<li><code>.format_text .to_comments{ display: none; }</code></li>
	<li><code>.format_text .to_comments{ text-indent: -9999px; }</code></li>
</ul>
<p>
<span style="font-family:Georgia, 'Times New Roman', Times, serif; color:#069;">&#8230;at the bottom of my post?</span><br />
If the text that appears at the bottom of your posts is missing, it might be because you intentionally made it disappear sometime in the past and forgot about it. The element that contains the text is <code>&lt;div class="comments_closed"&gt;&lt;p&gt;...&lt;/p&gt;&lt;/div&gt;</code>, so your CSS code would probably look like one of these:
</p>
<ul>
	<li><code>.custom .comments_closed{ display: none; }</code></li>
	<li><code>.custom .comments_closed{ text-indent: -9999px; }</code></li>
	<li><code>.comments_closed p{ display: none; }</code></li>
	<li><code>.comments_closed p{ text-indent: -9999px; }</code></li>
</ul>
</p>
<h2>How do I use these Thesis filters?</h2>
<p>
Here is an example of the code you can paste into your <code>custom_functions.php</code> file:
</p>
<pre class="brush: php; collapse: true; light: false; toolbar: true;">
// Define a custom filter for the text that appears on my HOME PAGE.
// This filter changes the text to &quot;Ain't no commentin' on dis mofo!&quot;
if (!function_exists('custom_comments_link_closed')) {
	function custom_comments_link_closed() {
		return 'Ain\'t no commentin\' on dis mofo!';
	}
}
// Hook my custom filter onto the Thesis filter
add_filter('thesis_comments_link_closed', 'custom_comments_link_closed');

// Define a custom filter for the text that appears on my POSTS.
// This filter changes the text to &quot;See? I told you they's no commentin'!&quot;
if (!function_exists('custom_comments_closed')) {
	function custom_comments_closed() {
		return 'See? I told you they\'s no commentin\'!';
	}
}
// Hook my custom filter onto the Thesis filter
add_filter('thesis_comments_closed', 'custom_comments_closed');
</pre>
<p>
Here is another example. This one is similar to the home page example above, but it goes a step further by inserting HTML code, in addition to the text. The result of the following example looks like this:
</p>
<p style="text-align:center;">
<img src="http://www.seomofo.com/img/no-commentin-on-dis-mofo.png" width="240" height="52" alt="Ain&#039;t no commentin&#039; on dis mofo!" />
</p>
<pre class="brush: php; collapse: true; light: false; toolbar: true;">
// Define a custom filter for the text that appears on my HOME PAGE.
// This filter changes the text to &quot;Ain't no commentin' on dis mofo!&quot;
if (!function_exists('custom_comments_link_closed')) {
	function custom_comments_link_closed() {
		return 'Ain\'t no commentin\' on dis &lt;span style=&quot;color:#069; font-size:100%;&quot;&gt;mofo&lt;/span&gt;!';
	}
}
// Hook my custom filter onto the Thesis filter
add_filter('thesis_comments_link_closed', 'custom_comments_link_closed');
</pre>
<p>
Oh and BTW&#8230;the comments on this entry aren&#8217;t actually closed. So&#8230;leave me a compliment, you non-chosen one.
</p>
<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=mLj5R49lj1o:D5oUGd1QXDg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=mLj5R49lj1o:D5oUGd1QXDg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=mLj5R49lj1o:D5oUGd1QXDg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=mLj5R49lj1o:D5oUGd1QXDg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=mLj5R49lj1o:D5oUGd1QXDg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=mLj5R49lj1o:D5oUGd1QXDg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=mLj5R49lj1o:D5oUGd1QXDg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=mLj5R49lj1o:D5oUGd1QXDg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/mLj5R49lj1o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/wordpress/thesis/comments-are-closed-filters.html/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Page Speed Optimization Tips You’ve Probably Never Heard Before</title>
		<link>http://www.seomofo.com/speed/page-speed-tips.html</link>
		<comments>http://www.seomofo.com/speed/page-speed-tips.html#comments</comments>
		<pubDate>Tue, 13 Apr 2010 05:01:08 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Page Speed]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=1267</guid>
		<description><![CDATA[Site speed is now a factor in Google’s ranking algorithm. Here are some tips for optimizing your page load times, for SEO, SEM, and social media folks.]]></description>
			<content:encoded><![CDATA[<p></p><p>
Well&#8230;it&#8217;s official. Matt Cutts has announced that <a href="http://www.mattcutts.com/blog/site-speed/">site speed is now a factor in Google&#8217;s ranking algorithm</a>. Cue the mass hysteria, worthless recap blog posts, and stupid comments!
</p>
<p>
Instead of rehashing the same shit that all the other SEO blogs have already beaten to death, I&#8217;m going to introduce a handful of unique page speed optimization tips that I came up with myself. As you might expect from someone like me, these tips are a little bit&#8230;let&#8217;s say&#8230;unorthodox. If by chance you haven&#8217;t already learned the basics of optimizing your site speed, then I highly recommend you read Steve Souders&#8217; <a href="http://stevesouders.com/hpws/rules.php">14 Rules for Faster-Loading Web Sites</a>, which explains the following best practices:
</p>
<ol class="nopad">
	<li>Make Fewer HTTP Requests</li>
	<li>Use a Content Delivery Network</li>
	<li>Add an Expires Header</li>
	<li>Gzip Components</li>
	<li>Put Stylesheets at the Top</li>
	<li>Put Scripts at the Bottom</li>
	<li>Avoid CSS Expressions</li>
	<li>Make JavaScript and CSS External</li>
	<li>Reduce DNS Lookups</li>
	<li>Minify JavaScript</li>
	<li>Avoid Redirects</li>
	<li>Remove Duplicate Scripts</li>
	<li>Configure ETags</li>
	<li>Make AJAX Cacheable</li>
</ol>
<p>
In addition to those rules, here are a few of my own page speed tips. These are geared more towards SEO, SEM, and social media folks.
</p>
<h2>Page Speed Tip #1: Cut Your Comments</h2>
<p>
Let&#8217;s be honest&#8230;none of your blog readers have anything intelligent to say. Sure, it makes you feel good when lots of people comment on your blog posts, but you need to weigh that feeling against the feeling of <strong>ranking well in Google</strong>. What do I mean by that? Well&#8230;to put it simply: <a href="http://www.seomofo.com/wordpress/comments-slow-page-speed.html">WordPress blog comments slow down your page speed</a>&#8230;A LOT. The more comments you receive on each blog post, the longer it takes to load that page. Plus, there&#8217;s a strong chance that the comments are de-emphasizing the important keywords in your post anyway. Here is a brief list of options you can consider, in order to reduce the page speed slowing effects of WordPress comments:
</p>
<ul>
	<li>Disable comments.</li>
	<li>Disable Gravatars.</li>
	<li>Delete off-topic comments.</li>
	<li>Don&#8217;t show comments until a user clicks &#8220;View Comments&#8221; button. Don&#8217;t let Google click the button.</li>
</ul>
<h2>Page Speed Tip #2: Scrap Your Scripts</h2>
<p>
Don&#8217;t load scripts from your pages unless you really need them. One thing I see quite often is sites that have multiple traffic-analysis scripts embedded in each page. Website owners are usually borderline-obsessive about their website&#8217;s traffic statistics, and sometimes they go overboard with the tracking scripts. Do you really need more than one? Probably not. Pick one and delete the rest. In my experience, the most common cases of excessive tracking scripts are:
<ul>
	<li>WordPress blogs that use Google Analytics + WP Stats</li>
	<li>eCommerce sites that use Google Analytics + shopping cart software&#8217;s default tracking script</li>
	<li>Sites that switched from Brand X to Google Analytics (or vice versa), but never deleted the old script</li>
</ul>
<h2>Page Speed Tip #3: Whack Your Widgets</h2>
<p>
A simple strategy for increasing your content&#8217;s exposure on social media sites is to provide your visitors with an easy way to share your post with their friends. Virtually all social media networks offer buttons or widgets for you to embed in your blog posts and website pages. These widgets vary in complexity, but they all share a common characteristic: <strong>they slow down your page speed</strong>. The best way to address this problem is to use JavaScript to load the widgets into your page <em>after the page is finished loading everything else</em>. For a detailed explanation of this technique, check out my article on <a href="http://www.seomofo.com/wordpress/tweetmeme-retweet-button.html">how to install the TweetMeme retweet button without the slow page loads</a>. If you&#8217;re not smart enough to pull off something that fancy, then try one of these inferior options:
</p>
<ul>
	<li>Delete all your widgets. Social media is for losers anyway.</li>
	<li>Replace script-based widgets with their HTML equivalents.</li>
	<li>If you use multiple inline images for your social media links/buttons, then combine them into one image, and set it as the background image for the block element that contains your social media links. For an example of this, read <a href="http://www.seomofo.com/experiments/6-small-images-vs-1-large.html">Page Speed: 6 Small Images vs. 1 Large Image</a>.</li>
</ul>

<h2>Page Speed Tip #4: Stop Supporting IE6</h2>
<p>
The days of bending over backwards for IE6 users are over. Those cavemen are never going to upgrade to a modern browser if you keep catering to their needs. Adopt a new policy: fuck Internet Explorer 6 and anyone who uses it. You might be wondering what this has to do with page speed. I&#8217;ll tell you. Google&#8217;s primary means of measuring your site speed is through the Google Toolbar. That means users who have the Google Toolbar installed are sending information about your page load times to Google, as they browse your site. Now let&#8217;s imagine two different websites:
</p>
<p style="width:75%; margin:1em auto;">
<strong>Website A</strong> is old school. It was built a few years ago, and it was designed to support Internet Explorer 6. In order to accomplish that, the site uses several hacks and workarounds. For example, it has a stylesheet specifically dedicated to IE6, and it has conditional IE tags in the HTML code that contain an IE6-specific script for handling PNG images with transparency.
</p>
<p style="width:75%; margin:2em auto;">
<strong>Website B</strong> doesn&#8217;t support IE6. It was designed to comply with the W3C standards, and it doesn&#8217;t use any hacks at all.
</p>
<p>
If these two sites are identical in every other way, which one will be faster? Obviously, Website B would be faster. In fact, Website B would be faster in all browsers&#8230;including IE6! If your site serves IE-specific stylesheets and scripts, then Internet Explorer 6 has to process those files in addition to the default files. The other browsers wouldn&#8217;t request the IE-specific files, but they would still have to download lines of code that are of no use. Any way you cut it, supporting IE6 slows down your site and hurts your rankings.
</p>
<p>
For the advanced SEOs out there&#8230;you might consider installing a server-side script that detects IE6 user-agents and serves them a blank page. The Google Toolbar is available for IE6, so users who have it installed will automatically tell Google your page loaded in like 0.1 seconds! You know&#8230;because it&#8217;s blank? Never mind.
</p>



<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=VgwMdUbMLNU:k1AdNfRY-TY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=VgwMdUbMLNU:k1AdNfRY-TY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=VgwMdUbMLNU:k1AdNfRY-TY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=VgwMdUbMLNU:k1AdNfRY-TY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=VgwMdUbMLNU:k1AdNfRY-TY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=VgwMdUbMLNU:k1AdNfRY-TY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=VgwMdUbMLNU:k1AdNfRY-TY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=VgwMdUbMLNU:k1AdNfRY-TY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/VgwMdUbMLNU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/speed/page-speed-tips.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Page Speed: 6 Small Images vs. 1 Large Image</title>
		<link>http://www.seomofo.com/experiments/6-small-images-vs-1-large.html</link>
		<comments>http://www.seomofo.com/experiments/6-small-images-vs-1-large.html#comments</comments>
		<pubDate>Mon, 12 Apr 2010 08:43:19 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[Page Speed]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=2122</guid>
		<description><![CDATA[This experiment compares the page load times of two different versions of social media widgets: one that uses 6 images vs. one that uses 1 image.]]></description>
			<content:encoded><![CDATA[<p></p><p>
This experiment compares the page load times of two different versions of the social media widgets I include at the bottom of my posts. I was actually running this experiment to see for myself the kind of improvements I could achieve by combining my social media widget icons into a single image. Since I&#8217;ve already gone through the trouble of testing these pages, I figure I might as well publish the results.
</p>
<p>
This experiment has implications for anyone who&#8217;s heard about using CSS sprites but is wondering if the page speed benefit is worth the effort. Although my social media icons don&#8217;t actually use sprites, the principle is basically the same: <strong>combining several small images into one large image can help your web page load faster.</strong>
</p>
<h2>Setup</h2>
<p>
I created two test pages that render exactly the same in a web browser. The content of both pages appears like this:
</p>
<div style="cursor:pointer; width:360px; height:80px; overflow:hidden; background:url('/img/widgets.png') no-repeat; margin:1em 0 2em 0;"></div>
<p>
However, the two test pages are coded differently. The first test page uses a separate image for each of the 6 social media links. This results in 7 HTTP requests: one for the HTML page itself and one for each of the 6 images. The second test page uses only 1 image, which contains all of the social media icons combined. This results in only 2 HTTP requests: one for the HTML page itself and one for the image. Here is the HTML code I used for each of the test pages:
</p>
<h3>Six Images</h3>
<pre class="brush: xml; collapse: true; light: false; toolbar: true;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Six Images&lt;/title&gt;
&lt;style type=&quot;text/css&quot;&gt;
	#post_widgets{width:360px; height:80px; overflow:hidden; background:transparent;}
	#post_widgets a{display:block; width:60px; height:80px; float:left;}
	a img{margin:0; padding:0; border:0;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;post_widgets&quot;&gt;
	&lt;a href=&quot;http://twitter.com/&quot;&gt;
		&lt;img width=&quot;60&quot; height=&quot;80&quot; src=&quot;/img/twitter.png&quot; alt=&quot;Share this on Twitter!&quot; /&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://digg.com/&quot;&gt;
		&lt;img width=&quot;60&quot; height=&quot;80&quot; src=&quot;/img/digg.png&quot; alt=&quot;Digg this!&quot; /&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://delicious.com/&quot;&gt;
		&lt;img width=&quot;60&quot; height=&quot;80&quot; src=&quot;/img/delicious.png&quot; alt=&quot;Bookmark this on Delicious!&quot; /&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://www.stumbleupon.com/&quot;&gt;
		&lt;img width=&quot;60&quot; height=&quot;80&quot; src=&quot;/img/stumbleupon.png&quot; alt=&quot;Stumble this!&quot; /&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://www.facebook.com/&quot;&gt;
		&lt;img width=&quot;60&quot; height=&quot;80&quot; src=&quot;/img/facebook.png&quot; alt=&quot;Share this on Facebook!&quot; /&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://www.reddit.com/&quot;&gt;
		&lt;img width=&quot;60&quot; height=&quot;80&quot; src=&quot;/img/reddit.png&quot; alt=&quot;Submit to Reddit!&quot; /&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>

<h3>One Image</h3>
<pre class="brush: xml; collapse: true; light: false; toolbar: true;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;One Image&lt;/title&gt;
&lt;style type=&quot;text/css&quot;&gt;
	#post_widgets{width:360px; height:80px; overflow:hidden; background:url('/img/widgets.png') no-repeat;}
	#post_widgets a{display:block; width:60px; height:80px; float:left;}
	#post_widgets a span{display:none;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;post_widgets&quot;&gt;
	&lt;a href=&quot;http://twitter.com/&quot;&gt;
		&lt;span&gt;Share this on Twitter!&lt;/span&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://digg.com/&quot;&gt;
		&lt;span&gt;Digg this!&lt;/span&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://delicious.com/&quot;&gt;
		&lt;span&gt;Bookmark this on Delicious!&lt;/span&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://www.stumbleupon.com/&quot;&gt;
		&lt;span&gt;Stumble this!&lt;/span&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://www.facebook.com/&quot;&gt;
		&lt;span&gt;Share this on Facebook!&lt;/span&gt;
	&lt;/a&gt;
	&lt;a href=&quot;http://www.reddit.com/&quot;&gt;
		&lt;span&gt;Submit to Reddit!&lt;/span&gt;
	&lt;/a&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>

<h2>Procedure</h2>
<p>I used this <a href="http://www.webpagetest.org/">web page speed testing tool</a> to measure the page load times. Each of the 2 pages was tested 10 times. The testing server was located in San Jose, CA, and my content server was in Seattle, WA. The pages were requested using IE7 with 2 parallel connections enabled. I ran the entire experiment twice. In the first experiment, I saved the images as 24-bit PNG files. In the second experiment, I saved them as 8-bit PNG files.</p>

<h2>Results</h2>
<table style="font-size:12px; text-align:center; width:100%;" border="1" cellspacing="0">
<tr>
	<th style="text-align:left; padding-left:1em;">Test</th>
	<th>HTTP Requests</th>
	<th>Bytes Downloaded</th>
	<th>Download Time</th>
</tr>
<tr>
	<th style="text-align:left; padding-left:1em;"><a href="http://www.webpagetest.org/result/100412_6XDB/">6 images @ 24-bit PNG</a></td>
	<td>7</td>
	<td>16KB</td>
	<td>0.623s</td>
</tr>
<tr>
	<th style="text-align:left; padding-left:1em;"><a href="http://www.webpagetest.org/result/100412_6XDS/">1 image @ 24-bit PNG</a></td>
	<td>2</td>
	<td>14KB</td>
	<td>0.541s</td>
</tr>
<tr>
	<th style="text-align:left; padding-left:1em;"><a href="http://www.webpagetest.org/result/100412_6XFP/">6 images @ 8-bit PNG</a></td>
	<td>7</td>
	<td>13KB</td>
	<td>0.608s</td>
</tr>
<tr>
	<th style="text-align:left; padding-left:1em;"><a href="http://www.webpagetest.org/result/100412_6XFK/">1 image @ 8-bit PNG</a></td>
	<td>2</td>
	<td>7KB</td>
	<td>0.461s</td>
</tr>
</table>

<h2>Conclusion</h2>
<p><strong>Using 24-bit PNG files</strong>: the page load time for 1 image was <strong>13.2% faster</strong> than the page load time for 6 images.</p>
<p><strong>Using 8-bit PNG files</strong>: the page load time for 1 image was <strong>24.2% faster</strong> than the page load time for 6 images.</p>
<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=gUquSen9AHQ:z92Zfx9lVEQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=gUquSen9AHQ:z92Zfx9lVEQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=gUquSen9AHQ:z92Zfx9lVEQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=gUquSen9AHQ:z92Zfx9lVEQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=gUquSen9AHQ:z92Zfx9lVEQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=gUquSen9AHQ:z92Zfx9lVEQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=gUquSen9AHQ:z92Zfx9lVEQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=gUquSen9AHQ:z92Zfx9lVEQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/gUquSen9AHQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/experiments/6-small-images-vs-1-large.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>U.S. Department of Justice Uses Social Media …to Incriminate You</title>
		<link>http://www.seomofo.com/antisocial-media/profiles-incriminate-citizens.html</link>
		<comments>http://www.seomofo.com/antisocial-media/profiles-incriminate-citizens.html#comments</comments>
		<pubDate>Mon, 22 Mar 2010 21:40:14 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[AntiSocial Media]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=1928</guid>
		<description><![CDATA[The goal of this post is to increase awareness of how the United States government uses social media to gather incriminating information about US citizens.]]></description>
			<content:encoded><![CDATA[<p><a class="post_image_link" href="http://www.seomofo.com/antisocial-media/profiles-incriminate-citizens.html" title="Permanent link to U.S. Department of Justice Uses Social Media &#8230;to Incriminate You"><img class="post_image alignright" src="http://www.seomofo.com/img/social-media-wanted-poster.jpg" width="230" height="300" alt="U.S. Department of Justice Uses Social Media to Incriminate You" /></a>
</p><style type="text/css">
.slides{
font-size:87.5%;
padding:1em 1.5em;
background-color:#EEE;
border:2px solid #666;
line-height:normal;
margin:5em 3em 2em 3em;
}
.slides h3{
text-align:center;
color:#000;
font-size:125%;
margin-top:0;
margin-bottom:1.5em;"
}
.slides p{
margin:1em 0 .5em 0;
}
.slides ul{
margin-bottom:.5em;
}
.slides li {
font-size:100%;
line-height:18px;
padding-bottom:0;
}
#content .slides ul li ul{
list-style-type:circle;
font-size:13px;
margin:.25em 2em .5em 2em;
}
.slides em{
background-color:#FF6;
font-style:normal;
}
</style>

<p>The goal of this post is simply to increase awareness of some of the ways the United States government is <strong>currently</strong> using social media networks to gather incriminating information about U.S. citizens. I&#8217;m not talking about the kind of surveillance where secret agents monitor terrorist organizations and keep us safe from attempted bombings. No&#8230;I&#8217;m talking about the kind of surveillance where law enforcement officers use your MySpace pictures to prove that you allowed underage drinking at your last party, the same night your friend tried to drive home drunk and ran over a group of kids and their grandmothers. One minute you&#8217;re a law-abiding citizen who doesn&#8217;t have to worry about the government spying on your social media activities, because you have nothing to hide; the next minute, you&#8217;re being charged with 11 counts of 2nd-degree murder.</p>

<p>Before we continue, I should mention that this post isn&#8217;t some kind of crazy conspiracy theory. This information comes directly from authentic documents provided by the U.S. government. If you want the full backstory, check out this post from the Electronic Frontier Foundation (EFF), titled <a href="http://www.eff.org/deeplinks/2010/03/eff-posts-documents-detailing-law-enforcement">EFF Posts Documents Detailing Law Enforcement Collection of Data From Social Media Sites</a>. The article discusses some of the ways the U.S. government uses social networking sites (e.g. Facebook, MySpace, LinkedIn, Twitter, etc.) to gather personal information about ordinary U.S. citizens. It includes links to documents that EFF has obtained from the <acronym title="Internal Revenue Service">IRS</acronym> and the Department of Justice. In this post, I&#8217;ll be reviewing the document from the Department of Justice, titled <a href="http://www.eff.org/files/filenode/social_network/20100303__crim_socialnetworking.pdf">Obtaining and Using Evidence from Social Networking Sites</a>.</p>

<p>This document was created for the United States Department of Justice, sometime after August of 2009. The document itself contains copies of slides (as in PowerPoint presentation slides) that are probably used as part of an internal training seminar of some kind. If you don&#8217;t want to read the whole 35-page pdf document, then you&#8217;re in luck&#8230;because I&#8217;ve already extracted the interesting slides for you. I have also added the following style/formatting features, in order to improve readability:</p>
<p style="line-height:normal; width:75%; margin-left:auto; margin-right:auto;"> <span style="font-size:12px;"><strong>Acronyms</strong> &#8211; I searched for definitions of the acronyms used throughout the document, and I chose the definitions that made the most sense. You should see the expanded form of these acronyms when you hover over them.<br />
<br />
<strong>Highlighting</strong> &#8211; I have highlighted content that I find particularly interesting (or worrisome).<br />
<br />
<strong>Superscript</strong> &#8211; I have added numbers to some of the sections of highlighted content. This is to make it easier for me to add my two cents.<br />
<br />
<strong>Bullets</strong> &#8211; Several of the slides have bullet lists but no bullets. I&#8217;ve added bullets to make the information easier to read.</span> </p>

<h2 style="text-align:center;">Obtaining and Using Evidence from Social Networking Sites<br />
	<span style="font-size: 80%;">Facebook, MySpace, LinkedIn, and More</span></h2>

<div class="slides" style="margin-top:2em;">
	<h3><small>Introduction to Social Networking</small><br />
		THE BASICS</h3>
	<p>Most social-networking sites allow users to:</p>
	<ul>
		<li>Create personal profiles</li>
		<li>Write status updates or blog entries</li>
		<li>Post photographs, videos, and audio clips</li>
		<li>Send and receive private messages</li>
		<li>Link to the pages of others (i.e., &#8220;friends&#8221;)</li>
	</ul>
	<p>How can <acronym title="Law Enforcement">LE</acronym> obtain data from these sites?</p>
	<ul>
		<li>Some info may be public</li>
		<li>Use <acronym title="Electronic Communications Privacy Act">ECPA</acronym> to get info from providers</li>
		<li><em>Undercover operations?</em></li>
	</ul>
</div>
<div class="slides">
	<h3><small>Introduction to Social Networking</small><br />
		UTILITY IN CRIMINAL CASES</h3>
	<p>Evidence from social-networking sites can</p>
	<ul>
		<li>Reveal personal communications</li>
		<li>Establish motives and personal relationships</li>
		<li>Provide location information</li>
		<li><em>Prove and disprove alibis</em><sup>1</sup></li>
		<li>Establish crime or criminal enterprise</li>
	</ul>
	<p>Also: instrumentalities or <em>fruits of crime</em><sup>2</sup>.</p>
</div>
<p><strong>1.</strong> TIP: If you&#8217;re planning on murdering someone, first create a script that automatically posts comments from your home computer. Make sure it&#8217;s running&#8230;then go take care of business. If anyone questions you, say you were at home&#8230;enjoying some quality time with your social media network of choice. And you&#8217;ve got the comments to &#8220;prove it.&#8221;</p>
<p><strong>2.</strong> TIP: If you beat someone to death with a banana, DO NOT post photographs of said banana on your Facebook profile.</p>
<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		FACEBOOK</h3>
	<ul>
		<li>Founded in 2004, primarily catering to students</li>
		<li>Now over 250m active members worldwide</li>
		<li>Over 10b photos in Oct 2008; adds over 1b monthly</li>
		<li>Applications run on Facebook platform</li>
		<li>True names encouraged but not guaranteed</li>
		<li>Privacy model is highly granular; present different
			information to different groups or individual users</li>
		<li>Messaging includes mail, real-time chat, &#8220;wall&#8221;</li>
		<li>Now used in private background checks</li>
		<li><em>Koobface &#8211; virus/worm vector</em><sup>1</sup></li>
	</ul>
</div>
<p><strong>1.</strong> I have no idea WTF this is. I can only assume &#8220;Koobface&#8221; is a top secret biological weapon that the U.S. government plans to disperse through Facebook.</p>
<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		GETTING INFO FROM FACEBOOK</h3>
	<ul>
		<li>Data is organized by user ID or group ID</li>
		<li> Standard data productions (per <acronym title="Law Enforcement">LE</acronym> guide):<br />
			<ul>
				<li>Neoprint</li>
				<li>Photoprint</li>
				<li>User Contact Info</li>
				<li>Group Contact Info</li>
				<li>IP Logs</li>
			</ul>
		</li>
		<li>HOWEVER, Facebook has other data available.</li>
		<li><em>Often cooperative with emergency requests.</em><sup>1</sup></li>
	</ul>
</div>
<div id="usc2702">
</div>
<p><strong>1.</strong> This statement is <strong>extremely significant</strong>. Why? Because it makes reference to a commonly-abused loophole in the Stored Communications Act, described under <a href="http://www.law.cornell.edu/uscode/18/usc_sec_18_00002702----000-.html#b_8">18 U.S.C. § 2702, subsection (b)(8)</a>, which states (emphasis mine):</p>
<blockquote>
	<p>A provider <strong>may</strong> divulge the contents of a communication to a governmental entity, if the provider, in good faith, believes that an emergency involving danger of death or serious physical injury to any person requires disclosure without delay of communications relating to the emergency.</p>
</blockquote>
<p>What does this mean? In a nutshell, it means any asshole who works for U.S. government can ask a social network for access to your records, and if the employee at that social network considers the situation to be an emergency, they can choose to comply with the request&#8211;<strong>without the presence of a court order or search warrant</strong>. Basically, what the <acronym title="Department of Justice">DoJ</acronym> is saying&#8230;is that the folks at Facebook will gladly divulge your personal information to anyone with a badge and a sense of urgency.</p>
<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		MYSPACE</h3>
	<ul>
		<li>Founded 2003, now owned by Fox Interactive Media</li>
		<li>2006: Most popular <acronym title="Social Network">SN</acronym>; passed by Facebook in 2008</li>
		<li>Currently tens of millions of active users monthly</li>
		<li>True names less encouraged than Facebook</li>
		<li><em>Messaging through messages</em><sup>1</sup>, chat, friend updates</li>
		<li>Application platform rolled out early 2008</li>
		<li>Young user base, history of child safety concerns</li>
		<li>Privacy is currently less granular than Facebook</li>
	</ul>
</div>

<p><strong>1.</strong> Messaging through messages = Brilliant</p>

<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		GETTING INFO FROM MYSPACE</h3>
	<ul>
		<li>Many profiles have public content.</li>
		<li>Data is organized by Friend ID &#8211; see <acronym title="Law Enforcement">LE</acronym> guide.</li>
		<li>MySpace requires a search warrant for private messages/bulletins less than 181 days old
			<ul>
				<li>Also considers friend lists to be stored content</li>
			</ul>
		</li>
		<li>Data retention times<br />
			<ul>
				<li>User info and stored files &#8211; indefinitely</li>
				<li>IP logs, info for deleted accounts &#8211; 1 year</li>
			</ul>
		</li>
	</ul>
</div>
<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		TWITTER</h3>
	<ul>
		<li>Market leader in &#8220;micro-blogging&#8221;</li>
		<li>Began in mid-2006 as &#8220;status message&#8221; service</li>
		<li>Ubiquity and ease of updating, but limited space</li>
		<li>Breaking news, real-time updates: USAir, Iran</li>
		<li>Most multimedia handled by 3rd party links</li>
		<li>Simplified privacy model: updates public or private</li>
		<li>Direct messages are private; <em>sender can delete</em></li>
		<li>Short URLs used to serve malicious links and code</li>
	</ul>
</div>
<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		GETTING INFO FROM TWITTER</h3>
	<p>The good news</p>
	<ul>
		<li>Most Twitter content is public</li>
		<li>Private messages kept until user deletes them</li>
	</ul>
	<p>The bad news</p>
	<ul>
		<li>No contact phone number</li>
		<li>Only retain last login IP</li>
		<li><em>Will not preserve data without legal process</em><sup>1</sup></li>
		<li><em>Stated policy of producing data only in response to legal process (i.e., no 2702)</em><sup>2</sup></li>
		<li>No Law Enforcement Guide</li>
	</ul>
</div>
<p><strong>1.</strong> Am I <i>seriously</i> reading an internal document from the United States Department of Justice that considers &#8220;Twitter abides by the law&#8221; to be bad news?! WTF is wrong with this goddamn government? (Twitter, I sincerely hope this is a conscious effort on your part to protect your users&#8217; privacy, and not merely the result of cutting back your expenses or something.)</p>
<p><strong>2.</strong> Let me remind you that 2702 is the loophole I <a href="#usc2702">mentioned previously</a>. In other words, the &#8220;bad news&#8221; is that Twitter&#8217;s employees won&#8217;t shit on your constitutional rights like Facebook&#8217;s will. What a bummer.</p>
<div class="slides">
	<h3><small>Overview of Key Social Networking Sites</small><br />
		LINKEDIN</h3>
	<ul>
		<li>Business-focused with enforced limits to interaction</li>
		<li>Profiles focused on education and work experience</li>
		<li><em>Use for criminal communications appears limited</em><sup>1</sup></li>
		<li>But can be used to identify experts</li>
		<li>Can check background of defense experts</li>
		<li>Privacy model similar to Facebook</li>
		<li>Profile information is not checked for reliability</li>
	</ul>
</div>

<p><strong>1.</strong> TIP: Out of the 4 social media sites mentioned in this document, LinkedIn is probably the best option for satisfying your criminal communication needs. LinkedIn is the only one that doesn&#8217;t have a &#8220;HOW TO GET INFORMATION FROM __&#8221; slide&#8211;possibly because law enforcement assumes LinkedIn doesn&#8217;t have any juicy criminal information to exploit.</p>

<div class="slides">
	<h3><small>Legal and Practical Issues</small><br />
		UNDERCOVER OPERATIONS</h3>
	<ul>
		<li>Why go undercover on Facebook, MySpace, etc?
			<ul>
				<li>Communicate with suspects/<em>targets</em></li>
				<li>Gain access to non-public info</li>
				<li>Map social relationships/networks</li>
			</ul>
		</li>
		<li>Undercover operations after <i>U.S. v. Drew</i>
			<ul>
				<li>If agents violate terms of service, is that &#8220;otherwise illegal activity&#8221;?</li>
			</ul>
		</li>
	</ul>
</div>
<p style="border-bottom:1px #DDD solid;"></p>
<p>So what have we learned from all this? Well&#8230;at the very least, I hope you&#8217;ve realized how vulnerable your personal/private information is. Basically, all the information you post to social media profiles (and all the private messages you send/receive) can be accessed by law enforcement and government agencies with very little effort&#8230;and they can use that information against you. So the next time you&#8217;re in the voting booth and you find something on the ballot that aims to provide the government with the power to demand private information from social media sites or online service providers&#8230;vote against it. And the next time you kill someone with a banana&#8230;don&#8217;t brag about it on Twitter.</p><div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=6zHb02yHLro:8vPGuiwqmIE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=6zHb02yHLro:8vPGuiwqmIE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=6zHb02yHLro:8vPGuiwqmIE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=6zHb02yHLro:8vPGuiwqmIE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=6zHb02yHLro:8vPGuiwqmIE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=6zHb02yHLro:8vPGuiwqmIE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=6zHb02yHLro:8vPGuiwqmIE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=6zHb02yHLro:8vPGuiwqmIE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/6zHb02yHLro" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/antisocial-media/profiles-incriminate-citizens.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What is the Maximum Character Length for a URL that Google Will Index?</title>
		<link>http://www.seomofo.com/experiments/title-and-h1-of-this-post-but-for-the-sake-of-keyword-prominence-stuffing-im-going-to-mention-it-again-using-various-synonyms-stemmed-variations-and-of-coursea-big-fat-prominent-font-size-heres-the-st.html</link>
		<comments>http://www.seomofo.com/experiments/title-and-h1-of-this-post-but-for-the-sake-of-keyword-prominence-stuffing-im-going-to-mention-it-again-using-various-synonyms-stemmed-variations-and-of-coursea-big-fat-prominent-font-size-heres-the-st.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:07:25 +0000</pubDate>
		<dc:creator>SEO mofo</dc:creator>
				<category><![CDATA[Experiments]]></category>

		<guid isPermaLink="false">http://www.seomofo.com/?p=1833</guid>
		<description><![CDATA[This experiment tries to find an answer to the question of how many characters long a URL can be and still get crawled and indexed by Google.]]></description>
			<content:encoded><![CDATA[<p></p>						<p>Earlier today, a very rare occurrence occurred: an SEO-related question arose to which I did not have an answer. I’m as shocked as you are. The question in question is already mentioned in the title and h1 of this post, but for the sake of keyword prominence/stuffing, I’m going to mention it again&ndash;using various synonyms, stemmed variations, and of course…a big fat prominent font size. Here’s the stumper that stumped me: </p>
						<h2 style="margin: 2em 0pt; font-size: 175%; text-align: center; color: rgb(255, 0, 102); text-shadow: 0pt 1px 1px rgb(0, 0, 0);"> What is the max number of chars in a URL that Google is willing to crawl and index? </h2>
						<p>For whatever reason, I thought I had read somewhere that Google’s limit on URLs was 255 characters. But that turned out to be wrong, so maybe I just made that number up. The best answer I could find was <a href="http://www.google.com/support/forum/p/Webmasters/thread?tid=014eb52b5192a65c&amp;hl=en#fid_014eb52b5192a65c0004795faa023ead">this quote from Google’s Webmaster Trends Analyst, John Mueller</a>: </p>
						<blockquote style="border: 0pt none ; margin: 2em 0pt; padding: 0pt; font-size: 175%; text-align: center; color: rgb(51, 204, 153); text-shadow: 0pt 1px 1px rgb(0, 0, 0);" cite="http://www.google.com/support/forum/p/Webmasters/thread?tid=014eb52b5192a65c&amp;hl=en#fid_014eb52b5192a65c0004795faa023ead">
							<p>&ldquo;We can certainly crawl and index URLs over 1000 characters long&ndash;but that doesn’t mean that it’s a good practice.&rdquo; </p>
						</blockquote>
						<p>The setup for this experiment is going to be pretty simple: I’m going to edit <a class="selfish" href="http://www.seomofo.com/wordpress/seo-friendly-permalinks.html">the permalink</a> of this post to be really, really long. Then I’m going to see if Google indexes it. I might even see if Yahoo! and Bing index it…even though no one really cares what those assholes are doing. </p>
						<h2>URL Character Limits Unrelated to Google</h2>
						<p>The question now is: How many characters should I make the URL of this post? There are a couple of sources I’ll reference to help me make this decision. The first is <a href="http://support.microsoft.com/kb/208427">this quote from the Microsoft support pages</a>: </p>
						<blockquote cite="http://support.microsoft.com/kb/208427">
							<p>Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs. </p>
						</blockquote>
						<p>The second source I’ll cite is the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.1">HTTP 1.1 protocol</a>, which says: </p>
						<blockquote cite="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.1">
							<p>The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs. A server SHOULD return 414 (Request-URI Too Long) status if a URI is longer than the server can handle (see section <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.15">10.4.15</a>).<br />
							<br />
							<em>Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.</em> </p>
						</blockquote>
						<h2>Experimental URL Character Length…</h2>
						<p>This experiment is going to try a URL of 2048 characters…that way, we can also see if Microsoft was telling the truth about Internet Explorer. I’ll update this post when I find out whether or not Google can index this ridiculously-long URL. </p>
						<p class="info_mofo">WordPress isn’t letting me edit this page’s permalink to be anything longer than 200 characters, so I’m going to try to edit the core WP files and the database settings to get it to work. So if this post doesn’t yet have 2000+ characters, just wait a little bit and check back later. If I have to, I’ll just create a static HTML file for this post.</p>
						<p class="info_mofo">Okay, so apparently the 200 character limit was a combined effort between WordPress and the database. I was able to alter the database side of things by changing the varchar(200) setting for the post_name column to varchar(2048). However, I had a much more difficult time finding the WordPress file that was truncating the permalink post slug, so I finally gave up. Instead, I edited the database directly in phpMyAdmin, and pasted the huge page_name value over the 200-character value. As long as I don&#8217;t try to update this post through the WordPress admin, it will keep using the value I gave it. Also, this is a static .html file&#8230;I used an internal rewrite in .htaccess to point that fatty URL to this file.</p>
						<h2>Experiment Results</h2>
						<p>The first results are in, and they&#8217;re rather interesting. Or at least confusing. Google has NOT indexed this page yet, and judging by the looks of the error reported in Google Webmaster Tools&#8230;I don&#8217;t think it&#8217;s going to. The error says:</p>
						<p style="text-align:center; font-size:150%; font-weight:bold;">&ldquo;<b>Invalid URL</b> &#8211; This is not a valid URL. Please correct it and resubmit.&rdquo;</p>
						<p>I&#8217;m not sure what makes this URL invalid. According to the W3C protocol, this URL is perfectly valid. Furthermore, as I&#8217;ve pointed out in the image&#8230;Google Webmaster Tools left off the &#8220;L&#8221; at the end of the anchor text URL. (WTF?) However, the href value itself is correct, and clicking on that massive link actually takes me to this page. I&#8217;ll wait and see what Yahoo and Bing do&#8230;then I&#8217;ll update again.</p>
						<p class="mofo_label">Click image to view larger</p>
						<p style="text-align:center;"><a href="/img/google-sitemaps-invalid-url-big.png"><img src="/img/google-sitemaps-invalid-url.png" width="565" height="295" style="margin-bottom:0;" alt="Google Webmaster Tools Sitemap error: Invalid URL This is not a valid URL. Please correct it and resubmit." /></a></p>
						<h3>Update: 2/24/2010 (24 hours after original post)</h3>
						<p>Okay, none of the three search engines (Google, Yahoo, Bing) indexed this page. In addition to the error shown above, Google Webmaster Tools also had a problem when I submitted this page to the Labs feature, Fetch as Googlebot. Again, it mysteriously dropped the &#8220;L&#8221; from &#8220;html&#8221;:</p>
						<p style="text-align:center;"><img src="/img/fetch-as-googlebot-failed.png" width="576" height="1067" style="margin-bottom:0;" alt="With Fetch as Googlebot you can see exactly how a page appears to Google, unless the page's URL is f***ing huge." /></p>
						<p>The next experiment I&#8217;m going to try is to resubmit the Sitemap, but this time the long URL will be 2047 characters (I will shave off the very last character). I&#8217;ve also set up a 301 redirect that points the 2047-character URL to the 2048-character URL. In other words, I&#8217;m going to use the 2047-character version to lure googlebot over here, then I&#8217;m going to fatality that little bitch with an extra character&#8230;possibly bringing down Google&#8217;s entire network in the process. So here goes nothin&#8217;&#8230;</p>
						<p>Okay&#8230;I just submitted the new Sitemap to Google Webmaster Tools, and Google accepted it! Then I went back to the Fetch As Googlebot feature and tried submitting the 2047-character URL&#8230;and it was a success! (Just FYI: I also randomly noticed that Google actually has a 2048-character limit coded into the input field.)</p>
						<p class="mofo_label">Click image to view larger</p>
						<p style="text-align:center;"><a href="/img/fetch-as-googlebot-success-big.png"><img src="/img/fetch-as-googlebot-success.png" width="576" height="507" style="margin-bottom:0;" alt="Fetch as Googlebot is a success!" /></a></p>
						<p>Actually, it was only a partial success. Webmaster Tools shows that the fetch was successful, but then when I click on the link to see the results, I get this:</p>
						<div style="border:1px solid #DDD; line-height:normal; color:#000; background-color:#FFF; padding:0 .5em 1em .5em;">
							<table border="0" cellpadding="2" cellspacing="0" style="width:100%;">
								<tr>
									<td rowspan="3" style="font-family:'Times New Roman', Times, serif; font-size:48px;">
									<b>
									<span style="color:#0039b6;">G</span><span style="color:#c41200;">o</span><span style="color:#f3c518;">o</span><span style="color:#0039b6;">g</span><span style="color:#30a72f;">l</span><span style="color:#c41200;">e</span>&nbsp;
									</b>
									</td>
									<td>&nbsp;</td>
								</tr>
								<tr style="height:24px;">
									<td valign="middle" style="background-color:#36C; width:100%; line-height:19px;"><span style="line-height:20px; font-size:16px; font-family:Arial, Helvetica, sans-serif; color:#FFF; margin-left:2px;"><b>Error</b></span></td>
								</tr>
								<tr>
									<td>&nbsp;</td>
								</tr>
							</table>
							<p style="font-family:Arial, Helvetica, sans-serif; margin:16px 40px;">
								<span style="font-family:Arial, Helvetica, sans-serif; font-size:32px; font-weight:bold; height:38px; line-height:38px; display:block; margin:22px 0;">Request-URI Too Large<br /><br /></span>
								The requested URL <code style="font-family:monospace; font-size:13px;">/webmasters/tools/labs-googlebot-fetch-2</code>&#8230; is too large to process.
							</p>
							<table border="0" cellpadding="0" cellspacing="0" style="width:100%;">
								<tr>
									<td style="background-color:#36C; height:4px; line-height:4px; font-size:4px;">&nbsp;</td>
								</tr>
							</table>
						</div>
						<p style="margin-top:1em;">(And yes&#8230;I really did take the time to re-code that &uarr; in XHTML strict, instead of just taking a screen capture. I&#8217;m THAT dedicated to page speed&#8230;or something.)</p>
						<p>That&#8217;s right&#8230;after Google saw the length of my URL, it just plain refused to accept my request and returned a 414 status code instead. Honestly, I think this was my first time ever seeing a 414 HTTP response. How exciting! No? Whatever.</p>
						<p>None of the search engines have indexed my 2047-character URL yet (and I doubt they will), but I&#8217;ll give them another day before I try something else. Until then&#8230;</p>
						<h3>Update: 2/25/2010</h3>
						<p>None of the search engines fell for my bait n&#8217; switch, so I&#8217;ve made some more changes. First, I changed all of my internal links to the 2047-character URL (i.e. I altered the database value for post_name again). Then I edited my .htaccess file so that (1) the internal rewrite connects the new URL to the same static HTML file I&#8217;ve been using, and (2) the 2048 URL redirects to the 2047 URL (to avoid breaking the bit.ly URLs that have already been passed around). Also, I noticed that I had overlooked a slash in my URL (corresponding to the text &#8220;prominence/stuffing&#8221;), so I have replaced it with a dash. Essentially this means the current 2047-character URL is different from the one in the bait n&#8217; switch. Lastly, I updated my Sitemap and resubmitted it to Google, Yahoo, and Bing, via their respective webmaster tools. The final result of today&#8217;s changes is that this page now has a 2047-character URL, which is linked to from all WordPress-generated pages and pointed to in my sitemap.xml file. In other words, there&#8217;s nothing fancy going on here. Neither of the previous URLs was indexed, so as far as search engines are concerned, this is simply a new page that needs to be crawled.</p>
						<p>In addition to submitting my Sitemap, I also tried submitting the new 2047-character URL to each of the search engines&#8217; &#8220;submit your URL&#8221; pages. (I never thought I&#8217;d be using those again!) One thing I discovered was that none of the URL submission forms would accept 2047 characters in their input fields. Here is the HTML for each of the input tags:</p>
						<p>
							<strong>Google:</strong><br /><code style="color:#360; font-size:12px;">&lt;input type="text" <span style="background-color:#FF6; padding:0 4px;">maxlength="256"</span> size="40" value="" name="q"&gt;</code><br /><br />
							<strong>Yahoo:</strong><br /><code style="color:#360; font-size:12px;">&lt;input type="text" <span style="background-color:#FF6; padding:0 4px;">maxlength="256"</span> size="60" value="http://" name="site_url"&gt;</code><br /><br />
							<strong>Bing:</strong><br /><code style="color:#360; font-size:12px;">&lt;input type="text" <span style="background-color:#FF6; padding:0 4px;">maxlength="1024"</span> value="" size="30" name="url"&gt;</code>
						</p>
						<p style="margin:4em 0 2em 0;">Fortunately, these character length restrictions rely on the value of the <code>maxlength</code> HTML attribute, which I can easily modify with the (must-have) Firefox extension, <a href="http://getfirebug.com/">Firebug</a>:</p>
						<p style="text-align:center;"><img src="/img/submit-url-to-google.png" width="576" height="472" style="margin-bottom:0;" alt="Use the Firebug addon for Firefox to edit the HTML of any web page." /></p>
						<p>Unfortunately, any web developer with more than 3 brain cells will implement a server-side restriction as well, in order to foil the plans of any wannabe hackers who might try to circumvent the client-side restriction by editing the value of the <code>maxlength</code> HTML attribute. I ignored this possibility and tried it anyway. Google gave me another 414 server response error page. Yahoo gave me this:</p>
						<p style="text-align:center;"><img src="/img/yahoo-invalid-request.png" width="381" height="143" style="margin-bottom:0;" alt="Invalid Request: We are currently experiencing difficulties with our internal systems. Please try again later." /></p>
						<p>And Bing gave me this:</p>
						<blockquote>
							<p>Thank you for submitting your URL to Bing</p>
							<p>MSNBot automatically indexes pages that meet accepted standards for content, design, and technical implementation.</p>
							<p>This change will not be reflected immediately, so please be patient and check back periodically.</p>
						</blockquote>
						<p>Bing&#8217;s response suggests that my little Firebug trick worked, and therefore their URL submission feature may have been created by web developers of the 1-brain-cell or 2-brain-cell varieties (possibly the same developers that created Internet Explorer). On the other hand, it&#8217;s quite possible that Bing&#8217;s server silently discarded my URL but returned the same &#8220;thank you&#8221; page that everyone sees. However, I have to assume the former case is true, since it conveniently set me up for that IE joke. I hate Internet Explorer. A lot.</p>
						<!--[if IE]><p>Seriously&#8230;why are you using it? Because it came with Windows? Do you realize how severely Internet Explorer has fucked up the entire internet? The browser you&#8217;re currently using is so shitty&#8230;that it has LITERALLY crippled the evolution of technology and of mankind in general. I don&#8217;t want to hear your petty excuses, fuckface. Go <a href="http://www.mozilla.com/en-US/firefox/ie.html">download a REAL browser</a>, and stop supporting a company that uses its market share in operating systems to force people to use their inferior web browser.</p><![endif]-->
						<p>The last (and most interesting) discovery I&#8217;ll mention&#8230;is that Google Webmaster Tools is reporting a 404 error for the following URL:</p>
						<p><span class="uri_mofo">http://www.seomofo.com/experiments/earlier-today-a-very-rare-occurrence-occurred-an-seo-related-question-arose-to-which-i-did-not-have-an-answer-im-as-shocked-as-you-are-the-question-in-question-is-already-mentioned-in-the-title-and-h1-of-this-post-but-fo</span></p>
						<p>I pasted this URL into my beloved <a href="http://www.seomofo.com/snippet-optimizer.html" class="selfish">SERP Snippet Optimizer tool</a>, which revealed that this URL is exactly 255 characters long! Maybe I didn&#8217;t make up that number after all. Maybe&#8230;I&#8217;m psychic. Also note that Google is claiming to have discovered this &#8220;broken link&#8221; on the 23rd&#8211;the same day I first published this post, and at a time when the URL was 2048 characters. Here&#8217;s the screen capture:</p>
						<p style="text-align:center;"><img src="/img/google-crawl-error-404.png" width="576" height="329" style="margin-bottom:0;" alt="Issues Google encountered when crawling your site: 404 (Not found)" /></p>
						<p>What&#8217;s the significance of this 255-character broken link? I don&#8217;t know. I&#8217;m pretty sure it&#8217;s the result of Google truncating my URL to fit into some kind of database, but where did it pull the URL from&#8230;my Sitemap? And why is there a discrepancy between the REAL maximum character length (255) and the maximum character length that Google&#8217;s front end developers seem to believe in (256)? Perhaps Google&#8217;s database restricts this string to 2048 bits, but the first 8 bits are reserved for something (e.g. the length of each URL)? I get the feeling the significance of &#8220;255 vs. 256&#8243; and &#8220;2047 vs. 2048&#8243; would be really obvious to me if I had pursued a degree in computer science instead of bartending. If you have any insight on this, drop me an email. My address is listed in this domain&#8217;s whois records.</p>
						<p>I&#8217;ll check back tomorrow, after Google has had sufficient time to crawl this page&#8230;</p>
						<h3>Update: 2/28/2010</h3>
						<p>I&#8217;m in! Over the weekend, Google and Bing have both indexed this page with the 2047-character URL.</p>
						<p class="mofo_label">Google</p>
						<p style="text-align:center;"><img src="/img/google-serp-long-url.png" width="576" height="100" style="margin-bottom:0;" alt="Google SERP listing of 2047-character URL" /></p>
						<p class="mofo_label">Bing</p>
						<p style="text-align:center;"><img src="/img/bing-serp-long-url.png" width="576" height="100" style="margin-bottom:0;" alt="Bing SERP listing of 2047-character URL" /></p>
						<h3>Update: 3/2/2010</h3>
						<p>After seeing these SERP results, you might be tempted to assume that it&#8217;s perfectly safe for you to start using 2047-character URLs on all your pages&#8230;and the only loss would be your Yahoo traffic. Not so fast, champ. Depending on your browser and whether or not you&#8217;re signed into a Google account, you may end up seeing the 414 error page again.</p>
						<p>If you are using <b>Internet Explorer</b>, <b>Safari</b>, or <b>Chrome</b>, OR you&#8217;re <b>signed out</b> from your Google account, then Google&#8217;s SERP links take you directly to the URL, my server serves you the page, and there are no problems.</p>
						<p>If you are using <b>Firefox</b> or <b>Opera</b>, AND you&#8217;re <b>signed in</b> to a Google account, then Google&#8217;s SERP links do NOT take you directly to the URL. Instead, the links point to a URL on Google&#8217;s servers, where information about your click is logged, and then you&#8217;re redirected to the URL shown in the search results. The Google URL you&#8217;re first sent to follows a pattern similar to this:</p>
						<p><span class="uri_mofo" style="line-height:normal;">http://www.google.com/url?sa=<span style="color:#999;">{&#8230;}</span>&amp;source=<span style="color:#999;">{&#8230;}</span>&amp;ct=<span style="color:#999;">{&#8230;}</span>&amp;cd=<span style="color:#999;">{&#8230;}</span>&amp;ved=<span style="color:#999;">{&#8230;}</span>&amp;url=<span style="color:#C00;">{URL shown in SERP listing}</span>&amp;ei=<span style="color:#999;">{&#8230;}</span>&amp;usg=<span style="color:#999;">{&#8230;}</span>&amp;sig2=<span style="color:#999;">{&#8230;}</span></span></p>
						<p>From looking at that URL pattern, you can see why the URL for this page would be problematic. We&#8217;ve already established that Google will return a 414 status code for any requests of URIs longer than 2047 characters, so obviously when I plug a 2047-character URL into that parameter in Google&#8217;s URL, it&#8217;s going to be well over the limit. (The full Google URL ends up being roughly 2220 &#8211; 2230 characters, which fluctuates depending on if you&#8217;re using Firefox or Opera.)</p>
						<p>In order for FF and Opera users to avoid the 414 page, they would need to disable JavaScript, so that Google&#8217;s SERP links send them directly to the destination URL, instead of routing them through Google&#8217;s server first.</p>
						<p>The end result: Google crawled and indexed my 2047-character URL, but not all users will be able to access the URL from Google&#8217;s SERPs&#8211;some will get Google&#8217;s 414 error page. Additionally, the &#8220;Cached&#8221; link in Google&#8217;s SERP listing didn&#8217;t work in any browser, regardless of whether I was signed in or out.</p>
						<p>Yahoo failed to crawl and index this page (it&#8217;s been up for 5 days), but we&#8217;re moving on anyway. You stink, Yahoo!</p>
						<p>The surprising winner of the long URL competition is actually Bing, who successfully crawled and indexed my 2047-character URL&#8230;AND made it accessible from its search results. Both of the SERP links work: the regular link and the &#8220;Cached page&#8221; link.</p>
						<p>Now I&#8217;m going to cut the URL length down to 1855 characters, to keep the Google SERP link under 2048 total characters.</p>
						<p>I&#8217;ll be back&#8230;</p>
						<h3>Update: 3/11/2010</h3>
						<p>The current URL (1855 characters) has been indexed by Google, and it no longer returns the Google 414 error page when someone clicks on the link from the Google search results.</p>
						<h2>Final Results</h2>
						<p>The longest <b>functional</b> URL that Google will crawl and index is approximately 1855 characters.</p>
<div class="feedflare">
<a href="http://feeds.seomofo.com/~ff/seomofo?a=3HwCdPaogQU:uZDlF0m7n3I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/seomofo?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=3HwCdPaogQU:uZDlF0m7n3I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/seomofo?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=3HwCdPaogQU:uZDlF0m7n3I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/seomofo?i=3HwCdPaogQU:uZDlF0m7n3I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=3HwCdPaogQU:uZDlF0m7n3I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/seomofo?i=3HwCdPaogQU:uZDlF0m7n3I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.seomofo.com/~ff/seomofo?a=3HwCdPaogQU:uZDlF0m7n3I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/seomofo?i=3HwCdPaogQU:uZDlF0m7n3I:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/seomofo/~4/3HwCdPaogQU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.seomofo.com/experiments/title-and-h1-of-this-post-but-for-the-sake-of-keyword-prominence-stuffing-im-going-to-mention-it-again-using-various-synonyms-stemmed-variations-and-of-coursea-big-fat-prominent-font-size-heres-the-st.html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
