Menu Search
Jump to the content X X
Smashing Conf San Francisco

You know, we use ad-blockers as well. We gotta keep those servers running though. Did you know that we publish useful books and run friendly conferences — crafted for pros like yourself? E.g. our upcoming SmashingConf San Francisco, dedicated to smart front-end techniques and design patterns.

Flash vs. Silverlight: What Suits Your Needs Best?

With the release of Silverlight 1.0 and its subsequent versions, a debate started among designers and developers regarding choosing between Flash and Silverlight. Silverlight faces difficulties in capturing the market because of the maturity of Flash. However, Silverlight has managed to keep up by including certain features that designers and developers have always wanted to see in Flash, such as search engine optimization.

You may also be interested in the following newer posts:

In this article, we will discuss some of the technical differences between Flash and Silverlight to help you choose the technology that best suits your needs.

Animation Link

Flash uses the frame-based animation model. In frame-by-frame animation, we create an object for each frame to produce an animation sequence. For example, if you want to move something across the screen in 3 seconds, calculate how many frames 3 seconds will take, then calculate the matrices required for each frame along the way. Keep in mind that the player won’t actually maintain a frame rate unless you embed a blank audio track; otherwise, 3 seconds might turn out to be 2 or 6 or 5.

Adobe Flash Animation4

Silverlight is based on the WPF animation model, which is time-based instead of frame-based, so you define the start and end conditions, and it figures out how to do it. No need to deal with matrices like with Flash. Also, no need to calculate the positions of objects in various frames.

Microsoft Silverlight Animation

File Size Link

Flash uses a compressed format, and text and images are embedded in the movie, hence the file size of a Flash component is relatively small.

Text representation in Adobe Flash5

Silverlight uses XAML for its description language, and it is non-compressed, so the size of a Silverlight component is usually larger.

Text representation in Microsoft Silverlight6

Scripting Link

ActionScript is used to program Flash objects. ActionScript is an object-oriented language with a full range of controls for designing user interfaces. And it can be integrated with back-end technologies that use other languages and frameworks, such as PHP, ASP and Ruby On Rails. It comes with a huge, powerful class library for developing online browser-hosted applications and stand-alone desktop applications.

Action Script

For Silverlight scripting, you can choose from among a number of programming languages such as Visual C#.Net and Visual Basic.Net, including client-side scripting with JavaScript. C# and VB.NET can be used to write managed code that runs on and uses all of the enhancements and capabilities of Microsoft’s .NET framework.

Visual Basic7

Video And Audio Link

Flash supports multiple video formats. The latest codec is very high quality, and the bandwidth usage is nice. There is one problem, though: if you create a tool that outputs Flash content, the formats it supports aren’t really used by anyone else. The original video codec, Sorenson’s proprietary H.263 implementation, is a mutant version of H.263. The compression follows the spec fairly closely, but a bunch of features were left out, and you can’t exactly just go find complete specs on how to build your own encoder.

Video Codec8

Silverlight implements the industry-standard VC-1 codec for video, and supports WMV and WMA. Just about everyone already has Windows Movie Maker, but if someone doesn’t, it’s not a big deal because Microsoft makes available a free SDK encoder for producing WMA and WMV. So, not only would you be using formats that people would more likely be able to encode themselves, but Microsoft provides your product with SDKs if you want to do the encoding yourself.

Sound Processing Link

ActionScript offers a set of sound classes that can be used to generate and control sound in a movie. You can add sounds from the library while the movie clip is playing and control those sounds. If you do not specify a target when you create a new sound object, there are methods to control sound for the whole movie.

Sound Processing9

Silverlight doesn’t have the low-level audio APIs you would need to write an audio application in the browser. It doesn’t even support playback of WAV files because .NET has very little audio playback support.

Accessibility Link

