Exactly WHY are Frames bad?

I was recently asked why exactly it is that one should not use a frameset for a Web site. A frames based page is something I’ve always sort of recognized as a bad thing, but have never had to verbalize or support objectively before; until now.

The answer: Frames aren’t inherently bad, however, when you use a Frameset as a way of managing a Web site THAT is inherently bad.

I came up with five primary reasons.

0. Frames based Web sites do not fit the fundamental conceptual model of the Web!

Every problem with frames flows from this problem. The fundamental conceptual model of the Web is this: Every page corresponds to a single URL. One URL = one page. A site that is stuck in a frameset is referenced from one address, but contains many pages. This presents problems with linking to, and book marking a specific article in a frames-based page. (The ability for someone to link to your articles and bookmark them is a huge part of how traffic to your site is generated).

1. Using frames for an entire site is an improper use of a frameset page.

Framesets are a fairly ingenious and very useful method for helping someone navigate through a single, very large document, much like Adobe Acrobat’s navigation pane. However, most Web sites are a collection of documents on a particular topic (business, organization, etc…).

2. Search engines have a hard time indexing a Web site that is stuck in a frameset.

Google itself mentions that while it does crawl frameset pages, it has a difficult time knowing how to categorize documents in a frame set.

3. Some screen readers/assistive technology do not (or have a difficult time) handling frames based pages.

Those using screen readers cannot quickly scan the contents of multiple pages. All of the content is experienced in a linear fashion, one frame at a time. Frames are not inaccessible to modern screen readers, but they can be disorienting. Different screen readers handle framesets differently, with the more expensive software having better handling of frames. However, to the more common screen readers and assistive technologies, the frames are not an insurmountable obstacle, but are an unnecessary impedance. Much like having only one handicap accessible entrance to a building.

4. A site that is stuck in a frameset adds an unnecessarily high level of difficulty/headache to development/maintenance (especially maintenance).

Most users or clients won’t care about this (unless the developer charges by the hour) but it is very easy for an extensive frames-based site to get disorganized. Broken links and missed “target” attributes abound, making the behavior of the site erratic. A way I look at it is that entropy applies at a much greater rate to a frames-based site than a non-frames site. Ironically, frames are often (naively) chosen as a way to more effectively manage a site. If the site is small-scale enough to have only one developer, and the site never changes hands, this MIGHT be true. However, most often I find that when a developer inherits a frames-based page, the first thing they do is redesign it from the ground up. It is simply too difficult to ascertain what a different developer had in mind with their site model.

Further: A web site that is entirely encapsulated in frames is an unprofessional method of Web site development that was popular as a novelty in the nineties (almost a decade ago) but was quickly abandoned by pros after realizing the above fivereasons.

So why do frames-based sites exist??

If you look around, you will notice that there are frames based pages out there. But if you pay attention, you will notice that there are very few large corporation sites that use frames. I suspect that the reason frames-based pages exist at all is due to a self-styled Web designer (or an administrative assistant of some sort to whom the task of creating a Web site has fallen) utilizing a WYSIWYG Web development tool (such as Frontpage or Dreamweaver) and realizing that if they use frames, they only need to update a navigation page once anytime they want to make an update. This is a very astute observation, however, a professional will recognize that the use of server side includes, or even Dreamweaver’s template system is a much better solution on all levels.







