Features listed in this section will trigger warnings in conformance checkers.
Authors should not specify a border
attribute on an img
element. If the attribute is present, its
value must be the string "0
". CSS should be
used instead.
Authors should not specify a language
attribute on a script
element. If the attribute is present, its value must be an ASCII case-insensitive match for
the string "JavaScript
" and either the
type
attribute must be omitted or its value
must be an ASCII case-insensitive match for
the string "text/javascript
". The attribute
should be entirely omitted instead (with the value "JavaScript
", it has no effect), or replaced with use of
the type
attribute.
Authors should not specify the name
attribute on a
elements. If the attribute is present, its
value must not be the empty string and must neither be equal to the
value of any of the IDs in the element's home subtree other than the element's own
ID, if any, nor be equal to the value of any
of the other name
attributes on a
elements in the element's home subtree. If this attribute is present and
the element has an ID, then the attribute's value must be equal to
the element's ID. In earlier versions of the language, this
attribute was intended as a way to specify possible targets for
fragment identifiers in URLs. The id
attribute should be used instead.
Authors should not, but may despite requirements to the contrary
elsewhere in this specification, specify the maxlength
and size
attributes on input
elements whose type
attributes are in the Number state. One valid reason for
using these attributes regardless is to help legacy user agents
that do not support input
elements with type="number"
to still render the text field with a
useful width.
In the HTML syntax, specifying a DOCTYPE that is an obsolete permitted DOCTYPE will also trigger a warning.
Elements in the following list are entirely obsolete, and must not be used by authors:
applet
acronym
Use abbr
instead.
bgsound
Use audio
instead.
dir
Use ul
instead.
frame
frameset
noframes
Either use iframe
and CSS instead, or use
server-side includes to generate complete pages with the various
invariant parts merged in.
isindex
Use an explicit form
and text
field combination instead.
listing
nextid
Use GUIDs instead.
noembed
plaintext
Use the "text/plain
" MIME type instead.
rb
Providing the ruby base directly inside the ruby
element is sufficient; the
rb
element is unnecessary. Omit it
altogether.
strike
Use del
instead if the element is marking an edit,
otherwise use s
instead.
xmp
Use pre
and code
instead, and escape "<
" and "&
" characters as
"<
" and "&
" respectively.
basefont
big
blink
center
font
marquee
multicol
nobr
spacer
tt
Use appropriate elements and/or CSS instead.
Where the tt
element would have been used for marking up
keyboard input, consider the kbd
element; for variables, consider the
var
element; for computer code, consider the
code
element; and for computer output,
consider the samp
element.
Similarly, if the big
element is being used to denote a heading,
consider using the
h1
element; if it is being used for marking up important
passages, consider the strong
element; and if it is being used
for highlighting text for reference purposes, consider the
mark
element.
See also the text-level semantics usage summary for more suggestions with examples.
The following attributes are obsolete (though the elements are still part of the language), and must not be used by authors:
charset
on a
elementscharset
on link
elementsUse an HTTP Content-Type header on the linked resource instead.
coords
on a
elementsshape
on a
elementsmethods
on a
elementsmethods
on link
elementsUse the HTTP OPTIONS feature instead.
name
on a
elements (except as noted in the previous
section)name
on embed
elementsname
on img
elementsname
on option
elementsUse the id
attribute instead.
rev
on a
elementsrev
on link
elementsUse the rel
attribute instead, with an opposite
term. (For example, instead of rev="made"
,
use rel="author"
.)
urn
on a
elementsurn
on link
elementsSpecify the preferred persistent identifier using the
href
attribute instead.
accept
on form
elementsUse the accept
attribute directly on the
input
elements instead.
nohref
on area
elementsOmitting the href
attribute is sufficient; the
nohref
attribute is unnecessary. Omit it
altogether.
profile
on head
elementsWhen used for declaring which meta
terms are used in the document, unnecessary; omit it altogether,
and register the names.
When used for triggering specific user agent behaviors: use a
link
element instead.
version
on html
elementsUnnecessary. Omit it altogether.
usemap
on input
elementslongdesc
on
iframe
elementslongdesc
on img
elementsUse a regular a
element to link to the description, or (in the
case of images) use an image map to provide a link from the image to the
image's description.
lowsrc
on img
elementsUse a progressive JPEG image (given in the src
attribute), instead of using two separate
images.
target
on link
elementsUnnecessary. Omit it altogether.
scheme
on meta
elementsUse only one scheme per field, or make the scheme declaration part of the value.
archive
on object
elementsclassid
on object
elementscode
on object
elementscodebase
on
object
elementscodetype
on
object
elementsUse the data
and type
attributes to invoke plugins. To set parameters with these
names in particular, the param
element can be used.
declare
on object
elementsRepeat the object
element completely each time the
resource is to be reused.
standby
on object
elementsOptimize the linked resource so that it loads quickly or, at least, incrementally.
type
on param
elementsvaluetype
on
param
elementsUse the name
and value
attributes without declaring value
types.
language
on
script
elements (except as noted in the previous
section)Use the type
attribute instead.
event
on script
elementsfor
on script
elementsUse DOM Events mechanisms to register event listeners. [DOMCORE]
datapagesize
on
table
elementsUnnecessary. Omit it altogether.
summary
on table
elementsUse one of the
techniques for describing tables given in the table
section instead.
abbr
on td
and th
elementsUse text that begins in an unambiguous and terse manner, and
include any more elaborate text after that. The title
attribute can also be useful in
including more detailed text, so that the cell's contents can be
made terse.
axis
on td
and th
elementsscope
on td
elementsUse th
elements for heading cells.
datasrc
on a
, applet
,
button
, div
, frame
,
iframe
, img
, input
, label
, legend
,
marquee
, object
, option
, select
, span
, table
, and textarea
elementsdatafld
on a
, applet
,
button
, div
, fieldset
, frame
,
iframe
, img
, input
, label
, legend
,
marquee
, object
, param
, select
, span
, and textarea
elementsdataformatas
on
button
, div
, input
, label
, legend
,
marquee
, object
, option
, select
, span
, and table
elementsUse script and a mechanism such as XMLHttpRequest
to populate the page dynamically. [XHR]
alink
on body
elementsbgcolor
on body
elementslink
on body
elementsmarginbottom
on
body
elementsmarginheight
on
body
elementsmarginleft
on
body
elementsmarginright
on
body
elementsmargintop
on
body
elementsmarginwidth
on
body
elementstext
on body
elementsvlink
on body
elementsclear
on br
elementsalign
on caption
elementsalign
on col
elementschar
on col
elementscharoff
on col
elementsvalign
on col
elementswidth
on col
elementsalign
on div
elementscompact
on dl
elementsalign
on embed
elementshspace
on embed
elementsvspace
on embed
elementsalign
on hr
elementscolor
on hr
elementsnoshade
on hr
elementssize
on hr
elementswidth
on hr
elementsalign
on
h1
—h6
elementsalign
on iframe
elementsallowtransparency
on iframe
elementsframeborder
on
iframe
elementshspace
on iframe
elementsmarginheight
on
iframe
elementsmarginwidth
on
iframe
elementsscrolling
on
iframe
elementsvspace
on iframe
elementsalign
on input
elementshspace
on input
elementsvspace
on input
elementsalign
on img
elementsborder
on img
elements (except as noted in the previous
section)hspace
on img
elementsvspace
on img
elementsalign
on legend
elementstype
on li
elementscompact
on menu
elementsalign
on object
elementsborder
on object
elementshspace
on object
elementsvspace
on object
elementscompact
on ol
elementsalign
on p
elementswidth
on pre
elementsalign
on table
elementsbgcolor
on table
elementscellpadding
on
table
elementscellspacing
on
table
elementsframe
on table
elementsrules
on table
elementswidth
on table
elementsalign
on tbody
, thead
, and tfoot
elementschar
on tbody
, thead
, and tfoot
elementscharoff
on tbody
, thead
, and tfoot
elementsvalign
on tbody
, thead
, and tfoot
elementsalign
on td
and th
elementsbgcolor
on td
and th
elementschar
on td
and th
elementscharoff
on td
and th
elementsheight
on td
and th
elementsnowrap
on td
and th
elementsvalign
on td
and th
elementswidth
on td
and th
elementsalign
on tr
elementsbgcolor
on tr
elementschar
on tr
elementscharoff
on tr
elementsvalign
on tr
elementscompact
on ul
elementstype
on ul
elementsbackground
on body
, table
, thead
, tbody
, tfoot
, tr
, td
, and th
elementsUse CSS instead.
The border
attribute on the table
element can be used to provide basic
fallback styling for the purpose of making tables legible in
browsing environments where CSS support is limited or absent, such
as text-based browsers, WYSIWYG editors, and in situations where
CSS support is disabled or the style sheet is lost. Only the empty
string and the value "1
" may be used as
border
values for this purpose. Other
values are considered obsolete. To regulate the thickness of such
borders, authors should instead use CSS.