W3docs

HTML <noframes> Tag

The <noframes> tag contains an alternate text to be displayed in browsers which do not support frames. See examples

The <noframes> tag defined the fallback content shown when a browser could not render a frameset. Together with <frameset> and <frame>, it belonged to the old "frames" model of splitting a browser window into multiple independent documents.

Danger

Do not use <noframes>, <frameset> or <frame> in new projects. They were deprecated in HTML5 (2014) and have since been dropped by modern browsers. This page is kept for reference only — to read or maintain legacy code, not to write new markup.

This page explains what <noframes> did, why it is gone, and what to use instead.

What <noframes> was for

In the frames era, a page was split into several regions, each loading its own HTML document. Some early browsers (and many screen readers) could not display frames at all. The <noframes> element gave those users an alternative:

  • A short message such as "Your browser does not support frames."
  • A link to a non-frameset (single-page) version of the site.
  • Any full <body>-level content as a usable fallback.

If the browser supported frames, the <noframes> content was ignored. The element was nested inside <frameset>, which itself replaced the page's <body>.

Why frames are obsolete

Frames caused serious, well-known problems that led to their removal:

  • Broken bookmarking and URLs — the address bar showed the frameset URL, not the document a user was actually viewing, so links and bookmarks pointed to the wrong place.
  • Bad accessibility — screen readers struggled to convey multiple independent documents in one window.
  • SEO damage — search engines indexed individual frame documents out of context, with no surrounding navigation.
  • No responsiveness — fixed frame sizing did not adapt to mobile screens.

Because of this, the entire frames model — and <noframes> with it — was removed from the HTML standard.

What to use instead

You do not need frames or a fallback element. Modern HTML and CSS cover every use case frames once served:

  • Page layout — build columns, sidebars and headers with normal HTML elements and CSS Flexbox or Grid instead of splitting the window into frame regions.
  • Embedding another document — use the <iframe> element to embed one page (a map, video, or external widget) inside another. Unlike <frameset>, <iframe> is fully supported and does not break the page URL.
  • Shared header/footer/navigation — instead of loading a navigation frame once, render the shared markup with a templating engine, a static-site generator, or a JavaScript component.
Info

The <iframe> element is the only "frame-like" tag still part of HTML. If your goal is to embed external content, reach for <iframe> — not <frameset>.

Syntax

The <noframes> tag came in pairs. The content was written between the opening (<noframes>) and closing (</noframes>) tags, inside a <frameset>.

Example of the HTML <noframes> tag (legacy, for reference only):

HTML <noframes> Tag

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <frameset cols="50%,50%">
    <frame src="https://www.w3docs.com/learn-html.html">
    <noframes>Sorry, your browser doesn’t support frames. </noframes>
  </frameset>
</html>

In a frames-capable browser of the time, this would have split the window into two columns. Today, browsers ignore the <frameset> and <frame> elements, so the page renders as if it were empty — which is exactly why this markup should never ship in a new project.

Browser support

Removed. Frame support has been dropped from modern browsers. There is no version of Chrome, Firefox, Safari or Edge in which writing <frameset> / <frame> / <noframes> produces working frames. The elements are not part of the current HTML standard, and validators flag them as obsolete. Treat them as a historical feature with no path forward.

Attributes

The <noframes> tag only used the Global Attributes. Like the element itself, these are obsolete in this context.

Practice

Practice
What was the original purpose of the <noframes> tag in legacy HTML?
What was the original purpose of the <noframes> tag in legacy HTML?
Was this page helpful?