# Attribute “xmlns:inkscape” not allowed here.

> Canonical HTML version: https://rocketvalidator.com/html-validation/attribute-xmlns-inkscape-not-allowed-here
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

The `xmlns:inkscape` attribute declares the namespace Inkscape uses for its own editor data, and HTML doesn't allow prefixed namespace declarations on `<svg>` or any other element.

Inkscape's default file format, Inkscape SVG, puts `xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"` on the root `<svg>` element. The prefix marks attributes that only Inkscape reads: `inkscape:version` records the release that saved the file, and `inkscape:groupmode="layer"` with an `inkscape:label` turns a `<g>` into a named layer. Inkscape 0.92 also writes `inkscape:connector-curvature="0"` on paths, and `inkscape:export-filename` remembers where the last PNG export went. Browsers ignore all of them, so the image looks the same without them.

In an HTML page the declaration does nothing. The HTML parser doesn't handle namespace prefixes, so `xmlns:inkscape` is a plain attribute with a colon in its name, and the validator reports it on any element that carries it. Each `inkscape:` attribute gets its own message as well, such as `Attribute "inkscape:version" not allowed on element "svg" at this point.` Inkscape SVG files usually declare `xmlns:sodipodi` next to it, for attributes like `sodipodi:docname`, and the validator reports that declaration separately.

Delete `xmlns:inkscape` and every attribute that starts with `inkscape:`. Removing only the declaration leaves the attribute errors behind. The layers turn into plain groups and lose their labels, so if a stylesheet or script needs to find one, use the group's `id` (Inkscape assigns ids like `layer1`) or add a `class`.

When you clean up a standalone `.svg` file, remove the declaration and the attributes together. Delete `xmlns:inkscape` but leave a single `inkscape:label` behind, and the file stops being well-formed XML, because it uses a prefix it never declares. Browsers then refuse to display it (Firefox reports an "unbound prefix").

To get a copy without the Inkscape markup, use File > Save a Copy and choose Optimized SVG or Plain SVG. Optimized SVG runs Scour, which strips editor data unless you check its "Keep editor data" option. Plain SVG drops the `inkscape:` and `sodipodi:` markup but still writes `xmlns:svg`, which the validator also rejects.

Keep the Inkscape SVG as the file you edit. A copy without the editor data reopens without its layers, and shapes drawn with the star tool come back as plain paths. If a build step inlines your SVGs, SVGO removes the same markup with `removeEditorsNSData`, which is part of its default preset.

## Invalid example

```html
<svg xmlns="http://www.w3.org/2000/svg"
  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  inkscape:version="1.3.2"
  width="24" height="24" viewBox="0 0 24 24">
  <g inkscape:label="Icon" inkscape:groupmode="layer" id="layer1">
    <path d="M5 12l5 5L20 7" fill="none" stroke="currentColor" stroke-width="2" />
  </g>
</svg>
```

## Valid example

```html
<svg xmlns="http://www.w3.org/2000/svg"
  width="24" height="24" viewBox="0 0 24 24">
  <g id="layer1">
    <path d="M5 12l5 5L20 7" fill="none" stroke="currentColor" stroke-width="2" />
  </g>
</svg>
```
