Converter · No upload
SVG to PNG, privately
Drop in SVG drawings and download a PNG of each one, drawn by your browser at the size the file declares — or at twice, three times or four times it. Transparency is kept. The conversion runs entirely inside your browser — nothing is uploaded, the network meter below proves it live, and it keeps working with your wifi switched off.
A picture of the drawing, not vector shapes, at the scale you pick (1× by default); the row prints the pixels, and says when the scale was reduced to fit the pixel limit or a source was animated (first frame only). A file that reaches outside itself is refused by name, naming the reference; so are a script, a <foreignObject>, a compressed SVG and one with no size. Fonts are the device's. Alpha is kept. Takes .svg.
How this converter works
An SVG is a description of a drawing and a PNG is a grid of pixels, so the conversion is a rendering rather than a translation. This page reads your file as text, takes the size the root element declares — width and height in any of the units the format allows, or the viewBox when those are absent — and writes that size back onto a copy as explicit pixel dimensions, because a browser asked to guess the size of an unsized SVG answers 300 × 150 and this page never lets that guess reach the output. The copy is handed to your browser's own SVG renderer as an in-memory image and drawn onto a canvas at the multiple you chose; drawing the image at its destination size re-renders the shapes at that size rather than stretching a small bitmap, which is why 4× is crisp rather than blurred. The canvas is then encoded to PNG with its alpha channel intact, and the row prints the exact pixel size that came out. Nothing in that path touches the network: the file is already on your machine and this site has no server to send it to.
The best evidence for that is not our instrument but your browser's. Press F12, open the Network tab, leave it visible, and run a conversion. Nothing gets added to the list. That panel is written by the people who make your browser, it records what a page actually does rather than what a page claims, and no code of ours can quiet it. This converter has one refusal that exists to keep that panel honest: an SVG loaded as an image is not allowed to fetch, so a file that references an image, a font or a stylesheet outside itself — at a web address or on a file path — renders with a grey placeholder, a blank, or a substituted font and makes no request at all, which means the meter would read zero on a drawing that came out incomplete. Files like that are refused before anything is drawn, with the reference named on the row, and a file containing a script is refused the same way because nothing from your file is ever run. A file that embeds HTML in a foreignObject is refused for a different reason: the browser will not let this page read the pixels back from one. Compare notes with the methodology page, which sets out two further ways to catch us.
The honest limits: the PNG is a picture of your drawing, not the drawing. Shapes and text become pixels at the multiple you chose, so the output has one fixed size and does not scale further without softening — keep the SVG for anything that has to be re-rendered later, and use SVG to PDF when you want a page rather than an image. Text is drawn with the fonts installed on this device, so a font the file names but does not carry is substituted silently, the substitute is what ends up in the PNG, and the same file can therefore come out differently on someone else's machine. Scripts inside an SVG never run, and an animated one is drawn at time zero, so a SMIL animation keeps only its first frame and the row says so — measured, a rect animating from red to blue came out red. A compressed .svgz is refused as what it is rather than decompressed, as is a file with no width, height or viewBox, because there is no honest size to give it. A browser canvas has a pixel limit — 268,435,456 pixels and 32,767 to a side is what this page allows, measured in Chrome, which hands back nothing at all past its own limit rather than an error — so a large drawing at a high multiple is rendered at the largest scale that fits, with the row saying which, and one that does not fit at 1× is refused rather than saved blank. Transparency survives: the PNG carries an alpha channel, which is the one thing SVG to JPG cannot do.