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.

One thing worth understanding first, because it explains every problem people hit with SVG to PNG: 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 clean 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)

This is the one most people don’t know about. qlmanage is the Quick Look tool that ships with macOS, and it will rasterise an SVG at a width you choose. Nothing to install.

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:

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:

brew install librsvg

Single file:

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

Entire folder at 512px wide:

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. Be honest about which situation you’re in before paying for anything:

  • 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 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, and if you convert SVG assets a few times a year the Terminal loop is genuinely the better answer.

Which method to choose

SituationMethod
One simple SVGPreview (free, built in)
Exact pixel width, nothing installedqlmanage (free, built in)
Rendering has to be perfectBrowser (free)
Scripting or CI pipelinersvg-convert (free)
Folders of assets at several sizes, oftenPicmal

If you’re converting other formats too, not just SVG, the image converter for Mac page covers the rest of them.

If the PNG comes out wrong

The three failures people actually hit, and the fix for each:

  • Blank or black output. The SVG references an external stylesheet or image that the renderer can’t load. Open it in a browser (which can load those) and export from there, or inline the styles into the file.
  • Missing text, wrong font. The SVG uses a font that isn’t installed on your Mac, so the renderer substitutes or drops it. Install the font, or ask whoever made the file to export with text converted to outlines.
  • Gradients, filters, or masks render oddly. That’s Preview and qlmanage hitting the limits of Apple’s SVG engine. Use the browser method or rsvg-convert, both handle the full spec far better.
  • The PNG is enormous. An SVG is a few KB of text, but a PNG at 2x or 3x is real pixels, and a full-page illustration can land at several MB. Export at the size you actually need, then compress an image on Mac to get it down further without touching the dimensions.

If a file fails in one tool, try another before assuming the SVG is broken. The four methods above use three different rendering engines, and one of them almost always gets it right.

What about SVG to JPG?

Every method above works for JPG too. Wherever the steps say to pick PNG, pick JPEG instead: Preview’s export dialog offers both, qlmanage -t writes PNG only so you’d export from Preview or a browser instead, and rsvg-convert needs a second step (rsvg-convert -w 1200 logo.svg | magick png:- logo.jpg).

The catch is transparency. JPG has none. An SVG with a transparent background becomes a JPG with a solid background, usually black or white depending on the tool, and you don’t get a say in it from Preview. That’s why logos and icons should be PNG or stay SVG.

Pick JPG only when the SVG is a full-bleed illustration with a background already, and the file is going somewhere that won’t take PNG or SVG. Otherwise PNG is the right target, and it’s why the rest of this guide assumes it.

Going the other direction, from a photo or logo image to a real vector, is a different job: see the vectorize docs.

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:

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 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.

How do I save an SVG as a PNG?

Saving and exporting are the same thing here. Preview just labels the command Export. Open the SVG in Preview, choose File > Export, set Format to PNG, pick a folder, and save. That’s Method 1 above, in full.

If you went looking for a Save As option that changes the format and couldn’t find one, that’s why. Preview doesn’t have one. Export is what you wanted.

How do I convert a PNG back to an SVG on a Mac?

That’s a different job, called vectorizing, and it isn’t a format swap. A PNG is pixels. An SVG is shapes. So something has to trace the pixels and guess at the shapes underneath. It works well on flat logos and line art, and badly on photos. Picmal has a Vectorize tool for it.