What is wrong with using HTML tables for layout?

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, web browsers have not always consistently and reliably supported CSS positioning. A Web site designed with CSS positioning may render differently between browsers: Internet Explorer (IE) 5 - 7, IE for Mac, Firefox Versions 1 & 2, Opera, Safari, Netscape etc. In addition to the various browsers, operating systems can have an impact on how Web sites appear. 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).