TL;DR
An essay-style test of classic text-only browsers (ELinks, Lynx, w3m) finds that many newer HTML features are ignored or fully exposed because there is no CSS/JS support. Some elements degrade tolerably, but others break progressive-enhancement patterns and can expose hidden content.
What happened
The author tested three old-school, text-based browsers—ELinks, Lynx and w3m—and reviewed how they handle several relatively recent HTML additions. Text-only browsers render raw HTML without CSS or JavaScript, leaving only minimal semantic "styling" such as colors and indentation. Simple disclosure widgets (<details>) appear acceptable but always show their full content because the closed state is not recognized. <datalist> suggestions are ignored and inputs fall back to plain text fields; Lynx even flagged the markup as malformed in tests. Interactive primitives like <dialog> and popovers are not supported, so dialog content appears as if permanently open and dialog-specific form semantics are not respected. The global inert attribute is ineffective: interactive elements inside inert regions remain reachable. The global hidden attribute is likewise unimplemented, causing content meant to be hidden to be visible — a behaviour the author calls a major failure for progressive enhancement. Visually hidden content (accessible-only CSS tricks) also shows up since there’s no CSS to hide it.
Why it matters
- Developers relying on HTML-only hiding mechanisms (hidden attribute, inert) can accidentally expose content to text-only browsers, breaking progressive enhancement workflows.
- Lack of support for newer interactive elements means text-based browsers may misrepresent intended page behavior, affecting accessibility and user expectations in non-graphical environments.
- Testing projects in text-based browsers remains a useful check of HTML fundamentals, but increasingly advanced web features widen the gap between graphical and text-only rendering.
- Because these browsers ignore CSS and JS, a solid HTML foundation still helps ensure basic functionality and content availability.
Key facts
- The tests were performed using ELinks, Lynx and w3m; browsh was intentionally excluded because it runs via Firefox.
- Text-based browsers render plain HTML with no CSS or JavaScript execution; only minimal semantic formatting is applied (colors, indentation, centered text).
- <details> elements are shown fully open; these browsers do not recognize the closed state.
- <datalist> options are ignored; inputs fall back to plain text fields; Lynx reported encountering "bad HTML" in tests.
- <dialog> content is displayed as if dialogs were always open; dialog-specific form semantics (method="dialog", formmethod="dialog") are not observed and form actions are triggered normally.
- Popover API content and related invoker commands are not supported and their content is dumped into the document flow.
- The global inert attribute is not implemented; interactive elements inside inert regions remain accessible.
- The global hidden attribute was discussed historically for text-based browsers but was rejected and remains unsupported, causing hidden-marked content to be visible.
- There is no native HTML mechanism for visual hiding; developers still rely on CSS classes like .visually-hidden, which have no effect in text-only environments.
What to watch next
- Whether maintainers of text-based browsers will implement the hidden or inert attributes in future releases — not confirmed in the source.
- Any adoption of Popover API or <dialog> semantics by text-based browser projects — not confirmed in the source.
- Interest or development around alternative text-only browsers (comments mention a project named chawan) and whether they handle newer HTML features differently — not confirmed in the source.
Quick glossary
- Text-based browser: A web browser that renders pages as plain text without executing CSS or JavaScript, typically used in terminals or low-resource environments.
- Progressive enhancement: A development strategy that starts with a solid HTML foundation and adds CSS and JavaScript enhancements so basic functionality works in minimal environments.
- <details> element: An HTML element that provides a disclosure widget; it can be toggled open or closed to show or hide nested content.
- hidden attribute: A global HTML attribute intended to indicate that the element is not relevant and should not be displayed (similar in effect to display:none).
- inert attribute: An attribute designed to make parts of the DOM non-interactive and unreachable to assistive technologies and keyboard navigation.
Reader FAQ
Do text-based browsers run CSS or JavaScript?
No. In the tested browsers (ELinks, Lynx, w3m) CSS and JS are not executed; pages are rendered as raw HTML with minimal semantic formatting.
Will hidden or inert attributes hide content in these browsers?
No. The global hidden and inert attributes were not implemented in the tested text-based browsers; content marked hidden or inert is still visible or reachable.
Are newer interactive HTML features like <dialog> supported?
Not in the tested text-based browsers. Dialog and popover content appears as if always open, and dialog-specific form behaviors are not recognized.
Should developers still test sites in text-based browsers?
The author suggests testing in text-based browsers helps ensure a solid HTML base and progressive enhancement, though these browsers are not the author's primary way of surfing the web.

Text-based web browsers EssayJanuary 8, 2026 Before I start, let me get two things out of the way: In this article I’m not going to include the admittedly cool browsh,…
Sources
- Text-based web browsers
- Introduction to cross-browser testing – Learn web development
- How modern browsers work
- HTML5 – Browser and Feature Detection
Related posts
- I quit ordering takeout after learning where delivery apps source meals
- The Homepage of Ron Goodwin: Site Snapshot and Visitor Comments
- Trump Declared a Space Race With China — and U.S. Is Falling Behind