ByteScope

SVG to PNG

Draw an SVG onto a bitmap once, then save PNG — knowing you cannot scale it back into paths.

Your files never leave your browser — all processing is local.

convert to
resize
PNG is lossless — no quality setting

✓ EXIF, GPS and all other metadata are removed from the output.

Drop images here

or click to browse — PNG, JPEG, WebP, GIF, HEIC, AVIF, SVG — you can also paste images (Ctrl+V) anywhere on this page

Why convert SVG to PNG?

What an SVG loses on the way to PNG

The conversion is a rasterization, not a repackaging. Chrome cannot createImageBitmap from an SVG blob, so ImageConvertTool.rasterizeSvg loads the file with new Image(), draws it onto a canvas at the image's naturalWidth and naturalHeight, and transfers that bitmap into the worker. From that moment the output is pixels. Paths, groups, viewBox, currentColor, and any CSS that still needed the SVG tree are gone. Scaling the PNG later interpolates those pixels; it does not re-run the vector renderer. That is irreversible even though PNG itself is lossless for the bitmap it was handed.

Size is decided before encoding. If naturalWidth or naturalHeight is 0 — an SVG with no intrinsic size — rasterizeSvg forces 1024 × 1024 and the UI shows svgNoSizeWarning. apps/web/public/og.svg declares width 1200 and height 630, so the measured run used 1200 × 630 rather than the fallback. Text in the SVG is painted as pixels in whatever font the renderer actually used. This code never fetches a font file or an external image href: it only draws what the browser's image decoder produced from the SVG bytes. Whether a @font-face URL or an external PNG inside the SVG appears is therefore the browser's SVG-as-image policy, not something the converter implements.

Animation is skipped on purpose. Because a pre-rasterized bitmap is sent to the worker, convert.worker.ts does not open an ImageDecoder animation probe for SVG. SMIL or CSS animation in the source cannot become APNG. One canvas snapshot is encoded.

How the file size changed in a measured run

On 2026-09-13 the script read apps/web/public/og.svg (1,809 bytes) and rasterized it at 1200 × 630 with sharp/librsvg, then "optimize (oxipng)" on: 63,223 bytes. That checkbox is off by default on this page, so converting with the settings as they load usually produces a larger PNG. That is about 35 times the vector file, which is expected: the SVG is text, the PNG stores a 1200 × 630 photograph-sized bitmap of a dark card with type. Node's rasterizer is not the browser's new Image() plus canvas, so the byte count can differ when fonts substitute. The dimensions match what rasterizeSvg would use for this file's width and height attributes. A tiny logo SVG will not produce a 63 KB PNG; this sample is the site's 1200 × 630 Open Graph drawing.

When you should not convert SVG to PNG

Do not convert a logo or icon you still need at every size: the PNG is one resolution, and the SVG was the master. Do not convert if the picture must stay editable as paths or text. Do not convert an SVG whose meaning depends on external fonts or images unless you have already inlined them and checked the snapshot, because this tool does not fetch those extras. PNG is the right target when a CMS, an email client, or an <img> host refuses SVG, or when you need a single bitmap for a raster editor. Keep the SVG beside the PNG.

Conversion happens entirely in your browser — no upload, no queue, no watermark. Drop in as many files as you like and download them individually or as a zip.

Frequently asked questions

Can I scale the PNG later and keep the SVG sharp?

No. Sharp edges in the PNG are pixels at the rasterized size. Enlarging interpolates them. Keep the SVG if you still need arbitrary scale; use PNG when a host will not take the vector file.

What size is used when the SVG has no width or height?

If naturalWidth or naturalHeight is 0, rasterizeSvg draws at 1024 × 1024 and shows the no-intrinsic-size warning. Files that declare width and height, such as public/og.svg at 1200 × 630, use those dimensions instead.

Do SMIL or CSS animations in the SVG become an animated PNG?

No. The main thread snapshots one bitmap and the worker skips the animation probe whenever msg.bitmap is set. Only that still is encoded.

Are my images uploaded anywhere?

No. Conversion happens inside your browser using the canvas API and a Web Worker — files never leave your device. There is no upload step, no queue and no file size limit beyond your machine's memory.

Is EXIF metadata kept in the converted image?

No — and that's a feature. Re-encoding through the canvas strips all metadata: GPS location, camera model, timestamps and color profiles. The output contains pixels only, which is usually what you want before sharing an image publicly.

Can I convert many images at once?

Yes. Drop or paste any number of files; each is converted in the background with its own progress and download button, and you can grab everything at once as a .zip archive.

Will converting lower my image quality?

It depends on the target. The converter always decodes to raw pixels and re-encodes, whichever formats are involved, which is also how metadata gets stripped. For lossless targets (PNG, and GIF within its 256-color limit) the pixels stay identical to what was decoded; for JPEG, WebP and AVIF the quality slider controls the trade-off, and converting a file that is already lossy adds one more generation of loss.