👀 Live Preview
How fallback messaging looked to users without frame support:
noframes fallback
This content is displayed in browsers that do not support frames.

The <noframes> tag provided fallback content for browsers that could not display frames. This guide explains its role in legacy frameset pages, obsolete HTML5 status, and the modern layout techniques beginners should use instead.
Content when frames cannot render.
Where noframes lived in old HTML.
Removed with frames in HTML5.
class, id, and style on noframes.
Modern multi-pane layout replacement.
Why frames were problematic for a11y.
<noframes> Tag?The <noframes> tag is an HTML element designed to include alternative content displayed when a web page is viewed in a browser that does not support frames. It served as a fallback inside <frameset> documents for users and browsers lacking frame-rendering capabilities.
Frames, frameset, frame, and <noframes> are obsolete in HTML5. Modern websites use CSS Grid, Flexbox, and <iframe> for layout. Learn noframes only to read legacy HTML.
In the 1990s, framed sites placed navigation and content in separate panes. noframes ensured users without frame support still saw meaningful content. Today, every accessible site should be built without frames entirely.
HTML5 removed frames from the specification. <noframes> only made sense inside <frameset> documents, which are no longer valid for modern web development. Browsers may still parse legacy frameset pages for backward compatibility, but you must not create new framed sites.
frameset and frame — not to be confused with iframe, which remains valid HTML5.To utilize the <noframes> tag, enclose the alternative content within opening and closing tags inside a frameset (historical pattern only):
<noframes>
<!-- Your alternative content here -->
<p>This content is displayed in browsers that do not support frames.</p>
</noframes><frameset> element, typically after <frame> elements.<body>.| Topic | Code Snippet | Notes |
|---|---|---|
| Legacy noframes | <noframes>...</noframes> | Inside frameset |
| With class | class="fallback" | Global attribute |
| CSS Grid | display: grid; | Modern layout |
| iframe pane | <iframe src="..."> | Embed external page |
| Tag-specific attrs | None | — |
| HTML5 status | Obsolete | Do not use |
<noframes> vs Modern Layout| Approach | Syntax | Status |
|---|---|---|
<noframes> | Fallback inside frameset | Obsolete |
| CSS Grid | grid-template-columns | Valid HTML5 + CSS |
| Flexbox | display: flex | Valid HTML5 + CSS |
<iframe> | Embed one external document | Valid HTML5 |
The <noframes> tag has no tag-specific attributes, but supports global attributes such as class, id, and style for customizing fallback content:
<noframes class="fallback" style="color: #333;">
<p>This website requires a browser that supports frames for optimal viewing.</p>
</noframes>class GlobalLink to external CSS classes for fallback styling.
class="fallback"style GlobalInline styles (prefer external CSS in modern projects).
style="color: #333;"Do not use <noframes> in new HTML. Apply class and styles to normal semantic elements in a standard HTML5 document.
Legacy noframes patterns inside frameset documents and the modern CSS Grid layout alternative.
How fallback messaging looked to users without frame support:
noframes fallback
This content is displayed in browsers that do not support frames.
The <noframes> tag offered alternative content for users accessing framed websites without frame support, and compatibility messages guiding users to upgrade their browsers.
The primary purpose of noframes is to offer readable fallback HTML when frames cannot render.
<noframes>
<!-- Your alternative content here -->
<p>This content is displayed in browsers that do not support frames.</p>
</noframes>Display a clear message informing users about frame requirements (historical pattern).
<noframes>
<p>Please upgrade your browser to enjoy the full features of this website.</p>
</noframes>Replace framed multi-pane layouts with CSS Grid and semantic HTML5:
.layout {
display: grid;
grid-template-columns: 1fr 2fr;
min-height: 200px;
gap: 0.5rem;
}Replace frames and noframes with these modern layout approaches:
<iframe> — Embed a single external page when isolation is truly needed.Frames caused significant accessibility problems that noframes could not fully solve:
nav, main) is far more accessible.Define columns or rows with frame elements.
Fallback HTML for browsers without frame support.
CSS Grid and Flexbox replaced framed layouts.
Build accessible single-page layouts with semantic HTML5 and CSS.
Understanding compatibility is essential. <noframes> only applied inside obsolete frameset documents. It is not part of HTML5 and must not be used in new projects.
Browsers that once rendered frames also parsed <noframes> as fallback content. Modern HTML5 documents never use frames or noframes. Use CSS Grid instead.
Frames were removed from HTML5; noframes had no purpose without frameset documents.
Bottom line: Do not use <noframes>. Build accessible layouts with CSS Grid, Flexbox, and semantic HTML5.
The <noframes> tag was a valuable tool for providing fallback content in the framed-web era. Today, frames and noframes are obsolete—modern developers build accessible, single-page layouts with CSS Grid and semantic HTML5.
By implementing alternative content through proper document structure rather than frames, you ensure your website remains accessible and functional across all browsers and devices.
nav, main, aside<noframes> or <frameset> in new HTMLstyle when external CSS is availablenoframes concise when maintaining legacy pages.<noframes>Bookmark these before you build multi-pane layouts.
Content when frames cannot render.
BehaviorRemoved from HTML5 with frames.
Statusclass, id, style supported.
AttributesOnly valid in framed documents.
ContextModern multi-pane replacement.
AlternativeFrames hurt screen reader UX.
Accessibilityframeset element, after frame elements.class and style apply.noframes was for missing frame support; noscript is for disabled JavaScript.Skip obsolete noframes. Practice CSS Grid multi-pane layouts in the Try It editor.
6 people found this page helpful