Codectionary / Developer documentation / HTML

<svg>

The <svg> element embeds Scalable Vector Graphics directly in HTML — vector-based images built from shapes, paths, and text rather than pixels, so they stay crisp at any size. Unlike canvas, SVG content is made of real DOM elements that can be styled with CSS and targeted with JavaScript individually, making it ideal for icons, logos, and interactive diagrams.

Syntax

<svg width="100" height="100">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>

Examples

Basic Shapes

Drawing a circle and rectangle with SVG.

<svg width="200" height="100">
  <rect x="10" y="10" width="80" height="80" fill="#3b82f6" />
  <circle cx="150" cy="50" r="40" fill="#10b981" />
</svg>

Inline Icon

A simple checkmark icon built with an SVG path.

<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  <path d="M20 6L9 17l-5-5" />
</svg>

Styling SVG with CSS

Applying CSS to individual SVG elements, including on hover.

<style>
  .icon-circle { fill: #6b7280; transition: fill 0.2s; }
  .icon-circle:hover { fill: #3b82f6; }
</style>
<svg width="60" height="60">
  <circle class="icon-circle" cx="30" cy="30" r="25" />
</svg>

Attributes

  • width (number): The rendered width of the SVG
  • height (number): The rendered height of the SVG
  • viewBox (string): Defines the internal coordinate system, enabling responsive scaling
  • fill (color): The fill color for shapes within the SVG

Best practices

  • Use viewBox so the SVG scales cleanly to any container size rather than being locked to fixed pixel dimensions
  • Prefer SVG over raster images (PNG/JPG) for icons and logos, since they stay sharp at any resolution and are typically smaller in file size
  • Add a title element inside the SVG and appropriate ARIA attributes for accessibility, especially for meaningful (non-decorative) graphics
  • Use CSS fill and stroke properties instead of hardcoding colors when the SVG needs to adapt to themes

Browser compatibility

Support applies to the named feature, not every attribute or behaviour in this article. Versions refer to browsers, not operating systems.

These records cover SVG features embedded in HTML, not a blanket guarantee for every SVG feature.

svg.elements.svg

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 2
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 2

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.circle

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 2
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 2

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.rect

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 2
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 2

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.path

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.text

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 2
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 2

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.svg.viewBox

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
CSS fill property

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 3
Safari
Supported
From 4
Edge
Supported
By 15 (possibly earlier)
Opera
Supported
From 15

Mobile

Safari on iOS
Supported
From 3.2
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 1

Firefox

  • From 3

Safari

  • From 4

Edge

  • By 15 (possibly earlier)

Opera

  • From 15

Safari on iOS

  • From 3.2

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.svg.width

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg.elements.svg.height

Desktop

Chrome
Supported
From 1
Firefox
Supported
From 1.5
Safari
Supported
From 3
Edge
Supported
From 12
Opera
Supported
From 8

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 1

Firefox

  • From 1.5

Safari

  • From 3

Edge

  • From 12

Opera

  • From 8

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
svg — fill attribute

Desktop

Chrome
Unknown
Firefox
Unknown
Safari
Unknown
Edge
Unknown
Opera
Unknown

Mobile

Safari on iOS
Unknown
Chrome for Android
Unknown
Firefox for Android
Unknown
Samsung Internet
Unknown

No single verified compatibility record for this topic. Use the feature-specific articles; no browser support is inferred.

MDN BCD 8.1.5 · Dataset built 2026-10-08 · Mapping reviewed 2026-10-21. These dates are not individual browser-test or claim-verification dates. Unknown means the data does not establish support.

HTML Living Standard

Specifications & further reading