When it comes to SEO, Flash can be a polarizing topic. Whenever I’m speaking with clients about their SEO initiatives (along with their creative and technical staff), it only takes one mention of flash to suddenly get a mixture of angry, excited, and confused looks.
When you break it down, some brand managers love how engaging flash can be, designers love the boundless creativity it offers, IA directors can do without it, SEO’s cringe at the thought of it, and C-level marketers don’t know who to listen to! But one thing is clear. Flash isn’t going anywhere…as you can see by the massive number of websites that employ flash content.
I bring a somewhat unique perspective. I started developing with Flash in 1997, and yes, I once developed highly interactive and engaging flash movies that would make most SEO’s go for my jugular. My roots are in interactive development, and flash was a key tool in my arsenal.
Today, I still understand the power of flash when used properly, but I also know the incredible power of SEO. I’m not against the use of flash, but you better believe I want it optimized if it’s going to be used by my clients. I like to think I’ve come a long way. 🙂
Since I have a broad background in flash development and have developed hundreds of flash movies and applications over the past 12 years, it’s been interesting to delve deeply into flash SEO to see how it has evolved. Although I’ve written previously about using SWFObject to provide crawlable alternative content for flash (along with flash video content), I’ve also been heavily testing and analyzing how the engines index flash (SWF files).
Personally, I’m tired of showing clients the big blank cache of their flash sites in Google! It’s a great visual and is usually a jaw-dropping experience for them, but that simply can’t remain the standard. That’s why I was excited last June when Adobe, Google, and Yahoo announced their partnership.
Improved Flash Indexing, June 2008
In June of 2008, Adobe announced that it was working with Google and Yahoo on improving flash indexing. As you can imagine, I was chomping at the bit to test and analyze how the engines were indexing flash, based on this announcement.
Just to clarify, Google was indexing SWF files prior to the partnership, but they weren’t working with Adobe on streamlining and improving the process. I can remember one of my clients a few years ago sending me a link to one of their SWF files in the SERPs, along with one line of text, “What the heck is this?” 🙂 What was presented in the SERPs wasn’t exactly pretty, but it was a start.
My goal since the announcement has been to make some sense out of how the engines index flash, what are some best practices you should follow when publishing flash content, and what are some things to watch out for as you develop more flash content.
After yet another round of testing over the past few weeks, I decided to write this post so I can help lead you down the right path. Unfortunately, it’s not as easy as that last sentence sounds since this is a highly dynamic area of SEO… It has even changed since July and I fully expect it to keep evolving. That said, I’ll provide some findings and guidance below.
First, since I’ve heard every flash pun in the world over the past year, let me get something out of the way:
This post will not be over in a flash, nor will it be a flash in the pan, hopefully your seo life won’t flash by before your eyes, and Flash the superhero won’t be helping you with your projects… OK, enough with the flash puns! 🙂 Let’s jump in.
GOOGLE IS CRAWLING FLASH, FORGET ABOUT SEO, LET’S DEVELOP EVERYTHING IN FLASH, WOOHOO! But wait…
I remember a flash designer commenting on one of my blog posts about flash seo saying, “Your post is now irrelevant! Google is indexing Flash! Let’s all binge on flash.” Not in those exact words of course. I think my first reaction was “hold on a second buddy…” Nothing has been perfected yet, and actually, this was just announced! By the way, I was right. It wasn’t perfected yet. It was a step in the right direction, but there were other factors that impacted how your flash files were being crawled, namely how you publish your flash content.
In addition, all flash content was obviously not being indexed so it would be premature to think you could disregard providing the engines with alternative html content (which has been a standard practice from an SEO standpoint). It would be crazy to think that Google and Yahoo would instantaneously index all flash content on the web, right?
Great News, But There Were Some Problems
At that time (July 08), Google was in fact indexing SWF files, but there were some limitations. For example, Google was not indexing SWF files published using some of the popular JavaScript-based publishing methods. I could clearly see that using standard object and embed tags and SWFObject 2.x using static publishing yielded strong results, but using earlier versions of SWFObject to write out your flash movies (that relied on JavaScript) wasn’t yielding positive results.
And by the way, many developers were using those JavaScript-based methods in order to get around the “Click to Activate” issue from a few years ago (or what flash developers liked to call the “Grey Box of Death”.) So at that time, if you were a flash designer or developer using JavaScript to publish your flash movies, your SWF files were NOT being indexed. Again, this was a work in progress.
More Concerns About Flash Indexing
But, my concerns didn’t stop with JavaScript publishing methods. I started to wonder what type of content within SWF files was being indexed? Was it just static text in flash, imported xml, dynamically loaded SWF files, flv files, text files, ActionScript code, etc? Was Google finding and following links in SWF files? Did SWF files build PageRank? Did links in flash pass PageRank? What about nofollow? Was my code being indexed? What about text that’s broken down into artwork in flash? So on and so forth.
Flash is not a simple application…it’s definitely multifaceted (think code, static text, dynamic text, object oriented code, vectors, photos, video, etc.) Needless to say, I had a lot of questions (like many in the industry).
Let’s Not Take A Step Back As Flash Developers…
There was one part of the announcement that really concerned me. Specifically, that dynamically loaded content would not be associated with the parent flash movie (like txt, xml, etc.) I was concerned because that’s a common way for experienced flash developers to scale their content. In addition, dynamically loaded SWF’s would not be associated with the parent movie.
Excuse me, but I have been using that technique since I started developing with flash! Most flash developers and designers understand that breaking up your flash movies into manageable pieces is critical to keeping file-size down and scalability up.
So based on what I explained above, how would the announcement about indexing flash content impact best practices in flash development? Would developers start loading content into one SWF versus logically breaking their content apart? Would they stop using xml data and flood their parent SWF with text? What about spammers? Could they take advantage of how flash was being indexed? And of course, the goal for SEO is ranking, so what would rank? Would the SWF file rank, the parent webpage, or both?
These were all valid questions and this is why I always believe that testing is critical. At SMX East, there was a session on Flash and SEO. The panel contained software engineers from Google’s indexing team and a Senior Product Manager for Adobe Flash Player. It was a great session and was very informative, but the common theme was “this is a work in progress”. I agree, especially after conducting my own testing.
So What’s The State Of The Flashosphere When It Comes To Crawlability And Indexing?
I’ll echo what I heard at SMX East, we’ve still got a long way to go before this is consistent across flash movies, websites, and engines. My first serious round of testing was last July and August and some things were definitely clear. I could see that Google was indexing flash content published using object and embed tags (also called the “twice cooked” method). I also noticed that SWFObject 2.x using static publishing (which is standards-compliant) was also yielding strong results. But, SWFObject 1.x relying on JavaScript was not being indexed and neither was using external JavaScript to publish your flash content. I also saw that dynamically loaded files were not being associated with the parent movie (as Google stated in their blog post). Yahoo also seemed behind at that point (more on that soon).
As the months went on and Google started supporting other forms of JavaScript-based publishing, I saw more flash content getting indexed, but it was getting hard to tell why certain pieces of flash content were indexed and others still weren’t. My latest round of testing revealed some strange results. I did in fact see that more JavaScript publishing methods were being indexed in Google, but I also analyzed some sites that weren’t having any of their flash content indexed. There was no rhyme or reason why that content was not being indexed. For example, the webpages containing the flash content were indexed, the sites were not new, the publishing methods were supported, etc. but no flash content was indexed. Weird, to say the least. Again, a work in progress, right?
Some Findings, Commentary, and Guidance
So I mentioned earlier that I’ve done quite a bit of testing since July, and I decided to write this post to provide some guidance. I’ll break down some of the key points and findings by major category below. Again, the results provided below are based on my own testing of over 100 flash files across more than three dozen websites. I developed many of the flash movies I tested, so I knew exactly how they were structured, published, etc. Now, you may see different results based on your own sites and flash movies, but I wanted to provide what I found during my own testing.
Yahoo Seems Behind Google in Flash Indexing (and Where’s Microsoft?)
One finding that was clear during my testing was that Yahoo is behind Google when it comes to indexing flash (at least with the sites and flash elements I tested). I can’t tell you why that’s the case, but comparing site to site, and flash element to flash element, Google almost always did a more thorough job. And if you haven’t noticed, Microsoft hasn’t been part of this post. That’s because they weren’t involved in the partnership with Adobe that was announced in July. My hope is that Microsoft (and other engines) will ultimately work with Adobe on crawling flash content. There’s simply too much flash on the web to avoid indexing it! As far as I can tell, Microsoft is not indexing flash content (at least they aren’t showing us anyway…)
Text Content
During my testing, I found text content indexed from both static text fields and dynamic text fields. When using dynamic text fields, I saw text indexed that was set using variables in ActionScript. I did not find text loaded via xml associated with the parent flash movie (more on that below). Ditto for txt files loaded dynamically. I have also seen text content from components indexed (such as descriptions for radio buttons or other UI elements). In addition, text within other SWF files that were loaded on demand was not associated with the parent flash movie. They were indexed and associated with their own flash movie. Again, I believe this will change, as many developers use this technique to ensure their flash movies are scalable.
External Files Loaded Into Flash
Just like Google mentioned in their post from June, I found that they are not associating dynamically loaded files with the parent flash movie. That includes other SWF files, XML files, and TXT files. I have seen xml files indexed separately, though (meaning they are indexed and show up in the SERPs for text content contained in the xml file, but they aren’t associated with the parent movie). In addition, Google is not crawling FLV files, since there is no text contained in an FLV file. Now, you can inject metadata into FLV’s, and that data can be used programmatically in flash, but that’s not being crawled by the engines. With video so hot right now and gaining in popularity, I would expect the engines to figure out better ways to index flash video. Needless to say, I will be keeping a close eye on how this progresses…
Flash Publishing Methods
- Object and Embed
The “twice cooked” publishing method fared extremely well during my testing. I found this method to yield strong results with regard to indexing. That said, you don’t have a lot of control using standard object and embed tags like you do using a technique like SWFObject (covered below). In addition, embed is not W3C valid and flash now publishes code using a slightly different approach (when you publish a SWF and corresponding html from within flash). That said, I have seen SWF files published with the latest code indexed as well.
- A Quick Introduction to SWFObject
SWFObject provides a flexible way to publish your flash content, while also providing crawlable alternative html content. You also have a nice amount of control over how you publish your flash content (targeting a minimum player version, setting parameters, passing variables, etc.) There are two ways to publish your flash content using SWFObject, including dynamic and static delivery. I’ll cover how each fared below. The great part about static delivery is that it’s standards-compliant and doesn’t rely on JavaScript to provide your flash movies. Definitely check out my post about using SWFObject 2.x to learn more.
- SWFObject 1.x (Older version of SWFObject)
During my first round of testing in July, this method was not being indexed by Google. That’s because it relies on JavaScript to publish flash movies. However, Google has since added support for common JavaScript publishing methods including SWFObject 1.x, and I have recently seen SWF files indexed using this method. So, if you have SWF files that were published using 1.x, you should be fine, however, if you are ready to publish new flash content, see SWFObject 2.x below. You won’t be disappointed.
- SWFObject 2.x (dynamic delivery)
SWFObject 2.x using dynamic delivery uses a similar technique to 1.x (relying on JavaScript to publish flash content.) Again, this method was not yielding positive results during my testing in July, but is now supported by Google. I have recently seen content indexed using 2.x with dynamic delivery. In my opinion, it’s still not the best way to go. Let’s talk about static delivery…
- SWFObject 2.x (static delivery)
I’m a big fan of this publishing method for several reasons. SWFObject 2.x using static delivery does not rely on JavaScript and is standards-compliant. I saw extremely strong results this summer when testing content published using this method, as well as during my recent testing. By the way, your flash content will be displayed even if JavaScript is turned off (a nice benefit). I highly recommend using this method to publish your flash content.
* And remember, SWFObject (both static and dynamic delivery), enables you to provide alternative crawlable html content.
- External JavaScript
When the “Click to Activate” issue hit the scene, this was one of the first methods used to overcome the problem. The issue was also commonly referred to as the “Grey Box of Death”. The problem was that visitors had to actually click the flash movie before interacting with it. Needless to say, most flash developers were up in arms. To avoid this issue, you could use an external JavaScript file to write out your object and embed tags and then call the JavaScript function in your webpage to publish your flash content. Although it achieved the desired result, many developers ended up switching to SWFObject to gain more control. Regardless, I have seen poor indexation results when using this method. I would steer clear of using external JavaScript for publishing flash content, if possible. Use SWFObject 2.x using static delivery instead.
- Straight SWF
During my testing, I came across several flash movies that were loaded in a browser window without embed code. For example, just linking to the SWF file versus a page that embeds the flash content. Although these SWF’s were indexed well, this is definitely not an optimal way to go. Usability-wise, as the user expands their window, your SWF will also expand. If it’s completely vector-based, you’ll be ok. But if it contains images, video, etc. then your flash content might not look so hot, to say the least. In addition, you have no control over your flash content. You can’t detect the flash player version, you can’t pass variables, you can’t set attributes, etc. Again, I highly recommend using SWFObject 2.x using static delivery.
Links
I’ve received a lot of questions about how links are followed from within flash content. This is an important topic for many SEO’s… I definitely have seen links followed within the flash movies I tested, including links in text fields, dynamic text fields, and in ActionScript. Regarding nofollow, Google stated in their June announcement that they will respect nofollow in flash. So, you can use it where possible (for example in dynamic text fields using html). Since links are followed, many people in the industry have wondered how this can be gamed. I have also voiced my concerns about both keyword stuffing and gaming links. Again, flash is a multifaceted tool and there are many ways that black hat developers could try and game the system. In addition, it’s not so easy to enforce… I guess time will tell how many people try and game flash and then how the engines fight back.
PageRank
If SWF files can be crawled and indexed, could they build PageRank? Yes, it seems they can. I have found numerous SWF files that show PR. Here’s an example from Adobe’s website. As you can see, the SWF has built up a PR 6. Nice. 🙂
Some misc. things to watch out for in this new world of flash indexing:
- Be careful about the text you leave in your flash movies. I know some developers mistakenly leave older movieclips and code in their flash movies. Well, that code and text can now be indexed. i.e. A movieclip that isn’t initially visible in the flash movie could be overlooked by developers, but Google may very well index that text content (and it could rank for that content.) You probably don’t want to receive that call from your client. 🙂
- Be careful not to “break down” any text into objects if you want that text indexed. You will essentially create artwork out of your text and the engines won’t identify it as text (it will be seen as a graphic element). For flash developers out there, I’m referring to highlighting static text and clicking control B (Break Apart), which turns your text into vector artwork.
Summary and Recommendation
I know we covered a lot in this post and I hope you stuck with me to the end! I also hope it helped you understand more about flash indexing and how to best proceed. Again, I fully expect this to evolve and become clearer for both the SEO and Flash communities. If you couldn’t tell in my post, my official recommendation is to use SWFObject 2.x using static delivery. As mentioned above, it enables you to provide crawlable alternative html content, but also enables Google and Yahoo to index your flash movies. You get the best of both worlds. So, if for some reason the engines don’t index your SWFs (which I have seen happen on occasion), you still have alternative content that can be indexed.
I definitely plan to keep testing flash content to see how the engines are progressing with flash indexing and I’ll be writing more posts to cover the results. Stay tuned…
Glenn Gabe is an online marketing consultant at G-Squared Interactive. He currently helps clients maximize their digital marketing efforts via SEO, SEM, Social Media, Viral Marketing and Web Analytics. You can read more of Glenn’s posts on his blog, The Internet Marketing Driver and you can follow him on Twitter to keep up with his latest projects, news, and updates.