# Bad value “https://www.w3.org/2000/svg” for the attribute “xmlns” (only “http://www.w3.org/2000/svg” permitted here).

> Canonical HTML version: https://rocketvalidator.com/html-validation/bad-value-https-www-w3-org-2000-svg-for-the-attribute-xmlns-only-http-www-w3-org-2000-svg-permitted-here
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

An XML namespace URI is a unique identifier, not an actual web address that your browser fetches. The SVG namespace was defined as `http://www.w3.org/2000/svg` in the original SVG specification, and that exact string is what HTML parsers and validators expect. Even though using `https` everywhere is a best practice for real network requests, namespace URIs are not network requests — they are simply fixed strings used to identify which XML vocabulary an element belongs to.

When you write `https://www.w3.org/2000/svg` instead of `http://www.w3.org/2000/svg`, the validator sees an unrecognized namespace. This can also cause problems in certain XML-based contexts (such as XHTML or standalone SVG files), where the browser may fail to recognize the element as SVG at all, resulting in your graphics not rendering. In standard HTML5 mode, most browsers will still render inline SVGs correctly regardless of the `xmlns` value, but the markup is technically invalid and may cause issues in stricter parsing environments like XML serializers, server-side renderers, or tools that process SVG as XML.

This mistake is especially common because many developers reflexively change `http` to `https` — or their editor or linter automatically does — when they see a URL-like string. The same principle applies to other namespace URIs like `http://www.w3.org/1999/xhtml` for HTML and `http://www.w3.org/1998/Math/MathML` for MathML. These are all fixed identifiers that must not be altered.

## How to Fix It

Replace `https://` with `http://` in the `xmlns` attribute value. That's it — no other changes are needed.

If your project uses automated tooling that rewrites `http` URLs to `https`, you may need to configure an exception for XML namespace URIs.

## Examples

### ❌ Incorrect: Using `https` in the namespace URI

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

This triggers the validation error because `https://www.w3.org/2000/svg` is not a recognized namespace value.

### ✅ Correct: Using `http` in the namespace URI

```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 HTML without `xmlns`

When embedding SVG directly inside an HTML5 document, the `xmlns` attribute is optional — the HTML parser automatically assigns the correct namespace to `<svg>` elements:

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

This is perfectly valid HTML5. You only need the `xmlns` attribute when the SVG is served as a standalone `.svg` file or used within an XHTML document.
