Flash is an amazing development platform for the web. You can create banners, slide shows, powerful applications, and of course amazing Flash websites. But can we then optimize all these Flash/Flex applications so we still can get good search engine results?

The answer is clearly yes and this article will show you many different ways to optimize your Flash content and embed your Flash file efficiently in an HTML page. Some of the techniques I will show require no coding knowledge and are easy to implement, some require very good coding knowledge and/or take time to implement.

Optimizing Flash Content

Search engines do read inside swf files. They do read Accessibility contents, texts, links, and are able to read some of the dynamic content your Flash file will load.

Accessibility:

In the Flash IDE the Accessibility panel allows you to add a meaningful name and description, which is then used by screen readers. Search engines do read this information too. Take advantage of this by adding Accessibility content to the object you create:

Select a movieclip on the stage, go to "Window", "Other Panel", "Accessibility". You should see this:



Add a meaningful name and description. Check "make child objects accessible" if you plan on adding Accessibility content to object inside this movieclip. Since search engines can't see vector content, animation, and graphics this is a great way to provide some information about what's going on in your file.

For objects created by code and inheriting from DisplayObject you can access the accessibilityProperties property and add the same basic Accessibility content using the Accessibility class.

Texts:

Texts inside your Flash file will be read by search engines, even texts coming from loading external data. So not only don't hesitate to add texts in your Flash file but you can also add texts off stage (texts that will not be displayed) with a meaningful description of what your Flash file is about for example. This will add to the understanding search engines have of your Flash content.

Deep Linking (for advanced coder):

Search engines index the current url address of your website but since a Flash website/application content is dynamic the url address never changes. That's what Deep Linking is about. It allows you to change the url address according to the screen/page you are supposed to show in your Flash website/application. This allows search engines to index your urls but also users to bookmark your pages. The implementation of Deep Linking requires a good Flash/Actionscript level and is a combination of a Javascript code and Actionscript code. Right now (May 2010) the recommended way is to use the swfAddress library:

http://www.asual.com/swfaddress/

In the future (HTML5) Deep Linking implementation might be possible using simple Javascript events like the "onhashchange" event for example.

HTML Embedding:

The right way to embed your Flash content in an HTML page is to use dynamic embedding. Dynamic embedding is simply a Javascript code/library that will replace a content in your HTML page by your Flash content. The advantage of this system is that you can use the content that will be replaced to provide search engines with what we call an alternative content. This alternative content is used by search engines to get an understanding of what your Flash file is about. It is also important to notice that the way alternative content is treated by search engines depends on search engines policies and it is possible that in the future alternative content will be treated as spam.

You could write your own Javascript code/library to embed your Flash content or use the AC_RunActiveContent.js Javascript library from Adobe but the general recommended way today (May 2010) is to use swfObject:

http://code.google.com/p/swfobject/

Use the alternative content to provide information concerning what your Flash file is about. This could be a simple text/description (avoid pictures) or a fully developed web page (better) or even a full alternative html website (even better).

As you saw there are many techniques that you can use to optimize your Flash content and Flash html embedding for improving the search engine results.
But of course Deep linking, accessibility implementation, alternative content (off stage texts) inside Flash, all these techniques require more work from the Flash developer. Javascript embedding, alternative content for the embedded Flash require more work from the web master/developer as well.

You do not have to use all these techniques of course; you could simply use some of them and still get an improvement in the search engine results. But if you were to create a full Flash website and still want the best search engine results as possible you would have to use all these techniques in your SEO plan.

The perfect example:

Let's finish with the perfect example, the HBO Flash website.

- Look at the HTML source code and discover an impressive alternative content probably updated via CMS just like the main Flash website is.

- A very advanced Deep Linking of course going even to sub sections.

- Probably Accessibility was implemented for all relevant object.

The result:

Find a text in the HBO website and search some of the relevant words from this text in your favorite search engine. Using Google I often get HBO on first page and I am able to go directly to the relevant page clicking on the link provided by Google. That's SEO efficienty with a full Flash website!