Our volunteers haven't translated this article into Română yet. Join us and help get the job done!
You can also read the article in English (US).

The HTML <img> element embeds an image into the document.

By default, the <img> element leaks the current location in the request for the image. See Regulatory, Security and Privacy concerns.

The above example shows very simple usage of the <img> element. The src attribute is required, and contains the path to the image you want to embed. The alt attribute contains a textual description of the image, which isn't mandatory but is incredibly useful for accessibility — screenreaders read this description out to their users so they know what the image shows, and it is also displayed on the page if the image can't be loaded for some reason.

There are many other attributes that can be specified to achieve various purposes, for example:

  • Referrer/CORS control for security purposes; see crossorigin and referrerpolicy.
  • Setting of an intrinsic size using width and height, which is useful when you want to set the space taken up by an image to ensure the page layout is stable before it loads.
  • Responsive image hints using sizes and srcset (see also the <picture> element, and our Responsive images tutorial).

Supported image formats

The HTML standard doesn't give a list of image formats that must be supported, so each user agent supports a different set of formats.


The image formats supported by Firefox are:

Image loading errors

If an error occurs while trying to load or render an image, and an onerror event handler has been configured to handle the error event, that event handler will get called. This can happen in a number of situations, including:

  • The src attribute is empty or null.
  • The specified src URL is the same as the URL of the page the user is currently on.
  • The specified image is corrupted in some way that prevents it from being loaded.
  • The specified image's metadata is corrupted in such a way that it's impossible to retrieve its dimensions, and no dimensions were specified in the <img> element's attributes.
  • The specified image is in a format not supported by the user agent.


This element includes the global attributes.

This attribute defines an alternative text description of the image.

Note: Browsers do not always display the image referenced by the element. This is the case for non-graphical browsers (including those used by people with visual impairments), if the user chooses not to display images, or if the browser cannot display the image because it is invalid or an unsupported type. In these cases, the browser may replace the image with the text defined in this element's alt attribute. You should, for these reasons and others, provide a useful value for alt whenever possible.

Note: Omitting this attribute altogether indicates that the image is a key part of the content, and no textual equivalent is available. Setting this attribute to an empty string (alt="") indicates that this image is not a key part of the content (decorative), and that non-visual browsers may omit it from rendering.

