What is wrong with using HTML tables for layout?

Date Updated

HTML tables were originally intended to be used for presenting tabular data, not for layout. The World Wide Web Consortium (W3C®) discourages use of tables for layout because they are striving for a web in which content and structure are completely separate from presentation. This allows content to be rendered meaningfully across a wide variety of devices. In the W3C's world view, cascading style sheets (CSS) is the vehicle by which presentation and layout are defined. Also, layout tables tend to be very complex, and often include multiple layers of nested tables, which can be burdensome if screen readers announce table properties as users enter and exit them.

Despite the arguments for using CSS rather than tables for layout, until recently web browsers have not consistently and reliably supported CSS positioning. Therefore, web authors have had little choice but to use tables for layout. Fortunately, browser support for CSS has improved significantly in recent versions, and there are growing numbers of websites that are migrating over to CSS entirely for positioning. If tables are used for layout, the key to making them accessible is to be sure the content makes logical sense when read in the order in which it will be read by screen readers and text-only browsers, which render tables from top to bottom (by row) and left to right (by column).