SVG to JPG
JPEG will take the drawing, but not the empty space around it.
SVG to JPG rasterises the drawing at the size the file itself declares and hands back a JPEG that opens on any machine made in the last thirty years. Anything transparent arrives as a solid fill, since JPEG has no alpha channel. The work is done in this tab, and nothing is uploaded.
The file never leaves this tab. Reading it, decoding it and writing the result all happen on your machine, and you can prove it by turning your network off and using the tool anyway.
The tool
Drop an image here
Or paste one, or choose a file. Several at once is fine.
The conversion happens on your machine, in this tab, which is why it needs JavaScript to happen at all. There is no server here that could do it instead.
This conversion
A drawing with no size meets a format for photographs.
An SVG carries no pixels at all, so it has no true size; the width, height and viewBox attributes only describe the coordinate space the shapes live in. A logo drawn that way prints at billboard size and at 16 pixels from the same file. That is exactly why designers hand it over, and also why so many systems reject it: a print portal or a marketplace listing wants pixels it can measure, and JPEG is the format they all assume.
A JPEG is accepted by systems that have never heard of SVG, and that is the point of making one. What JPEG is poor at is exactly what most SVGs contain: flat colour with hard edges is the case its compression handles worst and PNG's handles best, so a JPEG of a logo can come out both larger and worse looking than a PNG of the same drawing. Transparency goes as well, so whatever was clear arrives on a solid background. The pixel size is taken from the file's own width and height, or from its viewBox, capped at 4096 on the longest side, so set the dimensions in the SVG before it arrives here.
Where the file goes
Nowhere.
Most converters you find by searching are an upload form. You hand over the file, a server converts it, and you take it on trust that the copy was deleted. Nothing about converting an image requires any of that, so this does not do it.
There is no server
The page makes no request while it converts. There is no call to fetch, XMLHttpRequest, WebSocket, EventSource or sendBeacon anywhere in the converter, and nothing is written to cookies, local storage, session storage or a database.
The metadata comes out
A photo from a phone carries the coordinates of where you were standing, the second you took it and the camera that took it. That is removed by default, and the result tells you what was in there so the choice is yours rather than a surprise.
You can check it yourself
Turn your network off and convert something. It works. The single file build further down this page goes one better: you download it once and open it from your own disk, with no connection at all.
The code is readable
The converter is a separate open source package with no runtime dependencies, published under the MIT licence. The privacy claim is a property of code you can read rather than a promise you have to accept.
Formats
What goes in, and what comes out.
The common ones are here because people need them. The awkward ones are here because somebody with a scanned TIFF, a Photoshop file or a folder of camera raws has nowhere else to go that does not want an upload first.
Reads
HEIC and HEIF, PNG, APNG, JPEG, JPEG XL, WebP, AVIF, GIF, BMP, ICO, TIFF, Photoshop PSD and PSB, camera raw, DDS, Radiance HDR, OpenEXR, PCX, Apple icon suites, Sun raster, XBM, XPM, QOI, TGA, PNM and farbfeld, plus SVG rendered by the browser. The format is worked out from the bytes rather than the file name, because a photo shared through a chat app often arrives called image.jpg with HEIC inside it.
Writes
PNG, APNG, JPEG, WebP, AVIF, GIF, TIFF, BMP, ICO, Apple icon suites, PCX, Sun raster, XBM, XPM, Radiance HDR, OpenEXR, QOI, TGA, PNM and farbfeld. WebP is unavailable in Safari, which has never supported writing it, and AVIF needs a browser with an AV1 encoder, which Chrome and Edge have. Either way the tool says so rather than handing you a PNG with the wrong name.
Animations keep their frames
An animated GIF converted to APNG keeps every frame, and so does the reverse. Converting one to a still format keeps the first frame and tells you it did, rather than dropping the rest without a word.
HDR photos stay HDR
An HDR photo from a phone is an ordinary picture plus a small second one saying how much brighter each part of it should get. Convert it to AVIF and both come across, along with the settings that tie them together, copied over untouched rather than worked out again. Convert it to anything else and you get the standard range picture with a line saying so. Radiance HDR and OpenEXR are a separate matter and keep their full range through each other.
Camera raw, honestly described
A raw file holds sensor data that a photo editor develops into a picture, and this does not do that. What it does is pull out the full size JPEG the camera itself made and put it inside the file, which is what you want when you need a shot out of a CR2 or a NEF and do not want to open anything heavy.
PNG is written here, not by the browser
Which means it drops the unused transparency channel when there is none, embeds the original colour profile, and has no size limit to run into. On a phone photo it comes out smaller than the browser manages.
Icons and favicons
An ICO is not one picture. It is a small directory holding the same image at several sizes, so a browser can take the 16 pixel one for a tab and the 32 pixel one for a bookmark, which is what a favicon is. This writes 256, 128, 64, 48, 32 and 16 pixel entries, and 256 is where an ICO stops, because the directory records each side in a single byte. An Apple icon suite (ICNS) is written the same way and goes up to 1024, carrying both the ordinary and the retina spelling of every size that has two. Start from something square: each slot is a square, so a landscape photograph comes back centred in one with transparency either side.
What it will not do
It will not write HEIC. No browser can, and the encoder is patent encumbered in a way a free tool cannot resolve. It reads Photoshop and DDS without writing them, because reading a file somebody already has is useful and writing one badly is a file they find out is wrong a month later. AVIF comes out at eight bits a channel, because no browser will encode ten bit AV1, so there is no PQ or HLG output. An HDR photo does not need one, which is why it survives anyway.
The hard case
A HEIC is not one picture. It is dozens.
Most formats are one picture with a header on the front, and converting one is unremarkable. HEIC is the exception, and it is worth walking through because it is the format most likely to have brought you here. It is video compression applied to a still image, wrapped in the same container an MP4 uses, and the interesting part is that a browser can read it at all: it already has the decoder.
- 01The file is a container, the same kind an MP4 uses. Inside it is a list of items: the picture, a thumbnail, the camera metadata, and on a recent iPhone an extra layer for high dynamic range.
- 02The picture itself is a grid of 512 by 512 tiles. A twelve megapixel photo is 48 of them, arranged eight across and six down, and a 48 megapixel one is nearly two hundred. A reader that expects a single image finds nothing it can use.
- 03Each tile is compressed the way a frame of video is. The tool pulls the tiles out and hands them to the video decoder built into your browser, which on most machines is a dedicated piece of hardware, so it takes a moment rather than a minute.
- 04The grid is padded out to whole tiles, so it is larger than the photo. The real dimensions are recorded separately, and the padding is cropped away afterwards.
- 05The rotation is stored beside the picture rather than applied to it. Every portrait photo from a phone is actually stored on its side, which is why a converter that ignores this gives you a sideways image.
- 06An iPhone photo is in Display P3, a wider range of colour than the sRGB most files assume. The tool reads which one the file is in and carries the colour profile across, so the result does not come out flat.
Why some browsers need help
Safari reads HEIC on its own. Chrome and Edge expose the video decoder needed for it wherever the machine has the hardware, which is most of them. Firefox exposes neither. On those, this page loads a software decoder instead, which works everywhere and is slower, and the result says when that happened so a slow conversion is explained rather than mysterious.
Offline
The same converter, as one file on your own disk.
Save this document, disconnect, and it still converts your images. Everything it runs is written inside the file, so there is no server to reach and no version of it that can change after you have saved it.
The file
Standalone build
The converter and its interface in one HTML document. Twenty-six formats go in, and it carries no runtime dependency of any kind.
- Licence
- MIT
The script and the stylesheet are written into the page
The build compiles the converter, minifies the stylesheet and writes both into the body of the document. Nothing is fetched, because there is nothing left to fetch. It is also why one document is heavier than a page you would normally load: what you have is the program itself rather than a pointer to it.
The file will not run code it did not ship with
The build hashes the script and the stylesheet exactly as they landed in the document and writes both hashes into a Content-Security-Policy in the file's own head. The same policy sets connect-src to none, so the document is not permitted to open a network connection at all. Change a character of the script and it stops running, because its hash no longer matches.
There is no network code to switch off
The converter calls fetch, XMLHttpRequest, WebSocket, EventSource and sendBeacon nowhere, and writes to no cookie, no local storage, no session storage and no database. A test in the package reads the built file and fails the release if any of them appears, so it is checked on every build rather than promised once.
It will not update itself
This is what the arrangement costs, and it is worth saying plainly. A file on your disk stays as it was the day you saved it. When the converter gains a format or fixes a decode, your copy does not. Come back and download it again, and check the new SHA-256 against the one published here.
Before you open it
Check that you got what we published.
A file that runs a program on your machine is worth one minute of scrutiny. Hash the copy you downloaded, then compare it with the digest published for that file, character for character.
macOS and Linux
shasum -a 256 private-image-converter.html
Windows
certutil -hashfile private-image-converter.html SHA256
The workflow that builds the file records its SHA-256 in the release it publishes. That is the number to compare against, and it is recorded by the machine that produced the bytes rather than typed in afterwards.
If they do not match
Do not open the file. A mismatch is usually an interrupted download and occasionally something worse. Delete it and fetch it again. If the second copy disagrees as well, raise it on the issue tracker rather than working around it.
Proving the offline claim
Every converter on the web says it does not upload anything. This one can be checked by anybody, on their own machine, without reading a line of the source.
- 01Save the file somewhere ordinary. Your downloads folder is fine.
- 02Turn the network off properly. Aeroplane mode, or unplug the cable and switch the wireless off.
- 03Open the file. The address bar shows a file:// address, which means the browser loaded it from your disk and not from anywhere else.
- 04Convert a photo. It works, at full speed, with nothing to send it to.
- 05Reconnect and do it again with the network panel of your developer tools open. It stays empty.
The limit
The offline file cannot read HEIC in Firefox.
A HEIC is one frame of HEVC video inside a container. The converter reads the container itself and hands the picture to whatever can decode HEVC on the machine. Safari decodes HEIC outright. Chrome and Edge expose the decoder built into your computer's video hardware, which most machines have. Firefox exposes neither.
Closing that gap needs a software HEVC decoder, and there is no way to write one into the file without taking on a dependency. The offline build has none, deliberately, and that is what lets it be a single document with a hash you can check. So in Firefox it refuses a HEIC with a sentence explaining why, and no setting changes that.
The converter at the top of this page does handle it. This site loads a software decoder as a separate file once it has established that the browser has no other path, which is something a single document cannot do.
What Firefox does do
Everything else. PNG, JPEG, WebP, TIFF, Photoshop, camera raw, OpenEXR, Radiance HDR and the rest all convert in Firefox from the offline file. HEIC is the one format that depends on a decoder Firefox does not have.
Why the licence is one line long
That limit seen from the other side. The file is the converter package and its interface, both MIT licensed, compiled into one document, and no third-party library is inside it, so the MIT notice covers the whole artefact. The software HEIC decoder this site loads is LGPL-3.0, and fusing a library under that licence into a single minified document would put obligations on everyone who passed the file on. Keeping the build free of dependencies is what buys the short licence.
Detail
The specifics.
Measured in current versions of Chrome, Firefox and Safari. Nothing here is a claim about future ones.
- Runs
- Entirely in the browser tab. There is no server component.
- Input
- HEIC, HEIF, PNG, APNG, JPEG, JPEG XL, WebP, AVIF, GIF, BMP, ICO, TIFF, PSD, camera raw, DDS, HDR, OpenEXR, PCX, ICNS, Sun raster, XBM, XPM, QOI, TGA, PNM, farbfeld, SVG.
- Writes
- PNG, APNG, JPEG, WebP, AVIF, GIF, TIFF, BMP, ICO, ICNS, PCX, Sun raster, XBM, XPM, HDR, OpenEXR, QOI, TGA, PNM, farbfeld. WebP is unavailable in Safari; AVIF needs an AV1 encoder.
- Limits
- 80 megapixels per image, roughly 10,000 by 8,000 pixels, past which a browser tab runs out of memory before it finishes. A phone can stop sooner: the tool asks the browser whether it can hold a drawing surface that size and says so when the answer is no. There is no limit in bytes, because nothing is uploaded.
- HEIC support
- Safari reads it directly. Chrome and Edge read it where the machine has hardware video decoding. Everything else uses a software decoder this page loads on demand.
- Colour
- Display P3 is detected per file and preserved where the output can carry it. High dynamic range is flattened to standard range.
- Metadata
- Removed by default, including location and timestamps. Keeping it is a choice you make per conversion.
- Network
- None while converting. No fetch, XMLHttpRequest, WebSocket, EventSource or sendBeacon anywhere in the converter.
- Storage
- None. No cookies, local storage, session storage, database or cache.
- Offline
- Yes. A single file build runs from your own disk with the network off.
- Verification
- SHA-256, published with the file and recorded again by the release that built it.
- Dependencies
- None at runtime. The software HEIC decoder this page can load is a separate optional asset.
- Licence
- MIT
Questions worth asking.
- Is my photo uploaded anywhere?
- No. The conversion runs in your browser and the file never leaves your machine. There is no server to receive it. The simplest way to satisfy yourself is to turn your network off and convert something anyway.
- How is this different from the other converters I found?
- Most of them are an upload form. Your file goes to a server, is converted there and is deleted afterwards, or so you are told. This does the conversion on your own machine instead, which removes the question entirely.
- What can it read and write?
- It reads twenty-six formats: HEIC and HEIF, PNG and APNG, JPEG, JPEG XL, WebP, AVIF, GIF, BMP, ICO, TIFF, Photoshop PSD and PSB, camera raw from most makers, DDS, Radiance HDR, OpenEXR, PCX, Apple icon suites, Sun raster, XBM, XPM, QOI, TGA, PNM and farbfeld, plus SVG. It writes twenty of them. Photoshop, DDS, camera raw and SVG are read only, WebP output is unavailable in Safari, and AVIF output needs a browser with an AV1 encoder.
- Should I convert to PNG or JPG?
- PNG for a copy you are keeping or editing. It is lossless, so what comes out is exactly the picture that went in, and the file is usually several times larger. JPEG, which is the same format as JPG, for a picture you are sending to somebody: it compresses again, so the file is small and a little detail is gone for good. WebP and AVIF are smaller again at the same quality, and fewer applications open them. If the picture is going somewhere you do not control, JPG is the one that always works.
- Does converting lose quality?
- Converting to PNG does not: it is lossless, so the result is exactly the picture that went in. Converting to JPEG, WebP or AVIF compresses it again, which does lose a little, and the quality slider controls how much.
- What happens to the location and the date?
- They are removed unless you tick the box to keep them. Each result lists what was taken out, so you can see what the original was carrying. This matters more than it sounds: a photo taken at home has your address in it.
- What is HEIC, and why does nothing open it?
- HEIC is what an iPhone saves photos as by default. It stores the picture using video compression, which makes the files roughly half the size of the equivalent JPEG. The compression is patent encumbered, so many browsers and applications never added support for reading it.
- Why is it slower in Firefox?
- Reading a HEIC needs an HEVC decoder. Safari has one, and Chrome and Edge expose the one built into your machine's hardware. Firefox exposes neither, so this page loads a software decoder instead. It produces the same result and takes longer, and the tool marks any conversion where that happened.
- Why do converted photos sometimes look washed out elsewhere?
- Because an iPhone photo is in Display P3, a wider range of colour than most files use, and a converter that writes those numbers without recording which range they belong to leaves everything looking flat. This tool detects the range from the file and carries the colour profile into the result.
- Does an HDR photo stay HDR?
- If you convert it to AVIF, yes. An HDR photo is a normal picture plus a brightness map, and the AVIF carries both, with the settings that describe the relationship copied across byte for byte instead of recalculated. Every other output format holds one picture, so you get the standard range version and a line telling you the HDR was left behind.
- Why is the PNG bigger than the file it came from?
- PNG is lossless and JPEG, WebP, AVIF and HEIC are not. Those formats threw away detail to reach their size, and PNG cannot throw anything away, so it stores what is left in full. If size matters more than fidelity, convert to JPEG or WebP instead.
- Does it work on a phone?
- Yes. The conversion runs in the phone's browser the same way it runs on a desktop, and you can pick photos straight from the photo library. On an iPhone, Save hands the result to the share sheet rather than dropping it into Files, so it can go back into Photos, or into a message, from the menu you already know. Where a browser has no share sheet, Save downloads the file as usual.
- Can I convert several at once?
- Yes. Drop or choose as many as you like and they are converted one after another. They are handled in sequence rather than all at once, because a browser tab converting twenty photos in parallel runs out of memory.
- One file in a batch failed. What now?
- The rest still converted. A file that failed keeps its own row and says why, so you can see which one it was rather than counting rows to work out what is missing. The reason is usually a damaged or partly downloaded file, a format this browser cannot write, or an image past the megapixel ceiling. Drop that one again once it is sorted, and nothing else has to be done twice.
- Can I use it without an internet connection?
- Yes, once the page has loaded. There is also a single file build further down this page, which you download once and open straight from your disk with no connection at all.
- What exactly is the single file build?
- One HTML document. The converter, its interface and its stylesheet are all written inside it. You open it the way you open any file on your computer, and the browser runs it from your disk.
- Do I have to install anything?
- No. There is nothing to install, no extension and no runtime to add. A browser from the last few years already has everything it needs.
- How do I know the file I downloaded is the right one?
- Hash it and compare against the SHA-256 published for it. The workflow that builds the file records that number in the release it publishes, so it comes from the machine that produced the bytes.
- Why does HEIC fail in Firefox in the offline file?
- Firefox exposes no HEVC decoder, and a HEIC is a frame of HEVC. The offline file carries no dependencies by design, so it has no software decoder to fall back on. The converter at the top of this page loads one as a separate file, which a single document cannot do.
- How do I get a newer version?
- Come back and download it again. A file on your disk cannot update itself, which is the trade you make for a copy nobody can change out from under you.
- Can I pass the file on to someone else?
- Yes. It is MIT licensed and self-contained, so it travels on a USB stick as happily as anywhere. Tell them to check the hash.
- What licence is it under?
- MIT, for the whole file. No library under another licence is compiled into it, which is deliberate, and is also why it cannot decode HEIC in Firefox.
- Why is the offline file so large?
- Because it is the program rather than a page that fetches one. An ordinary web page is small and then downloads several hundred kilobytes of script. This does that downloading once, in one go, and never again.
- Can it convert an animated GIF?
- Yes, and it keeps the frames. A GIF converted to APNG comes out as an animation with the same timing, and an APNG converted back to GIF does the same. Converting either to a still format keeps the first frame and says so.
- What happens to a Live Photo?
- A Live Photo is two files: the still image, and a short video recorded either side of the moment you pressed the button. What arrives here is the still, and the still is what you get back. The movement stays in the video beside it, which this does not read. It converts pictures, not video.
- What does it do with a camera raw file?
- It takes out the full size JPEG the camera embedded when it took the shot, which every current camera includes. That is the camera's own rendering rather than a development of the raw data, so it will not match what a photo editor would produce, but it is a real picture at full resolution and it takes a moment.
- Can it make a PDF?
- No, and that is a decision rather than something missing. A PDF is a page, so writing one means choosing a page size, a margin and where the picture sits, and those choices belong to whoever is making the document. Convert to PNG or JPG and place that in whatever is building it.
- Can it convert something to HEIC?
- No, and it is not planned. No browser can write HEIC, and the compression it uses carries licensing obligations that a free tool has no way to meet.
Conversions
Pages for the conversions people actually ask for.
Each of these is this same converter, opened on the format you want, behind a page written about that particular conversion. Nothing sits behind them that is not already on this page.
- HEIC to JPG
- HEIC to PNG
- HEIC to WebP
- PNG to JPG
- JPG to PNG
- WebP to PNG
- WebP to JPG
- PNG to WebP
- JPG to WebP
- AVIF to JPG
- AVIF to PNG
- PNG to AVIF
- JPG to AVIF
- PNG to ICO
- PNG to ICNS
- ICO to PNG
- PSD to PNG
- PSD to JPG
- SVG to PNG
- TIFF to JPG
- TIFF to PNG
- PNG to TIFF
- JPG to TIFF
- GIF to APNG
- APNG to GIF
- WebP to GIF
- GIF to PNG
- GIF to JPG
- PNG to GIF
- BMP to JPG
- BMP to PNG
- PNG to BMP
- RAW to JPG
- CR2 to JPG
- NEF to JPG
- DNG to JPG
- ARW to JPG
- EXR to PNG
- HDR to PNG
- DDS to PNG
The file stayed on your machine.
The whole converter is open source and has no runtime dependencies. Read it, or download the single file build and keep a copy.
Read the source