This enumerated attribute indicates if the fetching of the related image must be done using CORS or not. CORS-enabled images can be reused in the <canvas> element without being "tainted." The allowed values are:
A cross-origin request (i.e., with Origin: HTTP header) is performed, but no credential is sent (i.e., no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin HTTP header), the image will be tainted and its usage restricted.
A cross-origin request (i.e., with the Origin HTTP header) performed along with credentials sent (i.e., a cookie, certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (through the Access-Control-Allow-Credentials HTTP header), the image will be tainted and its usage restricted.
If the attribute is not present, the resource is fetched without a CORS request (i.e., without sending the Origin HTTP header), preventing its non-tainted usage in <canvas> elements. If invalid, it is handled as if the anonymous value was used. See CORS settings attributes for additional information.

Provides an image decoding hint to the browser. The allowed values are:

Decode the image synchronously for atomic presentation with other content.
Decode the image asynchronously to reduce delay in presenting other content.
Default mode, which indicates no preference for the decoding mode. The browser decides what is best for the user.
The intrinsic height of the image in pixels.
Indicates the relative importance of the resource. Priority hints are delegated using the values:

auto: Indicates no preference. The browser may use its own heuristics to decide the priority of the image.

high: Indicates to the browser that the image is of high priority.

low: Indicates to the browser that the image is of low priority.

This Boolean attribute indicates that the image is part of a server-side map. If so, the precise coordinates of a click are sent to the server.

Note: This attribute is allowed only if the <img> element is a descendant of an <a> element with a valid href attribute.

A string indicating which referrer to use when fetching the resource:
  • no-referrer: The Referer header will not be sent.
  • no-referrer-when-downgrade: No Referer header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent’s default behavior if no policy is otherwise specified.
  • origin: The Referer header will include the page of origin's scheme, the host, and the port.
  • origin-when-cross-origin: Navigating to other origins will limit the included referral data to the scheme, the host and the port, while navigating from the same origin will include the referrer's full path.
  • unsafe-url: The Referer header will include the origin and the path, but not the fragment, password, or username. This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins.
A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of:
  1. a media condition. This must be omitted for the last item.
  2. a source size value.

Source size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the srcset attribute, when those sources are described using width ('w') descriptors. The selected source size affects the intrinsic size of the image (the image’s display size if no CSS styling is applied). If the srcset attribute is absent, or contains no values with a width (w) descriptor, then the sizes attribute has no effect.

The image URL. This attribute is mandatory for the <img> element. On browsers supporting srcset, src is treated like a candidate image with a pixel density descriptor 1x unless an image with this pixel density descriptor is already defined in srcset, or unless srcset contains 'w' descriptors.
A list of one or more strings separated by commas indicating a set of possible image sources for the user agent to use. Each string is composed of:
  1. a URL to an image,
  2. optionally, whitespace followed by one of:
    • A width descriptor, or a positive integer directly followed by 'w'. The width descriptor is divided by the source size given in the sizes attribute to calculate the effective pixel density.
    • A pixel density descriptor, which is a positive floating point number directly followed by 'x'.

If no descriptor is specified, the source is assigned the default descriptor: 1x.

It is incorrect to mix width descriptors and pixel density descriptors in the same srcset attribute. Duplicate descriptors (for instance, two sources in the same srcset which are both described with '2x') are also invalid.

The user agent selects any one of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or bandwidth conditions. See our Responsive images tutorial for an example.

The intrinsic width of the image in pixels.
The partial URL (starting with '#') of an image map associated with the element.

Note: You cannot use this attribute if the <img> element is a descendant of an <a> or <button> element.

Deprecated attributes

The alignment of the image with respect to its surrounding context. This should no longer be used — use the float and/or vertical-align CSS properties instead. You can also use the object-position property to position the image within the element's box. The allowed values are:
Equivalent to vertical-align: top; or vertical-align: text-top;
Equivalent to vertical-align: -moz-middle-with-baseline;
The missing value default, equivalent to vertical-align: unset; or vertical-align: initial;
Equivalent to float: left;
Equivalent to float: right;
The width of a border around the image. You should use the border CSS property instead.
The number of pixels of white space to insert to the left and right of the image. You should use the margin CSS property instead.
A link to a more detailed description of the image. Possible values are a URL or an element id.

Note: This attribute is mentioned in the latest W3C version, HTML 5.2, but has been removed from the WHATWG’s HTML Living Standard. It has an uncertain future; authors should use a WAI-ARIA alternative such as aria-describedby or aria-details.

A name for the element. You should use the id attribute instead.
The number of pixels of white space to insert above and below the image. You should use the margin CSS property instead.

Styling with CSS

<img> is a replaced element; it has a display value of inline by default, but its default dimensions are defined by the embedded image's intrinsic values. You can set properties like border/border-radius, padding/margin, width/height, etc. on an image.

Often however it is a good idea to set images to display: block; so that you have maximum control over the styling (e.g. margin: 0 auto doesn't work on inline images, and it is easier to place images in context with surrounding elements when they are block-level).

<img> has no baseline, so when images are used in an inline formatting context with vertical-align: baseline, the bottom of the image will be placed on the container's baseline.

You can use the object-position property to position the image within the element's box, and the object-fit property to adjust the sizing of the image within the box (for example, whether the image should fit the box or fill it even if clipping is required).

Depending on its type, an image may have an intrinsic width and height. For some image types, however, intrinsic dimensions are not necessary. SVG images, for instance, may have no intrinsic dimensions if their root <svg> element doesn't have a width or height set on it.


Alternative text

The following simple example embeds an image into the page, and includes alternative text to improve accessibility.

<img src="https://developer.cdn.mozilla.net/media/img/mdn-logo-sm.png"
     alt="MDN logo — a dinosaur logo with the text MDN">

This example builds upon the previous one, showing how to turn the image into a link. It is very simple to do so — you just nest the <img> tag inside the <a>. One consideration is that you should made the alternative text describe the resource the link is pointing to.

<a href="https://developer.mozilla.org">
  <img src="https://developer.cdn.mozilla.net/media/img/mdn-logo-sm.png"
       alt="Visit the MDN site">

Using the srcset attribute

In this example we include a srcset attribute containing a reference to a high-resolution version of the logo; this will be loaded instead of the src image on high-resolution devices. The image referenced in the src attribute is counted as a 1x candidate in user agents that support srcset.

 <img src="mdn-logo-sm.png" 
      srcset="mdn-logo-HD.png 2x">

Using the srcset and sizes attributes

The src attribute is ignored in user agents that support srcset when 'w' descriptors are included. When the (max-width: 600px) media condition matches, the 200px wide image will be loaded (it is the one that matches 200px most closely), otherwise the other image will be loaded.

 <img src="clock-demo-thumb-200.png" 
      srcset="clock-demo-thumb-200.png 200w,
          clock-demo-thumb-400.png 400w"
      sizes="(max-width: 600px) 200px, 50vw">

Regulatory, security and privacy concerns

By default, the location of the page is added as the Referer header in the request to get the image.

You should not add or modify image elements on a page without first checking any privacy, security, and compliance requirements for the providing service to receive the location. You may need to audit your existing image elements.

An example security risk might be from a Reset Password page with a social media logo in the footer. If hosted by the social media site,  it would receive the Reset Password URL and it may still be usable, putting account compromise at an unnecessary risk.

An example privacy risk might be from a membership only page of a political party website. As if the target can identify the user requesting the inage, perhaps by an authentication cookie or tracking cookie, then the target, would then be aware of politically sensitive data about their visitor.

The risks are not just regarding third party hosts. For example, if the reset password page is serviced by a system that does not log requests with the full URL into a log aggregator for security reasons, then the logo image provider should likely avoid logging Referers into the same log aggregator.

Image elements have a history of contorversy, regarding their use as tracking pixels by analytics and advertising systems.

Accessibility concerns

Authoring meaningful alternate descriptions

An alt attribute's value should clearly and concisely describe the image's content. It should not describe the presence of the image itself, or the file name of the image. If the alt attribute is purposefully left off because the image has no textual equivalent, consider alternate methods for presenting the content the image is trying to communicate.


<img alt="image" src="penguin.jpg">


<img alt="A Rockhopper Penguin standing on a beach." src="penguin.jpg">

When an alt attribute is not present on an image, some screen readers may announce the image's file name instead. This can be a confusing experience if the file name isn't representative of the image's contents.

The title attribute

The title attribute is not an acceptable substitute for an alt attribute. Additionally, avoid duplicating the alt attribute's value in a title attribute declared on the same image. Doing so may cause some screen readers to announce the description twice, creating a confusing experience.

The title attribute should also not be used as supplemental captioning information to accompany an image's alt description. If an image needs a caption, use a combination of the figure and figcaption elements.

Technical summary

Content categories Flow content, phrasing content, embedded content, palpable content. If the element has a usemap attribute, it also is a part of the interactive content category.
Permitted content None, it is an empty element.
Tag omission Must have a start tag and must not have an end tag.
Permitted parents Any element that accepts embedded content.
Permitted ARIA roles Any
DOM interface HTMLImageElement


Specification Status Comment
Referrer Policy
The definition of 'referrer attribute' in that specification.
Candidate Recommendation Added the referrerpolicy attribute.
HTML Living Standard
The definition of '<img>' in that specification.
Living Standard  
The definition of '<img>' in that specification.
HTML 4.01 Specification
The definition of '<img>' in that specification.


Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
align Yes Yes Yes Yes Yes Yes
alt Yes Yes Yes Yes Yes Yes
border Yes Yes Yes Yes Yes Yes
crossorigin Yes Yes Yes Yes Yes Yes
decoding Yes ?63 No Yes No
height Yes Yes Yes Yes Yes Yes
hspace Yes Yes Yes Yes Yes Yes
ismap Yes Yes Yes Yes Yes Yes
longdesc Yes Yes Yes Yes Yes Yes
name Yes Yes Yes Yes Yes Yes
onerror Yes ?51 ? Yes Yes
referrerpolicy51 No50 No38 ?
sizes Yes Yes Yes Yes Yes Yes
src Yes Yes Yes Yes Yes Yes
srcset34 Yes


32 — 521

usemap Yes Yes Yes Yes Yes Yes
vspace Yes Yes Yes Yes Yes Yes
width Yes Yes Yes Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes Yes Yes Yes Yes
align Yes Yes Yes Yes Yes Yes Yes
alt Yes Yes Yes Yes Yes Yes Yes
border Yes Yes Yes Yes Yes Yes Yes
crossorigin Yes Yes Yes Yes Yes Yes Yes
decoding Yes Yes ?63 Yes No Yes
height Yes Yes Yes Yes Yes Yes Yes
hspace Yes Yes Yes Yes Yes Yes Yes
ismap Yes Yes Yes Yes Yes Yes Yes
longdesc Yes Yes Yes Yes Yes Yes Yes
name Yes Yes Yes Yes Yes Yes Yes
onerror Yes Yes ?51 Yes Yes Yes
referrerpolicy5151 No5038 ?5.0
sizes Yes Yes Yes Yes Yes Yes Yes
src Yes Yes Yes Yes Yes Yes Yes
srcset3434 Yes


32 — 521

218 Yes
usemap Yes Yes Yes Yes Yes Yes Yes
vspace Yes Yes Yes Yes Yes Yes Yes
width Yes Yes Yes Yes Yes Yes Yes

1. From version 32 until version 52 (exclusive): this feature is behind the dom.image.srcset.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.

See also