Flash provides rich accessibility features for those who have hearing and vision problems or who rely on keyboard shortcuts. Providing captions for video solves accessibility challenges for people who are deaf and hard of hearing, but people who are blind or have low vision or other physical disabilities need the video playback controls to be keyboard-accessible and to function properly with assistive technologies such as screen readers and screen magnifiers. Users who rely on keyboard access can use a variety of familiar shortcuts to control video. Buttons such as “Play/Pause,” “Stop,” “Rewind,” “Mute” and “Closed Captions” can be tabbed to and activated with the spacebar. Slider controls such as for volume and playhead position controls can be accessed via the arrow keys, and the “Home” and “End” keys can be used to skip directly to the beginning or end of a range. The volume slider also accepts numeric keys to set playback audio levels in one quick step.




Silverlight 3 is the first browser plug-in to provide access to all system colors, allowing people with partial vision to use familiar operating system controls to make changes, such as switching to high-contrast color schemes for ease of readability. These features are far fewer than those provided by Flash.

Platform Compatibility Link

Flash supports Windows Vista/XP/2000, Windows Server 2003/2008, Mac OS 10.1/10.5 (PowerPC), Mac OS 10.1/10.5 (Intel), Linux 5, openSUSE 11, Ubuntu 7.10 or later and Solaris 10.

Silverlight supports only Windows Vista/XP/2000, Windows Server 2003/2008, Windows Mobile 6, Mac OS 10.1/10.5 (PowerPC) and Mac OS 10.1/10.5 (Intel). Because Linux and Solaris support is missing, users of those operating systems won’t be able to experience Silverlight on their machines.

Text Representation/SEO Link

Flash stores fonts using shape definitions and the player doesn’t understand TTF, hence we cannot separate the text layer from the movie. Typically the text written on a flash component was not SEO friendly however Adobe has made the modifications to Flash so that it will be indexable, and the search engines have begun to index Flash.

Currently Google is the only search engine that is noticeably reading Flash files. They have worked closely with Adobe to develop the right toolset for the Googlebot in order to read the files for indexing. Yahoo is working on it and MSN is working with their own format, Silverlight, so they probably won’t be developing the toolset necessary to read Flash files.

To read more about how to make Flash SEO friendly, please read the following articles:

In Silverlight applications, user interfaces are declared in XAML and programmed using a subset of the .NET Framework. XAML can be used for marking up the vector graphics and animations. Text is deployed on web server as separate entity and can be read and accessed separately. Textual content created with Silverlight is searchable and indexable by search engines as it is not compiled, but represented as text (XAML).

Supported Image Formats Link

Flash supports almost all image formats.

Silverlight supports only PNG and JPEG file formats. Some other file formats are supported by Silverlight but in a limited way. A full list can be found here.

Socket Programming Link

The XMLSocket object implements client sockets that allow computers running the Flash player to communicate with a server computer identified by an IP address or domain name.

To use the XMLSocket object, the server computer must run a daemon that understands the protocol used by the XMLSocket object. The protocol is as follows:

  • XML messages are sent over a full-duplex TCP/IP stream socket connection.
  • Each XML message is a complete XML document, terminated by a zero byte.
  • An unlimited number of XML messages can be sent and received over a single XMLSocket connection.

Socket Programming with Flash15

Silverlight doesn’t support socket programming. Silverlight supports sockets programming through the System.Net.Sockets namespace. Silverlight supports asynchronously sending data back and forth across a socket over ports ranging from 4502 to 4534. Silverlight supports cross-domain socket communications between a Silverlight application and any server, provided that a special security policy file is in place on the server.

Webcam Support Link

Flash has webcam16 and microphone support for live video and audio transmission, and using them is really easy in Flash. It takes only a few lines of ActionScript code to invoke the camera object.

Camera.get Returns a default or specified camera object, or null if the camera is not available.
Camera.setMode Sets aspects of the camera capture mode, including height, width and frames per second.
Camera.setMotionLevel Specifies how much motion is required to invoke Camera.onActivity(true) and how much time should elapse without motion before Camera.onActivity(false) is invoked.

Silverlight doesn’t support webcam or microphone.

