**`<noframes>`** existed purely to serve non-frame-capable browsers (or search engine crawlers of that era, which often couldn't process frames either) a normal, fallback page — typically a link to a non-framed version of the site. Since `<frameset>` itself has been completely removed from HTML5 and no modern browser renders it at all, `<noframes>` has no remaining practical purpose whatsoever; it's a fallback for a layout technique that no longer functions in the first place.
1Understanding <noframes>
`<noframes>` existed purely to serve non-frame-capable browsers (or search engine crawlers of that era, which often couldn't process frames either) a normal, fallback page — typically a link to a non-framed version of the site. Since <frameset> itself has been completely removed from HTML5 and no modern browser renders it at all, <noframes> has no remaining practical purpose whatsoever; it's a fallback for a layout technique that no longer functions in the first place.
Because frameset rendering is gone from every current browser, there's no scenario left where <noframes> content would ever actually display — it's a fallback for a mechanism that itself no longer exists.
<!-- Historical usage, entirely non-functional today -->
<frameset cols="*">
<frame src="page.html">
<noframes>
<p>This site requires frame support.</p>
</noframes>
</frameset>2Practical Example
Here is a real-world application of <noframes> showing how it is used in production HTML.
<!-- The element you actually want today for a similar 'fallback' purpose: noscript -->
<noscript>
<p>This app requires JavaScript to run.</p>
</noscript>3Best Practices
Follow these guidelines when working with <noframes>:
1. Never use <noframes> — both it and the frameset model it supported are fully obsolete
2. If migrating legacy frameset-based sites, remove <noframes> along with the framesets entirely, replacing the whole layout with CSS
3. Don't confuse <noframes> with <noscript>, which remains fully functional and relevant for JavaScript-disabled fallbacks today
Tip: Because frameset rendering is gone from every current browser, there's no scenario left where <noframes> content would ever actually display — it's a fallback for a mechanism that itself no longer exists.
<!-- Historical usage, entirely non-functional today -->
<frameset cols="*">
<frame src="page.html">
<noframes>
<p>This site requires frame support.</p>
</noframes>
</frameset>