20 responses to “Exactly WHY are Frames bad?”

  1. Bryan Haggerty Avatar

    In reference to point 1, you can actually simulate that same interaction through CSS positioning. An example can be see at the W3’s CSS site

  2. Matt Avatar

    Yup, and that is the better way now, but before CSS positioning was widely available, frames was the way to go.

  3. Jørgen Arnor Gårdsø Lom Avatar

    I agree, but I wouldn’t say that frames was ever the way to go… Even back in ’95 frames bothered me – and I didn’t get into webdesign ’till 1999…

  4. Bryan Haggerty Avatar

    Without a doubt.

    Today, the only real useful frames implementation which I have seen lately is Bloglines. They use frames as a means of acting more like a desktop application. The ability to not reload the page when browsing through your RSS subscriptions is beneficial and utilizes frames well (a proper use of frames).

  5. Bo Campbell Avatar

    I am a UI Designer of an application that uses frames to mimick a desktop application and I think this is the proper use for frames. None of the problems with frames listed above really pertains to our application. I don’t like them, mind you, but I can’t find evidence that our way of using them isn’t ok. We use three-frame layout with a javascript tree menu on the left side, main links on top, and a main form layout on the bottom right.

  6. Matt Avatar

    Bo, It sounds like the application you are talking about is a correct use of frames. However, as mentioned above, even this application is no longer necessary, as CSS can emulate the layout. With AJAX and other such technologies, it even eliminates the need for page refreshes.

  7. […] So I got on board. Nathan is graciously posting my article on Why Framesets are Bad there, and is allowing me to be a regular contributer. I hope to help Godbit in working towards its mission. Thanks Nathan! […]

  8. Denny Hayes Avatar
    Denny Hayes

    Unless someone here has a better way and a way that is as easy to create, then frames are very useful for certain application, as someone mentioned above. I keep reading the comment that “I don’t like them, but….” I have seen many sites where they have like a long scollable list say on the left, and the idea is you scroll through an often long list, with a scrollbar, click on the one that you want, and it blows up in the right frame. I did mine that way, with the old Claris Homepage, about 10 years ago, and still haven’t seen any way that works as good. I have seen many sites such as matchmaking sites where they attempt to things without frames, and to navugate them clicking back and forth is a nightmare. But then you see frame sites like http://www.blossoms.com that are so much easier to navigate.

  9. Matt Avatar

    Denny – you can get EXACTLY the same effect using CSS and proper HTML. There is no reason for frames anymore.

  10. ashok kumar Avatar
    ashok kumar

    If I want to insert an mp3 player which plays background music continuously even while navigating to different pages, how can I achieve this without using frames or a web site coded in flash? Can layout using CSS accomplish this?

  11. Matt Avatar

    Ashok, no, you can’t. I think this is best served by a popup window. Also, I’d never play music or animation that isn’t initiated by the user.

  12. ashok kumar Avatar
    ashok kumar

    Matt, thanks for such a quick reply. Popups are very annoying and blocked by many users. If a client wants music capability with on/off option, would you use frames, popup, or code in flash? There is still controversy surrounding Google indexing of flash based sites, to my knowledge!

  13. Eric Avatar

    (Please supply keywords): HOW does CSS replace the static nature of a menu frameset?

  14. vesper8 Avatar

    Hi, for a long time I wondered the same thing about why frames were so bad. Right now I am working as a professional web programmer and I am actually using a frameset in my latest project. The primary reason for a mp3 flash player playing a shoutcast stream to be able to keep playing the stream without interruption as the user browses the content of the site in the main frame. I don’t believe there is an alternative solution to this problem and if there’s one it must be extremely complicated.. correct me if I’m wrong.

    Furthermore, I actually enjoy the fact that this forces my users to go back to the homepage and to not let them bookmark inside pages or let crafty people see the contents of my php variables I pass around the page.

    The only thing that concerns me a little is the difficult SEO but since google seems to be able to index framed pages then it’s not so bad. I really only care about google since it’s the only search engine I use.

  15. Jerry Galino Avatar

    Good site I “Stumbledupon” it today and gave it a stumble for you.. looking forward to seeing what else you have..later

  16. […] to answer your question: Remove horizontal scrollbar on frames But you should also read this: Exactly WHY are Frames bad? – Matt Heerema : Web Design __________________ Mama, don’t take my Kodachrome […]

  17. Mike Avatar

    while i agree that these day you don't need frames I strongly disagree that they ware always bad! – done hondreds of framed sites in the past and in some of them you wouldn't even know they were framed so how could it bother you ?
    In tricky web apps like asset management or inventory management why would hit the database again if i already see the the item on screen? – i just want a small window displaying when it was ordered? – same for pop-ups – there's room and a place for those as well and they're not all bad

  18. Framan Avatar

    Point 1 is just elitism…
    Point 4 is wrong, with or without frame, you can make clear or dirty code the same, it depends on people; not on the use or unuse of frame. In some case, using frames can even help you to keep your website clean (star-like architecture).

    And the "So why do frames-based sites exist??" part is totally wrong :
    Frame have been used long time ago to avoid reloading each click the same data (menu is still the same everywhere you go in the site), because browser hadn't ever be clever, and so frame-based sites still exist simply because of people uses.

    I agree with the other points, but sometime, you don't care about these ones (Some sites don't need to be referenced on google or linked externaly.

    PS : please forgive my mistakes, i'm not an english speaker.

  19. Doug Avatar

    @Framan – I have the exact same issue… an intranet-based application with an extensive menu in the left frame. Because "frames are bad", do I really need to design an approach that remembers what portions of the menu are expanded and collapsed with each URL click, and then re-render it appropriately in CSS on each page?

    It seems excessive to me… but if someone can point me to an example URL where this is done, I'd really appreciate it.

  20. Dylan Avatar

    I am trying to update an old application someone made with frames and inline CSS, please shoot me…