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 straightforward 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 $39 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.

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.