The SVG script element allows to add scripts to an SVG document.

While SVG's script element is equivalent to the HTML <script> element, it has some discrepancies, like it uses the href attribute instead of src and it doesn't support ECMAScript modules so far (See browser compatibility below for details)

<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
  // <![CDATA[
  window.addEventListener('DOMContentLoaded', () => {
    function getColor () {
      const R = Math.round(Math.random() * 255).toString(16).padStart(2,'0')
      const G = Math.round(Math.random() * 255).toString(16).padStart(2,'0')
      const B = Math.round(Math.random() * 255).toString(16).padStart(2,'0')
      return `#${R}${G}${B}`

    document.querySelector('circle').addEventListener('click', (e) => {
      e.target.style.fill = getColor()
  // ]]>

  <circle cx="5" cy="5" r="4" />


This attribute defines CORS settings as define for the HTML <script> element.
Value type<string>; Default value: ?; Animatable: yes
The URL to the script to load.
Value type: <URL> ; Default value: none; Animatable: no
This attribute defines type of the script language to use.
Value type<string>; Default value: application/ecmascript; Animatable: no
xlink:href This deprecated API should no longer be used, but will probably still work.
The URL to the script to load.
Value type: <URL> ; Default value: none; Animatable: no

Global attributes

Core Attributes
Most notably: id
Styling Attributes
class, style
Event Attributes
Global event attributes, Document element event attributes

Usage notes

Permitted contentAny elements or character data


Specification Status Comment
Scalable Vector Graphics (SVG) 2
The definition of '<script>' in that specification.
Candidate Recommendation
Scalable Vector Graphics (SVG) 1.1 (Second Edition)
The definition of '<script>' in that specification.
Recommendation Initial definition

Browser compatibility

BCD tables only load in the browser

See also