Deployment Link

The Flash deployment package contains only a single Shockwave (SWF) file, and all images, text and animations are incorporated in this file. Because of the compressed nature of a Flash component, its images and text are not indexed by search engines, and thus not searchable.

The deployment process of Silverlight is far more complex; all individual components need to be deployed separately. The following components typically get sent to the client for each Web request of Silverlight:

  • XML files,
  • DLL files (if necessary),
  • Silverlight.js file,
  • Any other JavaScript file,
  • Resources (images, audio, video).

Silverlight Deployment17

Read the full documentation on Silverlight deployment.

Windows Application Link

A Flash movie can be compiled into a Windows application and run as a standalone EXE file. It can also be played on a desktop that has an appropriate Flash player.

Flash EXE Builder

Silverlight doesn’t support playing the movie as a Windows application.

Media Streaming Link

Flash provides no such service to host the content and application with them. Thus, building a video website with Flash is not as cost-effective as building one with Silverlight.

Microsoft Silverlight Streaming by Windows Live is a companion service for Silverlight that makes it easy for developers and designers to deliver rich media as part of their Silverlight applications. The service allows Web designers and developers to host and stream cross-browser media and interactive applications that run on both Windows and Mac. This service can be combined with Microsoft Expression Studio and other third-party tools to create and develop interactive contents.

Silverlight Streaming by Windows Live is currently in beta testing and offers 10 GB of free hosting for rich-media applications.

Microsoft Silverlight Streaming18

Conclusion Link

Selecting the right technology for rich Internet applications is often critical, and choosing between Flash and Silverlight depends entirely on your requirements. If you expect that some of your users will be on Linux or Solaris, then you should go with Flash. If you want your website to be indexed by search engines, then Silverlight may be better.

Besides, as Doug S. is points out in the comments, it’s worth noticing that a minority of web users actually have a Silverlight plugin installed on their machine, while most users do have Flash-support. The Flash Player 9 and higher support streaming of the H.264 video codec which means anyone with a video program that can output an MP4 can stream to Flash. There are literally hundreds of free apps on Mac, PC and Linux that can do this. It’s also important to mention that the latest version of Flash Player supports 3D rendering while Silverlight does not and that SWF, FLA, FLV, and AS are all open-standard formats, while Silverlight is 100% proprietary.

The following table summarizes the features discussed above. Rather than including arrows to indicate whether each platform has a particular feature, we’ve simply marked “better” to show the areas in which each technology beats out the other.

Features Flash Silverlight
Animation better
File size better
Scripting better
Video/Audio better
Sound processing better
Accessibility better
Platform compatibility better
Text representation/SEO better
Supported image formats better
Socket programming better
Webcam support better
Deployment better
Windows application better
Media streaming better

Further Resources Link

The following articles are suggested for further reading:


Footnotes Link

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21

