# Attribute with the local name “xmlns:svg” is not serializable as XML 1.0.

> Canonical HTML version: https://rocketvalidator.com/html-validation/attribute-with-the-local-name-xmlns-svg-is-not-serializable-as-xml-1-0
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The `xmlns` attribute defines the XML namespace for an element. For SVG, the correct namespace is `http://www.w3.org/2000/svg`, declared with `xmlns="http://www.w3.org/2000/svg"`. The `xmlns:svg` attribute attempts to declare an additional *prefixed* namespace binding — essentially mapping the prefix `svg:` to the same namespace URI. This is redundant because the default (unprefixed) namespace already covers all SVG elements.

In HTML5, the parser handles namespaces internally. The HTML specification only permits a small set of namespace attributes: `xmlns` on certain elements (like `<svg>` and `<math>`) and `xmlns:xlink` for legacy compatibility. Arbitrary prefixed namespace declarations like `xmlns:svg` are not part of the HTML serialization format. The W3C validator raises this error because attributes containing colons in their local names (other than the specifically allowed ones) cannot be round-tripped through the HTML parser and serializer — they are "not serializable as XML 1.0."

## Why this matters

- **Standards compliance:** HTML5 has strict rules about which namespace declarations are permitted. Using `xmlns:svg` violates these rules.
- **Serialization issues:** If a browser parses the HTML and then re-serializes it (e.g., via `innerHTML`), the `xmlns:svg` attribute may be lost, altered, or cause unexpected behavior because it falls outside the serializable attribute set.
- **Redundancy:** Even in pure XML/SVG documents, declaring `xmlns:svg="http://www.w3.org/2000/svg"` alongside `xmlns="http://www.w3.org/2000/svg"` is unnecessary. The default namespace already applies to the `<svg>` element and all its unprefixed descendants.

## How to fix it

1. Locate the `<svg>` element (or any element) that contains the `xmlns:svg` attribute.
2. Remove `xmlns:svg="http://www.w3.org/2000/svg"` entirely.
3. Ensure the standard `xmlns="http://www.w3.org/2000/svg"` attribute remains if needed (note that when embedding SVG inline in an HTML5 document, even `xmlns` is optional since the HTML parser infers the namespace automatically).

## Examples

### Incorrect: redundant prefixed namespace declaration

```html
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>
```

The `xmlns:svg` attribute triggers the validation error because it is not serializable in HTML.

### Correct: standard namespace only

```html
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>
```

### Correct: inline SVG in HTML5 without any namespace attribute

When SVG is embedded directly in an HTML5 document, the HTML parser automatically assigns the correct namespace, so you can omit `xmlns` altogether:

```html
<svg viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>
```

This is perfectly valid and is the most common pattern for inline SVG in modern HTML. The `xmlns` attribute is only strictly necessary when the SVG is served as a standalone XML file (with a `.svg` extension or an `image/svg+xml` content type).
