# Convert SVG to PNG on Mac: 4 Free Ways, No Upload

> Convert SVG to PNG on your Mac for free, with no upload: Preview, one built-in Terminal command, your browser or rsvg-convert. Plus batch export at a set size.

Source: https://picmal.app/blog/convert-svg-to-png-mac

**Your Mac can already do this, for free, in about ten seconds.** Right-click the SVG, open it with Preview, then choose File > Export and set Format to PNG. If you want a specific pixel width, run `qlmanage -t -s 1024 -o . icon.svg` in Terminal instead. Neither needs an app, an upload, or an account.

That covers most cases. The rest of this page is for when it isn't enough: keeping a transparent background, hitting an exact size, or converting a folder of 200 icons at once.

An SVG has no fixed pixel dimensions. A PNG does. So the real question is never "convert this", it's "convert this at what size?" Pick the size deliberately and the rest is easy.

## Method 1: Preview (built in, no install)

Preview is already on your Mac and handles most SVGs fine. Its SVG support is basic, so very complex files using filters, masks, or embedded fonts can render oddly, but for icons and illustrations it's the fastest route.

1. Right-click the SVG file → Open With → Preview
2. File → Export
3. Set Format to PNG
4. Adjust the resolution if needed (default is 72 DPI, bump to 144 for retina, 300 for print)
5. Save

**Limitation:** Preview renders the SVG at its default viewport size. If the SVG is defined as 100×100, you get a 100×100 PNG. There's no simple way to upscale during export without changing the resolution setting.

**Best for:** One file, no particular size requirement.

## Method 2: Terminal with qlmanage (built in, exact width)

`qlmanage` is the Quick Look tool that ships with macOS, and it will rasterise an SVG at a width you choose. Nothing to install.

```bash
qlmanage -t -s 1024 -o . icon.svg
```

`-s 1024` sets the width in pixels, `-o .` writes the result to the current folder. You get `icon.svg.png`, so rename it if the double extension bothers you.

To convert a folder:

```bash
for f in *.svg; do qlmanage -t -s 512 -o . "$f"; done
```

**Limitation:** `qlmanage` renders through Quick Look, so it inherits Quick Look's SVG quirks. Check the output on a complex file before trusting it on 200 of them. It also insists on the `.svg.png` naming.

**Best for:** An exact pixel width, without installing anything.

## Method 3: Browser (best rendering quality)

Your browser is quietly one of the best SVG renderers on your machine. Chrome, Safari, and Firefox all render SVGs with precision.

1. Open the SVG file in your browser (drag it onto the browser window or File → Open)
2. Right-click the image → "Save Image As" or take a screenshot

For precise control:

1. Open the SVG in the browser
2. Open Developer Tools (Cmd+Option+I)
3. Find the `<svg>` element and change its `width` and `height` attributes to the size you want
4. Take a screenshot of the rendered image (Cmd+Shift+4, then Space, then click the window)

This gives you a pixel-perfect PNG at any resolution. It's manual, but the rendering quality is the best of any option here, because browsers have the most complete SVG engines on your machine.

**Best for:** One file that has to look exactly right.

## Method 4: Terminal with rsvg-convert (best for scripts)

`qlmanage` covers most command line needs, but if you're scripting something that has to be reliable across complex SVGs, `rsvg-convert` is the sturdier tool:

```bash
brew install librsvg
```

**Single file:**

```bash
rsvg-convert -w 1024 input.svg -o output.png
```

**Entire folder at 512px wide:**

```bash
for f in *.svg; do rsvg-convert -w 512 "$f" -o "${f%.svg}.png"; done
```

The `-w` flag sets the width and height scales proportionally. You can also use `-h` for height. `rsvg-convert` handles complex SVGs well, including gradients, text, and filters, which is where `qlmanage` sometimes wobbles.

**Best for:** Scripts, CI pipelines, and SVGs the built-in tools render badly.

## When a free method stops being worth it

All four options above are free and all four work. Which one you need depends on the job:

- **One SVG, any size:** use Preview. Don't overthink it.
- **One SVG, exact size:** use `qlmanage`, or the browser if it has to be perfect.
- **A folder of SVGs, one size:** the `for` loop above does it fine. It's two lines and it costs nothing.
- **A folder of SVGs, several sizes, repeatedly, as part of your actual job:** this is where the loops get old. Different sizes mean re-running with different flags, the `.svg.png` renaming piles up, and you're checking output by hand each time.

That last case is what [Picmal](https://picmal.app) is for. Drag the files in, pick PNG, set a width, convert. It rasterises at the size you specify rather than upscaling a small default render, keeps the alpha channel, and names the files properly. It's $29 once. If you convert SVG assets a few times a year, stick with the Terminal loop.

If the SVG is an app icon and you need the full set of Mac sizes, the [app icon generator for Mac](/app-icon-generator-mac) builds it from one image.

## Which method to choose

| Situation | Method |
|-----------|--------|
| One simple SVG | Preview (free, built in) |
| Exact pixel width, nothing installed | `qlmanage` (free, built in) |
| Rendering has to be perfect | Browser (free) |
| Scripting or CI pipeline | `rsvg-convert` (free) |
| Folders of assets at several sizes, often | [Picmal](https://picmal.app) |

If you're converting other formats too, not just SVG, the [image converter for Mac](/image-converter-mac) page covers the rest of them.

## FAQ

### Does converting SVG to PNG lose quality?

Not if you convert at the right size. SVGs are vector, infinitely scalable. Converting to PNG freezes the image at a specific pixel size. As long as that size is large enough for your use case, the output looks identical. If you later need it bigger, go back to the SVG and re-export rather than upscaling the PNG.

### How do I keep the transparent background?

PNG supports transparency natively. If your SVG has a transparent background (no background rectangle), the PNG will too. All methods listed here preserve transparency. Make sure to choose PNG, not JPEG: JPEG doesn't support transparency and will fill the background with white.

### What size should I export the PNG at?

It depends on where you're using it. For web images: 1x or 2x the display size (e.g., 200px displayed → export at 400px). For app icons: follow Apple's icon size requirements (1024×1024 for the App Store). For print: 300 DPI at the physical print size.

### Can I batch convert SVGs to PNG at multiple sizes?

Yes, and you don't need to pay for it. Run the loop once per size:

```bash
for f in *.svg; do qlmanage -t -s 512 -o . "$f"; done
for f in *.svg; do qlmanage -t -s 1024 -o . "$f"; done
```

`rsvg-convert` works the same way using `-w`. [Picmal](https://picmal.app) does it without the Terminal and names the files properly, but nothing here requires it.

### Can I convert SVG to PNG on a Mac without installing anything?

Yes. Preview ships with macOS and exports SVG to PNG through File > Export. For an exact pixel width, `qlmanage -t -s 1024 -o . icon.svg` in Terminal is also built in. There's no reason to upload an SVG to a conversion website.
