HTML <noframes> Tag

Beginner
⏱️ 5 min read
📚 Updated: Jun 2026
🎯 3 Examples
Legacy HTML

What You’ll Learn

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.

01

Frames Fallback

Content when frames cannot render.

02

frameset Context

Where noframes lived in old HTML.

03

Obsolete Status

Removed with frames in HTML5.

04

Global Attributes

class, id, and style on noframes.

05

CSS Grid

Modern multi-pane layout replacement.

06

Accessibility

Why frames were problematic for a11y.

What Is the <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.

⚠️
Obsolete in HTML5 — Do Not Use

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.

🚫 Obsolete Status

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.

  • Obsolete alongside frameset and frame — not to be confused with iframe, which remains valid HTML5.
  • Frames broke bookmarking, printing, and search engine indexing.
  • CSS Grid and Flexbox provide responsive pane layouts without frames.

📝 Syntax

To utilize the <noframes> tag, enclose the alternative content within opening and closing tags inside a frameset (historical pattern only):

syntax.html
<noframes>
  <!-- Your alternative content here -->
  <p>This content is displayed in browsers that do not support frames.</p>
</noframes>

Syntax Rules

  • Placed inside a <frameset> element, typically after <frame> elements.
  • Contains full HTML fallback content (headings, paragraphs, links).
  • Not used in HTML5 documents with a normal <body>.
  • Modern replacement: a single-page layout with CSS Grid or Flexbox.

⚡ Quick Reference

TopicCode SnippetNotes
Legacy noframes<noframes>...</noframes>Inside frameset
With classclass="fallback"Global attribute
CSS Griddisplay: grid;Modern layout
iframe pane<iframe src="...">Embed external page
Tag-specific attrsNone
HTML5 statusObsoleteDo not use

⚖️ <noframes> vs Modern Layout

ApproachSyntaxStatus
<noframes>Fallback inside framesetObsolete
CSS Gridgrid-template-columnsValid HTML5 + CSS
Flexboxdisplay: flexValid HTML5 + CSS
<iframe>Embed one external documentValid HTML5

🧰 Attributes

The <noframes> tag has no tag-specific attributes, but supports global attributes such as class, id, and style for customizing fallback content:

attributes.html
<noframes class="fallback" style="color: #333;">
  <p>This website requires a browser that supports frames for optimal viewing.</p>
</noframes>
class Global

Link to external CSS classes for fallback styling.

class="fallback"
style Global

Inline 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.

Examples Gallery

Legacy noframes patterns inside frameset documents and the modern CSS Grid layout alternative.

👀 Live Preview

How fallback messaging looked to users without frame support:

noframes fallback

This content is displayed in browsers that do not support frames.

📚 Common Use Cases

The <noframes> tag offered alternative content for users accessing framed websites without frame support, and compatibility messages guiding users to upgrade their browsers.

Providing Alternative Content

The primary purpose of noframes is to offer readable fallback HTML when frames cannot render.

⚠️ Obsolete tags — for learning legacy HTML only.
providing-alternative-content.html
<noframes>
  <!-- Your alternative content here -->
  <p>This content is displayed in browsers that do not support frames.</p>
</noframes>
Try It Yourself

Compatibility Messaging

Display a clear message informing users about frame requirements (historical pattern).

compatibility-messaging.html
<noframes>
  <p>Please upgrade your browser to enjoy the full features of this website.</p>
</noframes>
Try It Yourself

Modern CSS Grid Layout

Replace framed multi-pane layouts with CSS Grid and semantic HTML5:

grid-layout.css
.layout {
  display: grid;
  grid-template-columns: 1fr 2fr;
  min-height: 200px;
  gap: 0.5rem;
}
Main content

🔄 Alternatives

Replace frames and noframes with these modern layout approaches:

  • CSS Grid — Multi-column and multi-row page layouts without separate documents.
  • Flexbox — Navigation bars, sidebars, and flexible content areas.
  • <iframe> — Embed a single external page when isolation is truly needed.
  • Server-side includes / components — Reuse header and footer markup without frames.

♿ Accessibility

Frames caused significant accessibility problems that noframes could not fully solve:

  • Screen readers — Frame boundaries confused navigation and reading order.
  • Keyboard focus — Moving between frames was unpredictable.
  • Bookmarking — Users could not bookmark a specific frame’s state.
  • Single-page layouts — Semantic HTML5 with landmarks (nav, main) is far more accessible.

🧠 How <noframes> Worked

1

Author builds frameset

Define columns or rows with frame elements.

Markup
2

noframes added

Fallback HTML for browsers without frame support.

Fallback
3

HTML5 removed frames

CSS Grid and Flexbox replaced framed layouts.

Evolution
=

Today: use CSS Grid

Build accessible single-page layouts with semantic HTML5 and CSS.

Browser Support

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.

Obsolete · Not in HTML5

Legacy frameset context only

Browsers that once rendered frames also parsed <noframes> as fallback content. Modern HTML5 documents never use frames or noframes. Use CSS Grid instead.

0% HTML5 support
Google Chrome Not in HTML5 · Obsolete
Obsolete
Mozilla Firefox Not in HTML5 · Obsolete
Obsolete
Apple Safari Not in HTML5 · Obsolete
Obsolete
Microsoft Edge Not in HTML5 · Obsolete
Obsolete
Internet Explorer Legacy frames · EOL
Legacy only
Opera Not in HTML5 · Obsolete
Obsolete

Why noframes was removed

Frames were removed from HTML5; noframes had no purpose without frameset documents.

🗃️
CSS Grid Responsive multi-pane layouts in one document
Replacement
Semantic landmarks nav, main, aside improve screen reader navigation
A11y
<noframes> in HTML5 0% — obsolete

Bottom line: Do not use <noframes>. Build accessible layouts with CSS Grid, Flexbox, and semantic HTML5.

Conclusion

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.

💡 Best Practices

✅ Do

  • Use CSS Grid or Flexbox for multi-pane layouts
  • Keep fallback messaging concise and informative (if reading legacy code)
  • Use semantic landmarks: nav, main, aside
  • Test layouts on mobile viewports

❌ Don’t

  • Use <noframes> or <frameset> in new HTML
  • Ask users to “upgrade for frames” in 2026
  • Split one site into multiple frame documents
  • Rely on inline style when external CSS is available
  • Keep alternative content within noframes concise when maintaining legacy pages.
  • Use clear messaging to guide users when frames are unavailable.
  • Test in different browsers when working with historical frameset code.

Key Takeaways

Knowledge Unlocked

Six truths every developer should know about <noframes>

Bookmark these before you build multi-pane layouts.

6
Core concepts
🚫 02

Obsolete

Removed from HTML5 with frames.

Status
⚙️ 03

Global Attributes

class, id, style supported.

Attributes
🛠️ 04

Inside frameset

Only valid in framed documents.

Context
📊 05

CSS Grid

Modern multi-pane replacement.

Alternative
06

Poor a11y

Frames hurt screen reader UX.

Accessibility

❓ Frequently Asked Questions

It provided fallback HTML inside frameset documents for browsers without frame support.
No. Frames and noframes are obsolete. Use CSS Grid or Flexbox instead.
Inside a frameset element, after frame elements.
No tag-specific attributes, but global attributes like class and style apply.
noframes was for missing frame support; noscript is for disabled JavaScript.

Build Layouts Without Frames

Skip obsolete noframes. Practice CSS Grid multi-pane layouts in the Try It editor.

Try CSS Grid Layout →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

6 people found this page helpful