How it works
Everything happens on your device, in three stages: the browser decodes the picture, a segmentation model finds the subject, and the edges are fitted to the full-size photo. Nothing is sent anywhere.
1. Decoding
The browser's own image decoder opens the file, honouring the orientation stored in a phone photo. Two copies are made: the full picture, and a 1024 by 1024 square stretched copy for the model. The stretch is deliberate, because the model was trained on stretched squares and expects one.
2. The model
The subject is found by BiRefNet lite, an open model released under the MIT licence, running through ONNX Runtime inside a web worker on your graphics card through WebGPU. Before anything is fetched, the page checks what the graphics chip allows: some integrated chips allow fewer buffers per shader than one of the model's kernels needs, and would refuse it. Browsers without WebGPU get ISNet instead, the DIS project's general-use model under the Apache-2.0 licence, at 1024 by 1024 pixels on the processor: about three seconds on a laptop, longer on a phone. A device without the memory for it gets U-2-Net at 320 by 320, which is coarser at the edges. The stats bar under the picture says which model ran.
On a first visit a very small model, U-2-Netp (4.6 MB), answers within seconds so there is something to look at, and even to download, while the main model gets ready. When the main model is ready its answer replaces the first one.
Every model file is served by getpng.app itself, so the page talks to no other site. The processor models' weights are stored compressed, 44 MB instead of 176 MB each: each weight is kept as an 8-bit number with one scale per channel and expanded back when the model starts, and on our four sample photographs ISNet's cutouts overlap the uncompressed model's by 99.7% (the car) to 99.99% (a product), with the portrait of flying hair at 99.9%. The browser keeps the files in its cache, so every later picture starts at once and the tool keeps working with no connection at all.
The model answers with a soft alpha: not a yes or no per pixel but a value between, which is what a strand of hair or a blurred edge actually is. That softness is kept.
3. Edges at full resolution
A 1024 pixel answer (or a 320 pixel one) enlarged to a 6000 pixel photo is a blur several pixels wide along every edge. This is the step where other tools stop, or charge. getPNG runs a guided filter instead: in every small window it fits the coarse alpha to the colours of the full-size photo with a linear model, so the cutout lands on the real pixel edges of your picture, following hair against sky and fur against grass, rather than on an enlarged guess. The picture guides its own mask.
Hair gets a pass of its own on the graphics card. The first model answers at 1024 pixels, and strands thinner than that band arrive merged into ribbons; the guided filter cannot invent what the model never saw. So the pixels the first answer was unsure about become a trimap (sure subject, sure background, unknown between), and a second model, ViTMatte small, reads that band at the photo's own pixels, in tiles, and resolves the strands one by one. It runs after the first result is already on screen, so nothing waits on it, and it only changes pixels inside the band: a sleeve stays a sleeve. Browsers on the processor keep a lighter estimate instead, which reads a strand's alpha back from the colours either side of it.
The Edge shift and Feather controls work on that refined alpha afterwards and never run the model again, which is why they answer in a fraction of a second on a large picture.
What is not done yet
- A brush for restoring or erasing one area by hand.
- Colour decontamination, which re-estimates the colour of semi-transparent edge pixels so hair does not carry a tint of the old background.
- Batch processing with a ZIP download.
- A separate portrait model, and a non-AI mode for flat graphics and logos.
The facts
- What it does
- Removes the background from a photo or picture and gives back a transparent PNG (or WebP, or a JPG on a colour) at the full resolution of the original.
- Stills only
- getPNG works on still pictures. It does not build, play or edit animations such as an APNG or an animated GIF; it can cut the background out of each frame as a separate picture.
- Input formats
- JPG, PNG, WebP, AVIF, GIF, BMP and HEIC (iPhone photos). Drag a file anywhere on the page, choose one, or paste it from the clipboard. HEIC is decoded in the browser by libheif, which is fetched from getpng.app the first time a HEIC photo is dropped (about 2 MB, then cached); only the primary photo of the file is used.
- Output
- A transparent PNG at the size of the original; WebP with transparency; or a JPG, PNG or WebP on a colour of your choice. No watermark, no size cap: a 24-megapixel photo comes back as 24 megapixels.
- Where it runs
- Entirely in your browser. The main model runs on your graphics card through WebGPU where the browser has it; a lighter model runs on the processor through WebAssembly otherwise. Nothing is uploaded and there is no server-side processing.
- The models
- BiRefNet lite (MIT licence) at 1024 x 1024 pixels on the graphics card, where the graphics chip can run it; ISNet (Apache-2.0 licence, from the DIS project) at 1024 x 1024 on the processor otherwise, with its weights compressed from 176 MB to 44 MB and its cutouts almost unchanged (99.7 to 99.99 percent overlap with the uncompressed model on the sample photographs, measured 7 October 2026). A device without the memory for that gets U-2-Net (Apache-2.0 licence) at 320 x 320, compressed the same way. A small U-2-Netp model (Apache-2.0, 4.6 MB) gives a first result within seconds on a first visit while the main model gets ready. On the graphics card a second model, ViTMatte small (Apache-2.0 licence, 52 MB), then reads the hair: it is given the band of pixels the first model was unsure about, as a trimap, and resolves the strands at the picture's own pixels, tile by tile, while the first result is already on screen and can be downloaded; the stats bar says when it has run, and the Fine detail on hair switch turns it off. All of them are served by getpng.app itself, fetched once and kept in the browser's cache, so later pictures start at once and the tool keeps working with no connection.
- Full resolution
- The model answers at 1024 pixels (320 on a device without the memory for that). getPNG then fits that answer to the real edges of the full-size picture with a guided filter, so the cutout follows the pixels of your photo rather than a blurred, enlarged mask. This is the step other tools sell as an HD tier.
- Adjusting
- Edge shift grows or shrinks the cutout by up to five pixels; Feather softens the edge; Clean edge colour takes the old background back out of the soft pixels along the edge, which is the coloured rim a cutout from a lawn or a blue wall otherwise keeps. All three apply at full resolution and take a fraction of a second, because the model does not run again.
- Fine detail
- The edge is read back from the picture itself. A pixel on a hair is a mixture of the subject and whatever was behind it, so once both of those colours are known (they are, from either side of the edge) the share the hair covers follows from the pixel the camera recorded. It runs only on the uncertain band, only where the two colours are far enough apart to tell, and only where the mixture explains the pixel, so a highlight or a piece of jewellery is left alone. It can be switched off.
- Fixing by hand
- When the app gets something wrong, you can paint it right: rub out what it kept (the background between an arm and a body is the usual one) or paint back what it removed. The brush has a size and a soft edge, it works at the picture's own resolution, and it can be undone stroke by stroke. Corrections are kept as strokes rather than baked in, so the edge sliders, the shadow and the canvas sizes all still work on top of them.
- Drop shadow
- An optional soft shadow, built from the cutout's own outline rather than from a second pass of the model: strength, softness, distance and direction are yours to set. It is drawn under the subject and saved into the file, so a product shot reads as placed on the page rather than pasted onto it. Softness and distance are shares of the subject, so the same settings look the same on a small picture and a large one. It starts at 35 percent strength, 6 percent softness and 4 percent distance, straight down; strength runs from 5 to 100 percent, softness and distance from 0 to 25 percent, and the angle goes round in steps of ten degrees (90 is straight down). A subject that touches the edge of the picture has its shadow clipped there, so leave room with the canvas sizes.
- Sizes
- One cutout can be saved at several sizes at once: the picture's own size, a tight crop around the subject, and fixed canvases for an Instagram post (1080 x 1080) or story (1080 x 1920), a YouTube thumbnail (1280 x 720), a profile picture (512 x 512) or a square product shot (1600 x 1600). Each canvas is previewed in the panel, and the preview is the file: fit the whole subject inside a margin you choose, or fill the canvas and let the rest fall outside it, then drag the subject where you want it. It is never enlarged past its own pixels, so a small subject is placed at its own size rather than blown up. Ask for more than one and they arrive as a single ZIP.
- Backgrounds
- Transparent, white (exactly #FFFFFF), black, or any colour from a colour picker. The preview shows the cutout over the background you pick, and the compare view puts the original beside it.
- Compressing a PNG
- The compressor on /compress-png rewrites a picture with a colour table instead of a colour per pixel, which is where a PNG's size goes. It chooses the palette per file: it asks what 256 colours would achieve on that picture and takes the smallest palette within a tenth of it, so flat artwork lands on sixteen and a photograph on 256. The quantiser and the PNG writer are both written here rather than borrowed, because the library everyone else uses is GPL, and on the sample photographs the files come out the same size or smaller than that library produces. A file it cannot make smaller is handed back untouched. Reducing colours changes pixels, so it is a lossy compressor and not a lossless optimiser, and it keeps the soft alpha edge. It can also be given a size to fit inside, which is what an upload form or an email limit actually asks for: it searches for the largest palette whose file fits under the number, and when even the smallest will not fit it says so rather than resizing your picture behind your back.
- Removing metadata
- The tool on /remove-exif-data reads what a file carries (camera make and model, serial number, lens, the date, the software, captions and, when the camera was told to record it, the place the photo was taken) and lists it before removing it. It works on JPG, PNG and WebP by copying every other byte of the file across untouched, so the picture is not decoded and encoded again: the compressed image data that comes out is the same bytes that went in, at the same dimensions, with no second generation of JPG loss. The colour profile and the tag that says which way up the picture is are kept unless you untick them. HEIC is not handled, because its metadata is woven into the container rather than parked beside the picture; the HEIC to JPG converter drops it as it converts.
- Checking transparency
- The tool on /png-transparency-checker says whether a picture is really transparent, a fake with a grey and white checkerboard painted into its pixels, or solid. It counts the fully see-through, partly see-through and solid pixels, and reads the file header separately (a PNG's colour type, a WebP's alpha flag; a JPG can never hold transparency), so a file that has room for transparency but does not use it is named as such. A painted checkerboard is found by its grid rather than its colours: two neutral tones alternating at one fixed length along the rows and down the columns, with the pixels on the squares that grid predicts, which also finds grids that were resized or saved as JPG. A fake opens in the background remover in one click, without leaving the device.
- Colour palettes
- The tool on /color-palette-from-image reads the colours a picture is made of: between two and twelve of them, each with its hex, RGB and HSL values and its share of the picture, plus the exact colour of any pixel you click. It uses the compressor's quantiser with two changes: transparent pixels are left out, so a cutout's soft edge does not become its palette, and the colours handed back are spread apart in OKLab, so a photograph returns colours a person can tell apart rather than five shades of the same brown. The palette copies out as hex, CSS variables, a Tailwind theme block, Sass variables or JSON, and saves as a PNG.
- Several at once
- The background remover takes as many pictures as you like at a time. Drop a folder and they go through a queue one after another, sharing the one copy of the model this page already loaded, with each cutout appearing as it finishes and the lot saved together as a ZIP. Every picture gets the settings the editor starts on, and any one of them can be opened in the editor for the brush, the edge sliders or the canvas sizes while the rest carry on. There is no limit on how many and no account, which is worth saying because this is the usual paid feature: Photoroom keeps batch mode on its paid plan, remove.bg bills a credit per image, iLoveIMG allows thirty files a task on its free tier. None of that is needed when the model runs on your own device.
- Then: the next tool
- Every result on the site (a cutout, a resized or compressed picture, a converted file, an enlargement) has a Then menu that opens it in the next tool: compress, resize, save as JPG or WebP, put in a PDF, remove the background, upscale. The file is carried across inside the browser: it is written into the browser's own IndexedDB storage, the next page opens and takes it out, and it is deleted in the same step. It is never uploaded, because there is nothing to upload it to, which is why a suite of tools that upload cannot do this.
- Resizing
- The tool on /resize-image changes the pixel size of as many pictures at once as you like: by longest side, by width, by height, by a percentage, to exact dimensions with fill, fit or stretch, or to a preset. It uses the same resampler as the upscaler, which is Lanczos-3 in linear light with the alpha premultiplied, so edges do not darken the way they do when a browser's own drawImage mixes the numbers stored in a file, and a cutout keeps a clean edge instead of a grey halo. Enlarging is off by default, so a folder run through one width leaves the pictures that were already smaller untouched rather than interpolating them up to a size they never had; for a real enlargement the upscaler has a model. Files come back one by one or as a ZIP, and the ceiling is what a browser tab can hold (about 40 megapixels, or 16,384 pixels on a side), over which the page says what it did instead.
- Making a picture bigger
- The tool on /upscale-image enlarges a picture two, three, four, six or eight times, with two engines and an honest choice between them. The model is ESRGAN-slim (MIT), a residual dense network trained on photographs at two, three and four times; six and eight are two passes, because a model trained at four times has never seen an eight times job. It runs on the graphics chip through WebGL, in overlapping tiles of 128 pixels with a twelve pixel band around each one computed and thrown away so the seams do not show, and its weights (about 900 KB per scale) are served by getpng.app rather than by a CDN. The model has three channels, so a transparent picture keeps its alpha by a separate path: the colour is pushed outwards into the transparent area first, which is what stops the dark fringe a network draws when it sees black behind a cutout, and the alpha channel is enlarged separately and put back. The other engine is Lanczos-3 in linear light, with alpha premultiplied before resampling, two rounds of back-projection against the original and an edge-masked unsharp mask; it invents nothing, which makes it the right answer for a logo, a screenshot or anything that has to stay faithful, and it runs in a worker so the tab stays alive. A picture whose enlargement would be over 40 megapixels or 16,384 pixels on a side is enlarged by a smaller whole factor instead, and the page says so.
- Green screens
- The tool on /remove-green-screen keys out a backing colour rather than running a model, which is what a green or blue screen is for. The colour is found from the border of the frame when the picture arrives, and can be set by clicking the backing instead. Distance from the key is measured in colour divided by brightness, so a shadow across the screen counts as the same colour as the lit part of it and goes with it, which is the failure that leaves a grey lump in most free tools. The tolerance and the width of the soft band are set from how even that particular backing actually is, measured from the border itself. Spill, the green cast a wall throws onto shoulders and hair, is removed by subtracting the key's own hue at exactly the brightness the camera recorded, so hair keeps its shape and loses its colour cast rather than going grey. The preview is keyed at a size that fits the screen so the sliders answer at once; the file you download is keyed at the size you brought. It works with any backing colour, not only green.
- SVG to PNG
- The tool on /svg-to-png reads a drawing's own width, height and viewBox, including sizes written in millimetres, points or inches, and writes the size you asked for onto a copy of its root element before handing it to the browser to draw. That is what makes the result sharp: a file with a viewBox and no size is otherwise drawn at 300 by 150 pixels and scaled up. Two more things are repaired on the way past, both of them common reasons a file will not convert elsewhere: a missing xmlns, which stops an SVG rendering as an image at all, and a missing viewBox, without which there is nothing to scale. Nothing inside the drawing is touched. It makes one size, or a set of sizes at once as a ZIP, which is what a favicon or an app icon needs. Drawing is done by the browser's own SVG engine, so gradients, clip paths, filters and blend modes come out as they look in a browser tab; that engine will not fetch anything from another server, so a linked font, a linked picture, script, embedded HTML and animation each get a plain warning instead of a silent difference.
- Pictures into a PDF
- The tools on /image-to-pdf, /jpg-to-pdf, /png-to-pdf and /heic-to-pdf put pictures into a PDF in the browser, one page per picture, in an order you drag. The PDF is written here rather than by a library, which buys two things: a JPEG that needs no change is copied into the document as it is, because PDF's DCTDecode filter is JPEG, so a photo is not decoded and re-encoded and loses nothing (a progressive JPEG, a CMYK one, and one whose orientation asks for a mirror are the three that must be re-encoded); and a transparent picture keeps its transparency, stored as a soft mask beside the colour rather than flattened onto white. Pages can be A4, US Letter, Legal, A3, A5 or the size of the picture at the resolution written in its own file, with a margin in millimetres and fit, fill or stretch, and the preview beside the settings is drawn by the same two functions that lay out the file. No EXIF, no GPS position and no creation date are written into the document, so the same pictures and settings always give the same bytes.
- A PDF into pictures
- The tools on /pdf-to-png and /pdf-to-jpg turn the pages of a PDF into images in the browser. A PDF page is drawing instructions measured in inches rather than a picture, so the resolution is asked for in dots per inch (72, 150, 300 or 600) and the resulting pixel size is shown before anything is saved. Pages are chosen by ticking them or by typing a range such as 1-3, 7. PNG can be saved with a transparent background, because the white behind a page is usually the reader's paper rather than part of the file. A password-protected PDF opens with its password, which is used on the device and sent nowhere. The renderer is pdf.js (Apache-2.0, Mozilla), served by getpng.app as an unmodified file with the standard fonts and character maps beside it, fetched the first time a PDF is dropped.
- Rearranging a PDF
- The tools on /merge-pdf, /split-pdf and /compress-pdf change a document somebody else wrote, which needs a PDF parser rather than a renderer: pdf-lib (MIT) does that, served by getpng.app as an unmodified file and fetched the first time one of the three is used. Merging and splitting copy page objects from one document into another, so nothing is redrawn and no quality is lost, and a merged file gets an outline with one bookmark per file it was made from. Compressing rewrites the images inside a document at the resolution they are actually drawn at, which is read from each page's content stream by following the transformation matrix, so a photograph across a whole page is reduced and a small logo is left alone; text and vector art are not touched at all. It leaves alone anything it cannot decode without guessing (JPEG 2000, CCITT fax, JBIG2, indexed and separation colour spaces, one-bit masks) and never returns a file larger than the one it was given. A password-protected PDF cannot be rearranged while it is locked, and the tools say so rather than writing a broken file.
- Converters
- The converter pages (WebP, JPG, AVIF, GIF, JFIF and HEIC to PNG; HEIC to JPG; PNG to JPG, to WebP and to ICO) change a file's format in the browser with the browser's own decoder and encoder: many files at once, at full size, saved one by one or together as a ZIP, nothing uploaded. PNG output is lossless, and an ICO holds the picture at 16, 32, 48 and 256 pixels square, each stored as a PNG. Metadata such as EXIF, camera details and GPS location is not carried into the new file, only the first frame of an animation is kept, and a JPG gets a colour of your choice behind transparent areas, because JPG cannot hold transparency.
- Price
- Free. No account, no sign-up, no credits, no watermark, no file limit imposed by us. getPNG is paid for by optional tips on Ko-fi (ko-fi.com/getpng); nothing in the tool is locked behind them.
- Your picture
- It never leaves your device. Removing the background, refining the edges and saving the file all happen inside your browser tab; getPNG has no server that could receive a picture. You can check it: open the browser's network tab while you remove a background and no request carries the image, and after your first picture you can switch the browser to offline and it still works. The page itself is kept on your device too, by a service worker, so it opens with no connection at all: what it stores is this site's own pages, scripts and fonts, never anything of yours.
- Memory
- A very large picture on a phone with little memory is processed at a reduced size rather than crashing the tab, and the page says so when it happens.
- Analytics
- The site keeps its own daily counts: how many backgrounds were removed, on which tool page and with which runtime, how many files were saved in each format, how many files were converted from which format to which, which passport documents photos were made for, and which of the side tools (the metadata remover, the palette extractor, the upscaler, the green screen key, the SVG converter) was used. Each is one number per day per item, from a short fixed list, with no identifier attached. It also uses Google Analytics, loaded through Google Tag Manager, to measure visits and pages, as most websites do. Google Analytics also receives which runtime ran the model, which file format a file was saved in on any of the tools, whether a sample picture was tried, on a converter page which format was converted to which, whether the share button that appears after a save was used (only that it was used, never who was told or where), and, if you answer the question that appears after a download, how many stars you gave and which of the listed faults you ticked, with anything you type in the box. That answer is the only thing this site ever sends that you wrote, it is not tied to you or to any other answer, and it never includes your picture: there is no address on this site that could receive one. Nothing about your images is collected: no file names, no dimensions, no colours, nothing derived from the picture, and the site's security policy stops any tag from sending data anywhere but Google Analytics.
- The family
- Four sites, the same promise applied to four different jobs. getSVG (getsvg.app) turns a picture into an editable SVG, and a cutout from getPNG is a good input to it: a logo photographed on a wall becomes a clean vector in two steps. getReport (getreport.app) is a free website checkup: paste an address and it measures speed, SEO, security, accessibility and the rest, including which pictures on the page are too heavy, too large or missing their alt text. getPDFs (getpdfs.app) works on documents in the same way, inside the browser with nothing uploaded, and does the PDF jobs getPNG does not: signing, filling in forms, editing text, OCR, reordering and rotating pages, and converting to Word or Excel. getPNG works on a file you have; getReport works on a page you have published.