1. Home
  2. Tutorials
  3. When right-click fails

Tutorial — the greyed-out menu

How to save an SVG when right-click won’t let you

You right-click the icon and there is no Save image as… at all. Nothing is broken and you have not missed a setting — the browser genuinely does not think that thing is an image.

Watch it — 19 seconds

Saving what the menu won’t offer

tutorial · no right-click
Every icon on this page refuses the save menu. All 24 come out anyway.

The recording opens on a page where not one icon offers a save option. That is not an unusual page — it is how most icon systems ship.

What the recording shows

  1. Save image as… is missing on every icon here
  2. The extension reads the DOM instead of the menu
  3. Inline, CSS background, sprite, img — all found
  4. Pick the one you actually want
  5. Name it
  6. Saved — a real vector, not a screenshot

The actual reason

The browser only offers to save things it can fetch

Save image as… appears when the browser has an image with an address it can request. That is a narrower category than it looks, and modern icon systems fall outside it almost entirely. There are four places an SVG hides on a page, and only one of them plays nicely.

  • Inline <svg>. The markup is written straight into the HTML. No src, no URL, nothing to fetch — so the menu offers nothing. This is how the great majority of icons ship today. How it is read →
  • CSS background-image. The vector is set in a stylesheet, often as an inline data: URI. The browser files it under decoration rather than content. How it is read →
  • Sprite <use> references. One hidden sprite holds every icon; each place an icon appears is just a pointer into it. Saving the pointer gives you an empty file. How it is read →
  • <img> and <object> sources. The friendly case — and even here the source may be a data: URI the save dialog mangles, or a cross-origin URL that saves under a meaningless name.

So three of the four cannot be saved that way even in principle. Reading the DOM works on all four, because by then every one of them has been resolved into actual markup by the browser itself.

Saving it anyway

You do not need to know which of the four you are looking at. That is the point.

  1. Leave the right-click menu alone. If Save image as… is missing or greyed out, no amount of retrying will summon it. The absence is information, not a fault.
  2. Open the popup. Click the toolbar button on the page. The scan resolves all four sources into standalone markup — inline, CSS background, sprite reference and image source alike.
  3. Preview to identify the right one. The isolated preview is the fastest way to distinguish two similar icons, especially in a set where the page shows them at 16px.
  4. Name it and save. Type a filename and press Download current. The namespace is repaired on the way out, so the file opens in Figma, Illustrator and every browser.

Things that look like fixes but are not

  • Screenshotting it. This converts a resolution-independent vector into a fixed grid of pixels, permanently. It will blur the moment anyone scales it, and it cannot be recoloured. The full comparison →
  • Copying markup out of DevTools. This does work, but it is fiddly, and the markup you copy is missing the xmlns namespace, so the resulting file will not open until you add it by hand. If you want the markup rather than a file, Copy code does the same job with the namespace already fixed.
  • Hunting for the file in the Network tab. Fine for <img> sources. Useless for the other three, because no request was ever made — the markup arrived inside the HTML document.
Why it fails
Three of the four SVG sources have no fetchable address.
What works
Reading the rendered DOM, where all four have resolved to real markup.
Bonus
The missing xmlns is repaired, so the file actually opens.
Also see
A faster one-icon route · Inline SVG

Good to know

Frequently asked

Why is Save image as… greyed out on an SVG?

Because the browser does not classify that element as a fetchable image. Inline SVG markup, CSS background images and sprite references have no address behind them, so there is nothing for the menu item to act on.

Is there a browser setting that turns this on?

No. It is not a permission or a preference — the menu item is absent because the underlying thing genuinely is not a saveable image resource. Reading the page is the way around it.

Can I just take a screenshot instead?

You can, but you lose the entire point of a vector. A screenshot is a fixed grid of pixels that blurs when scaled and cannot be recoloured. The saved SVG stays sharp at any size and can be restyled.

What about copying the markup from DevTools?

That works, but the markup you copy usually lacks the xmlns namespace, so the file will not open until you add it by hand. The extension repairs that automatically.

Does this work on every website?

On any page you can open in Chrome 88+, Edge or Brave. It cannot reach browser-internal pages, extension galleries, or content behind a login you do not have.


The menu said no. Take it anyway.

Four hiding places, one scan, and a file that actually opens.