History of HTML tables - introduction
I would welcome feedback to help make this document more comprehensive and authoritative.
The first proposal for HTML tables that I have a record of was documented by Dave Raggett late in 1993, based on discussions in earlier months. It proposed mark-up to layout potentially complex material in rows & columns on a display. The proposal was concerned with the layout to be achieved, and not to do with any logical or semantic relationships among the material.
Viola may have been the first browser to support some form of tables for demonstration purposes. But, as far as I know, tables first appeared as generally-available technology on the web late in 1994 in a development version of Mosaic. This was therefore both a "specification" & a "visual formatting model" wrapped up in a piece of technology. I don't know what those browser developers thought tables would be used for. But I don't recall their protests when layout-tables "took off" in about 1995/6 and made the web a much more interesting and useful system!
HTML tables have never been purely layout-neutral logical or semantic mark-up. Tables have always been in terms of rows and columns, and have never insisted that the rows and columns comprise logical or semantic dimensions. Specifications have always permitted complex material to be enclosed in the cells. The W3C HTML recommendations for tables include their visual formatting model. However, later recommendations include optional features to enable semantic relationships to be added for use by accessibility technology.
Some useful sources (not necessarily in total agreement):
Some key dates and events for HTML tables
This is mainly concerned with any implications for the use of tables for layout purposes, although a wider context is provided. Note that browser and tool developers worked on these proposals before their formal publication as Recommendations, so there was a lot of parallel activity here, among those proposing standards, those defining them, among browser developers, authoring tool developers, and authors.
Two additional themes are recorded here:
- The repeated surfacing of proposals for support for "columns". This appears to have been a lost opportunity, and would perhaps have satisfied some of the desire for more complex layout without using tables.
- The changing views of the web, from being primarily about presentation on screens before 1997, towards concepts such as semantic mark-up and accessibility, made public by key events in 1997/8 based on earlier discussions.
|Date||(X)HTML & CSS||Commentary|
|First era - "presentation on screens"|
From its original proposals in about 1989, until about February 1997, the practical realisation of HTML was about presentation on screens. This included published recommendations, browsers & development tools, and actual web sites.
At quite an early stage, experts knew that it had to become more than this. In 1993, some style sheet control of layout was proposed, and in 1994 semantic elements were proposed to enable, inter alia, accessibility by the blind. But these had few practical consequences until the "second era".
|1989, 1990, 1991||
These aren't about tables, but are here for completeness. They include proposals by Tim Berners-Lee, and later Robert Cailliau, for a HyperText Project at CERN. The 1989 document says "Storage of ASCII text, and display on 24x80 screens, is in the short term sufficient, and essential"; and there is reference to: "... information display software ...".
|1991 & onward||Viola & tables||
Pei Wei incorporated Web browsing capabilities in Viola in late 1991, for release in 1992. ViolaWWW grew into the most sophisticated of the early Web browsers. It is claimed to have been the first browser with support for style sheets, tables, and nest-able HTML elements. But I don't know when that was - almost certainly later than 1991.
IBM announces Screen Reader/2 to allow blind and visually-impaired people to use popular graphics-based personal computer software not previously accessible. (It was not a web browser). The reason for mentioning this here is that the problems with screen readers' handling of layout tables influenced advice against layout tables until April 1999.
|June 1993||A proposal was made for "columns" in a presentation language for the web||
This proposal did not directly turn into CSS. "The styles defined specify the recommended behaviour of HTML objects in terms of: .... page layout ... column ...."
|June 1993||Hypertext Markup Language (HTML)||
An Internet Draft of "A Representation of Textual Information and MetaInformation for Retrieval and Interchange". (Tim Berners-Lee, Daniel Connolly). HTML isn't simply a layout-neutral marked-up document. (CSS is years from being proposed). HTML has rules for presentation. A few examples (of several):
|November 1993||"HTML+" Discussion Document||
Dave Raggett's draft for HTML+ discusses tables and their suggested display. It is clear from the description and diagrams that tables were intended to display as a grid comprising (horizontal) rows and (vertical) columns of cells.
This draft says "Cells may contain, text, multiple paragraphs, lists and headers". (Text included links and images). Not just simple pieces of data! And "... suitable for efficient rendering on a wide range of display types including VT100 terminals, X11, Windows 3.1 and the Macintosh".
(This draft resulted from a WWW workshop in July 1993 and subsequent discussions on www-talk. I haven't found other material on the workshop, and the W3C archive of www-talk has a "hole" for this period).
|August 1994||Proposal for convergence between ICADD & HTML||
ICADD (International Committee for Accessible Document Design) had specified mark-up for documents that allowed them to be translated into Braille (etc). Now, Yuri Rubinsky proposed a convergence that would assist single-sourcing of accessible print and WWW documents, via changes to the ICADD specification and extensions to HTML+.
This was a significant influence on the specification of tables in HTML 3.0. But HTML 3.0 didn't become a recommendation, and HTML 3.2, which became a recommendation instead, didn't incorporate these semantic elements. So they had to wait for HTML 4.0, see item later.
|October 1994||Proposal for CSS||
Håkon W Lie's draft proposal for cascading style sheets. At this stage it was concerned with "a simple mapping between HTML elements and presentation hints". It didn't attempt to provide a list of values, but instead said "A reasonable list of such parameters can be found in Robert Raisch's stylesheet proposal". Hence, except for "columns", not about layout. Subsequent discussion continued this theme.
W3C was created as a collaboration between MIT and CERN, with support from DARPA and the European Commission.
|December 1994||Mosaic 2.0 Alpha 8 has tables||
Brian Wilson lists this as the first browser support.
|1995 (& 1996 for Mac)||Netscape Navigator 1.1 & Internet Explorer 2.0 have tables||
Brian Wilson shows these browsers supporting tables in 1995.
|June 1995||Proposal for HTML 2.1 to include tables||
Tables were not being proposed in HTML 2.0 (see item below). Bert Bos proposed HTML 2.1 to be like 2.0 but with tables. It says: "Cells can contain text as well as block-like elements, such as paragraphs, lists and other tables". Subsequent discussion suggested that HTML 3.0 was the way to go, because of the consensus over Raggett's more comprehensive table proposal.
|November 1995||HTML 2.0||
This was based mainly on the HTML in browsers during 1994. It came from the Internet Engineering Task Force HTML Working Group. It appears to be the first formal version of HTML. It goes into some detail about the presentation of the elements. It didn't identify tables. It has long been superseded.
|December 1995||There was a working draft for a "CSS layout language", including "columns"||
This recognised some of the issues of page layout, and proposes solutions, but does not appear to have been carried any further. It proposes a page-layout language for such things as columns. Like the earlier proposal for "columns", this appears to have been a lost opportunity.
|1995 & 1996||
Layout tables "take off". Probably 1996 was the year when web site designers and authors realised en masse the layout opportunities offered by tables.
|October 1995 & May 1996||Proposal for development of tables||
This Draft, then Request, from Dave Raggett set out the key proposals for the development of tables that were later incorporated into HTML 4. A key phrase is "It also supports rendering to braille, or speech, and exchange of tabular data with databases and spreadsheets". (There had been discussion in forums about how to map tables into braille. For example, see the item above about the proposal by Yuri Rubinsky).
|January 1996||HTML 3.0 and the HTML3 Table Model||
This was based mainly on the HTML in browsers during 1995 and early 1996. It didn't become a recommendation, but evolved into HTML 3.2 which did. It also proposed some of the "data semantic" features under discussion for tables, but these were omitted from HTML 3.2 and only appeared in HTML 4.
It says: "The HTML table model has evolved from studies of existing SGML tables models, the treatment of tables in common word processing packages, and looking at a wide range of tabular layout in magazines, books and other paper-based documents".
|1996||Development of tables||
There were various discussions about how tables in HTML should be developed. For example, Greg Lowney from MS points out that "The things I think are missing today include: .... 2. The author should be able to specify the nature of a table". At this time, authors simply couldn't provide adequate semantics for a table. (This arrived with HTML 4.0).
CSS1 was released as a W3C Recommendation. It was concerned solely with "visual styling". It had no styles specifically for tables. It supported "float" but not "position". Eric Meyer has said "... floats were not originally intended to be used for layout ...". Indeed, the Recommendation itself says (in Appendix E, see below): "CSS1 does not offer .... a layout language: CSS1 does not offer multiple columns with text-flow, overlapping frames etc".
|January 1997||HTML 3.2||
HTML 3.2 was released as a W3C Recommendation. HTML 3.2 added widely-deployed features including tables to the existing HTML 2.0 Standard. It represents the "last fling" of the first era. For example, it still appears to consider "paragraph" in terms of its formatting, as in "... block level elements which cause paragraph breaks ...". (This changes in HTML 4).
HTML 3.2 explicitly stated that tables "can be used to markup tabular material or for layout purposes". And "A cell can contain a wide variety of other block and text level elements including form fields and other tables".
|Second era - "accessibility, multimedia, & semantic mark-up, as well"|
"Suddenly", accessibility, multimedia, & semantic mark-up made their appearance in published recommendations, and then in tools of various sorts.
All of these topics had been discussed years before, but the urgency during the "first era" had been to establish a documented baseline of CSS1 and HTML 3.2 to get web standards under control. This pair of recommendations, especially HTML 3.2, has been criticised as a cop-out by some commentators. I suspect, based on personal experience of computer systems design, that alternatives, such as publishing only far-sighted recommendations which were years from being feasible, would have had worse consequences.
Web Accessibility Initiative (WAI) launched by W3C.
|1997||Internet Explorer 4.0 and Netscape Navigator 4.0 have support for CSS1 "float"||
This may be the first opportunity for anything like CSS positioning. However, Eric Meyer has said "... floats were not originally intended to be used for layout ...".
|1997||Internet Explorer 4.0 & Netscape Navigator 4.0 have some support for CSS2 "position", added to in later versions||
It appears that this support preceded the formal release of the Recommendation.
|December 1997 / April 1998||HTML 4.0||
HTML 4.0 was released as a W3C Recommendation. The most important feature of HTML 4.0 is the completion of support of CSS. (Some aspects of support were already in place).
It has a more semantically-oriented approach to mark-up than HTML 3.2. For example, instead of "... block level elements which cause paragraph breaks ...", it says "Generally, block-level elements begin on new lines ...". "Paragraph" is not now seen as a way of getting line-breaks, but instead "Authors traditionally divide their thoughts and arguments into sequences of paragraphs". It also introduced semantic features to tables.
This Recommendation states: "Tables should not be used purely as a means to layout document content as this may present problems when rendering to non-visual media. Additionally, when used with graphics, these tables may force users to scroll horizontally to view a table designed on a system with a larger display. To minimize these problems, authors should use style sheets to control layout rather than tables". (This statement was also in the working draft of September 1997, although not in the working draft of July 1997).
"Should not" has a specific meaning. "This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label". See:
So this was only ever a caution, not a prohibition. W3C has not stated a date when this caution should commence. It surely wasn't 1997, because global support for CSS positioning was virtually non-existent then. In fact, the corresponding CSS2 specification needed hadn't become a formal Recommendation! But W3C hasn't said "this injunction should apply from 200x onwards". There is no reason to assume that (say) 2003 was their chosen year. (And the reason behind the statement has largely gone anyway).
|1998||IBM Home Page Reader||
IBM announces Home Page Reader for Windows, a talking Web browser that opens the World Wide Web with spoken Internet access to blind and visually impaired users.
This changes the basis on which the HTML 4.0 Recommendation about not using layout tables (see above) should be judged. It appears to have influenced the Web Accessibility Initiative.
CSS2 was released as a W3C Recommendation. CSS2 has added support for (inter alia) element positioning and tables. It also has support for aural stylesheets, hence non-visual styling.
The only clear indication in the Recommendation that CSS2 was intended for page layout purposes is: "9.6.1 Fixed positioning .... Authors may use fixed positioning to create frame-like presentations". So this was about an alternative to frames for laying out the viewport, rather than an alternative to tables for laying out a page. And it has poor behaviour, see link below!
|1998 onwards||Netscape Navigator 6.0 & 7.0 have support for CSS2 table properties, and Internet Explorer 5.0 has some of them||
Support for the CSS table properties is patchy and being introduced piecemeal. Internet Explorer appears to have started earlier then stopped evolving.
|April 1999||Web Content Accessibility Guidelines||
The Web Content Accessibility Guidelines "Issues List" issue 24 queried whether layout tables should continue to be rejected.
In April 1999 the Web Accessibility Initiative revised its position, and it is clear that this is because older documents were addressing the problems with screen readers, while later documents recognise linearising browsers. It resolved "Do not use tables for layout unless the table makes sense when linearized". It added "When style sheet positioning is fully supported then tables should not be used" (for layout). This is the basis for their gradual change in their position during 1999 & 2000.
|December 1999||HTML 4.01||
HTML 4.01 was released as a W3C Recommendation. It repeats the statement quoted above for the 4.0 Recommendation: "Tables should not be used purely as a means to layout document content as this may present problems when rendering to non-visual media.... To minimize these problems, authors should use style sheets to control layout rather than tables".
Even in 1999, global support for CSS positioning was pitiful. And there is no other commencement date stated.
|July 2000||W3C uses layout tables for its own web site||
"Our experiments with trying to design a page that used floats and worked across different browsers on different platforms failed. We debated whether we wanted to use floats and take a stand to promote support for specifications, or to use a table and ensure that the page linearized well (as recommended by the Web Content Accessibility Guidelines). We chose the table as a practical, not purist solution".
|November 2000||HTML Techniques for Web Content Accessibility Guidelines||
A note for the HTML Techniques for Web Content Accessibility Guidelines 1.0 states:
"5.3 Do not use tables for layout unless the table makes sense when linearized. Otherwise, if the table does not make sense, provide an alternative equivalent (which may be a linearized version)."
This is a change from earlier statements. For example, the May 1999 Guidelines had said "Content developers should avoid using them to lay out pages ("layout tables")". Earlier drafts were even stronger. The Guidelines "Issues List" issue 24 had resolved this in April 1999, and there was a gradual change through 1999 & 2000.
|November 2002 / February 2003||
The Opera browser implements "small screen mode", first in Beta then in a full release. This demonstrates the ability of a browser to disable tables so that their content can be viewed adequately on a narrow screen, such as 240 pixels wide. This demonstrates that layout tables are not a barrier to display on small screens.
|The future||CSS3 has a "columns" module||
It does not appear that this module is intended for page layout purposes. It will not have the ability to replace all uses of layout tables. It is intended to spread one type of content across columns, such as an article. It is not intended to layout totally different types of content in separate columns, such as site navigation and an article. See, for example, the 1998 list of suggested extensions.
|The future||XHTML 2.0 Tables Module||
The Minimum Content Model for the Tables Module defines <td> and <th> content as (PCDATA | Flow)*, where Flow is "Heading | Block | Inline". In other words, it can include complex content. (No change there!)
This module also illustrates a continuing ambiguity in whether "presentation" includes "layout". For example, while "XHTML2 takes HTML back to these roots, by removing all presentation elements, and subordinating all presentation to stylesheets", the Tables Module has a lot of information about the layout implications of XHTML.