↑ Back to top Tweet itShare on Facebook


  1. 1

    May 9, 2009 6:30 am

    very nice article…. great work again…

  2. 2

    You forgot to mention:

    1. Only about 10-30% of the web has Silverlight while 99.97% of the web has Flash 9 or higher.

    2. The Flash Player 9 and higher support streaming of the H.264 video codec which means anyone with a video program that can output an MP4 can stream to Flash. There are literally hundreds of free apps on Mac, PC and Linux that can do this.

    3. The latest version of Flash Player supports 3D rendering. Silverlight does not.

    4. SWF, FLA, FLV, and AS are all open-standard formats. Silverlight is 100% proprietary.

    5. Actionscript is based off the same root as javascript and AS 3.0 and javascript are extremely similar. Silverlight uses Windows-centric code languages that are meant for the desktop and are likely only to be known by desktop-app developers. Higher learning curve.

    Oh, and my personal favorite:
    6. Silverlight is Microsoft, Flash is Adobe. Say what you want, Adobe does right by the web whenever they can. Microsoft does not. Wouldn’t you rather go with the company who doesn’t go out of it’s way to make your life harder?

  3. 3

    Because Linux and Solaris support is missing, users of those operating systems won’t be able to experience Silverlight on their machines.

    Sure, there is Moonlight Moonlight Project

  4. 4

    Interesting article (although I only quickly scanned it)

  5. 5

    Dave Redfern

    May 9, 2009 6:43 am

    Hi, great article.

    I will always be a flash supporter purely because I don’t like MS.

    It’s sods law that this article comes out a week after i had to hand in an article comparing flash and silverlight for uni…

  6. 6

    Silverlight apps are literally zipped into .xap files, and tend to be about the same in size, if not smaller. There’s a guy who implements samples in both and compares… do a search.

    Silverlight does not use “scripts.” It’s a fully object-oriented platform.

    On what basis could you possibly describe Flash as “better” for socket programming? You don’t offer any reason. Silverlight has the entire System.Net.Sockets namespace of the regular .NET Framework, as well as System.Threading, something that Flash sorely lacks. Flash is horrible for dealing with asynchronicity.

    The only real arguments about which to use involve penetration rates and suitability for line-of-business apps. At 25% penetration, Silverlight is absolutely not suitable for use on home pages. But for writing UI intensive LOB apps, Silverlight is much better suited for the task. Beyond that, there are enough pros and cons for each that you use whichever one you know. Just remember that millions of .NET developers can dive into Silverlight pretty easily, which will only encourage its use.

  7. 7

    “If you expect that some of your users will be on Linux or Solaris, then you should go with Flash.” This will probably be the case for ANY website, which makes flash in my opinion the way to go.

  8. 8


    May 9, 2009 6:52 am

    Nice article, but…

    …you forgot something: to build Flash Applications, you need a large amount of money to buy Adobe Flash CS (1,2,3, or 4) to build them. For silverlight you don’t. That’s why I’m using silverlight.

  9. 9

    It seems that there was no mention of Adobe’s Flash media server solutions. These are streaming solutions that use Flash’s proprietary RTMP protocol.

    And, as a previous commentator noted, Flash 10 is compatible with H.264/AVC, which is an MPEG-4 standard. Just about anybody now can encode H.264 on any platform, with tools like MediaCoder, QuickTime, Adobe Media Encoder, HandBrake, and so on. This is far more reaching than the limited VC-1 support that Silverlight has, which may be an ‘industry standard’ but which is supported by far fewer applications.

  10. 10

    Collin Rountree

    May 9, 2009 6:56 am

    You also neglected to mention the development environment. Flash can be developed on either OS X or Windows, while Silverlight requires you to be using Windows to develop any silverlight applications, and not just Windows, but the Visual Studio development kit for Windows which is not in the typical arsenal for web development. No matter how you slice and dice it, Silverlight is Microsofts attempt at redefining the standard, and in my opinion, adding support for search engines in your web application is not worth the switch when it could just be embedded in the encompassing html. Someone else mentioned the price tag on Flash, you don’t have to buy the full CS suite to buy flash. Silverlight is cheap if you don’t want to use the advanced “scripting” features found in the VisualStudio. Every version of Silverlight I saw were plugins to Visual Studio, which is not cheap either. At least as a Mac user I can develop in flash, no choice since Microsoft went the usual proprietary way.

  11. 11

    I Personally prefer AJAX (or more correctly, the dynamic html+javascript UI) over flash or silverlight coz AJAX is popular because it builds directly on current web skills (javascript, html, css), doesn’t require a client-side plugin or support (even though the javascript can sometimes be an even larger download) is generally cross-platform, solved an immediate problem (async data) and for the most part, didn’t provide the enormous flexibility that Flash or Silverlight do today. Developers could wrap their heads around it, and build apps without having to have a designer background. Still, it’s hard to beat the flexibility and SEO response of HTML/CSS & AJAX in compare to Flash and Silverlight.

    Nice writing Muhammad… good analysis and great reading… Thanks for sharing.

    DKumar M.

  12. 12

    Never even heard of Silverlight. Never will try or even use it.
    M$ sucks.

  13. 13

    Mats Taraldsvik

    May 9, 2009 7:07 am

    Regarding Platform Compability :

    What is “Linux 5” ?

    Has the author looked into Mono and Moonlight – the Open Source implementation of the .NET stack and Silverlight, respectively? I think there is also support in MonoDevelop for creating Moonlight stuff.

    Mono runs on most platforms (BSD, Linux, Solaris, Mac, Windows.. ), including the Wii, iPhone and PS3. I’m sure Moonlight and Monodevelop will gain more cross-platform compability soon…

  14. 14

    connecticut websites

    May 9, 2009 7:09 am

    there’s no distinct compelling reason to choose Silverlight over Flash – the differences are subtle at best.

  15. 15

    I agree with most of the article. Some of the comparisons are either already outdated or will become outdated with Silverlight 3. Silverlight 2 supports sockets. Silverlight 3 will include H.264 support, webcam support, 3d rendering support, and many other new features that will help it to get up to speed with Flash.

    My personal favorite: Silverlight is Microsoft. Programming Silverlight is fantastic. The millions of developers who do .Net can very easily learn to do Silverlight. Programming AS3 is terrible, with no unified IDE. People are quick to criticize Microsoft, but they are the most successful software company for a reason. Their development tools are unrivaled and their products are quite good. (I realize many designers are reading this and love their Macs, so please don’t attack me…)

    I like both products. They are competing in a large market and will co-exist side-by-side. I choose Silverlight when the programming will be complex and Flash when the graphical side of it is more complex. Competition will make both much better.

  16. 16

    finally a non bias comparison.

  17. 17

    Courtny Cotten

    May 9, 2009 7:38 am

    SM reads my mind….just yesterday I was introduced to Silverlight by one of our engineers…how eerie…

    Good to point out the differences I asked a lot of these same questions when discussing which was better to use.

  18. 18

    Wearing a developer’s hat, I can’t help but note the missing enterprise perspective. We recently made a comparison of Silverlight 3 (can run standalone) and Flash/Flex with Adobe Air. We were quite surprised that when it comes to LOB (Line of Business) applications, Silverlight already crushes Flash completely. The most important factors of ours were:

    – Tool vendors from both ASP.NET and Windows Forms are making their move towards Silverlight. There’s already a broad range of high-quality commercial components available that cover common data visualization scenarios like grids, charting, reporting etc and the buzz is swarming with excitement – there’s a lot more to come.
    – What people tend to ignore: Silverlight has a more development-centric community. While Flash was and still is a designer’s tool, your typical senior .NET guy has a deeper understanding of software architecture and the development lifecycle. When it comes to the enterprise, this is a critical factor.
    – There’s an upgrade path to WPF where you have the full .NET framework with literally 10’000s of APIs at your disposal. Silverlight XAML is nearly a 100% compatible to WPF’s, so migration is not an issue.
    – Both Silverlight 3 and Flash (Air) can run as standalone tools (out of browser). Silverlight 2 currently doesn’t provide the feature, so it’s out of the picture.

    When it comes to your typical design-centric website, Flash would be the tool of my choice – the tools are just more mature and deployed runtimes are a crucial factor. But for the enterprise, this is a completely different game.


  19. 19

    Charlie Robbins

    May 9, 2009 7:51 am

    Silverlight supports both Frame based animations and non-frame based animations. If you are using Blend (the Silverlight designer), then your animations default to key frame based animations by default. You can control them very much in the same way as you would in Flash.

    See more on the MSDN site:

  20. 20

    Anthony Persaud

    May 9, 2009 7:57 am

    You forgot to mention that Flash is part of the set of tools (ecosystem) provided by Adobe to make it easier to create engaging experiences by separating the workflow but keeping all items in sync.

    This article could be improved by taking into account the Flex SDK as a more developer tool/platform and the Flash IDE (“a designer’s tool” as pointed in the article).


↑ Back to top