Home Blog

How to Convert PNG to ICO on Windows 11 and 10: 5 Ways (One Needs Nothing Installed)

A transparent PNG on a chequerboard feeding a PowerShell window that runs ConvertTo-Ico and writes a multi-size .ico file

Microsoft’s current guidance says a Windows app icon needs, at minimum, 16, 24, 32, 48 and 256 pixel versions, and that Windows picks the nearest one for the user’s display scale (Microsoft Learn, Construct your Windows app’s icon, updated July 2026).

A PNG is one image at one size. To convert PNG to ICO on Windows you need something that resamples it four or five times and packs the results into one file — and Paint is not that something.

This guide covers five ways to do it. One of them uses only what Windows already ships. Then it answers the question the forum threads never do: which of your projects actually wants an .ico, and which wants the PNGs left alone.

What you’ll learn

  • Why PNG to ICO is easier than JPG to ICO, and the three checks worth doing first
  • Five ways to convert PNG to ICO on Windows 11 and 10, measured on the same file
  • A 25-line PowerShell function that builds a multi-size ICO with nothing installed
  • Which file a shortcut, a desktop app, a Store app and a website each need
  • Why a transparent PNG can come out with a black box, and how to check

Quick answer: Windows has no PNG to ICO option in Paint or Photos, but it does have PowerShell. Paste the ConvertTo-Ico function below to build a four-size .ico with nothing installed — or drop the PNG on a browser converter for the same result in one click.

PNG to ICO Is the Easy Case — Here’s Why

If you read our JPG to ICO on Windows guide, half of the PNG to ICO work there is fighting the source format: no transparency, lossy edges, a white box on the taskbar. PNG has none of those problems.

PNG already has what an icon needs

A PNG stores an alpha channel, so the space around your logo is genuinely empty. It is lossless, so edges stay clean when resampled. And most logo exports are already square.

That leaves PNG to ICO with one job: making the sizes and putting them in a container.

What the conversion actually does

An ICO file is a container holding the same image at several sizes — usually 16, 32, 48 and 256 pixels — with a 6-byte header and a 16-byte directory entry per image. Since Windows Vista the 256-pixel entry is stored as PNG data; smaller entries may be PNG or plain bitmaps.

Converting PNG to ICO therefore means resampling the PNG to each size, encoding each result, and writing the directory in front. Every method below does exactly that; they differ in what they need installed and how big the file comes out.

What Paint and Photos can’t do

Open a PNG in Windows 11 Paint and check Save as: PNG, JPEG, BMP, GIF, TIFF. Photos offers JPG and PNG. Neither writes an ICO, and typing .ico as the name only renames the file.

A reply on Microsoft’s own answers forum recommending Paint has carried a “correct answer” mark for years. Several replies underneath it point out that it does not work. It still ranks.

Windows 11 Paint’s Save as submenu listing PNG, JPEG, BMP, GIF and TIFF with ICO crossed out as not offered; beside it the Photos app offering only JPG and PNG, and a note that PowerShell with System.Drawing is what Windows does ship

📖 Further reading: the PNG to ICO converter page explains the container format and has the full size table with sources.

Prepare the PNG

Three quick checks before any PNG to ICO conversion. For a PNG they are mostly confirmations, not fixes — which is the point.

Square, or decide how to pad

Every ICO entry is square. If the PNG is 1200 × 800, something has to give — but unlike a JPG, a PNG can pad with transparency instead of cropping, so nothing is lost. The browser converter does this automatically; the PowerShell script below stretches instead, so square it first.

512 × 512 or larger

The biggest entry is 256 pixels. Starting from twice that gives the resampler room; starting from 128 means the 256 entry is an upscale, and it will look like one.

Keep the transparency you already have

Do not route the file through JPG to “clean it up”, and do not use a background remover — the PNG already has nothing there. Both steps only create work for the transparency section further down.

Three checks for a PNG before converting to ICO: pad to square with transparency rather than cropping, start from at least 512 pixels, and keep the alpha channel rather than saving as JPG first

💡 Pro tip: if the logo exists as a vector, start there. The SVG to ICO converter draws each size from the vector instead of shrinking a raster, which is what the 16-pixel entry needs most. Microsoft’s guidance also suggests checking transparent icons on both a light and a dark background.

Way 1: Convert PNG to ICO in Your Browser

Our own tool, so weigh the recommendation accordingly. It is first because it handles the square-padding and resampling for you and never uploads the file.

Step by step

Three clicks, one file

  1. Drop the PNG. Open the PNG to ICO converter and drag the file in, click to browse, or paste with Ctrl+V. Up to 50 files at once.
  2. Pick the sizes. The default is 16, 32, 48 and 256. Tick 24 as well for a Windows 10 taskbar icon; tick 64 if the icon will be shown at 150% scaling in Explorer.
  3. Download. One .ico per PNG, or every icon in a zip.
Three panels: drop the file into the browser converter, pick the sizes 16, 32, 48 and 256, then download one .ico — with a note that the file never leaves your PC
For a PNG, leave the background switch off — there is nothing to remove.

What you get

Four PNG-compressed 32-bit entries — the PNG to ICO output Windows expects. From our 512 × 512 test PNG that was 9.6 KB, encoded in 8 milliseconds in Chrome. Adding the 24-pixel entry took it to 10.3 KB.

Where it fits

One-off PNG to ICO jobs, machines where you cannot install software, and anyone who wants to see the 16-pixel result before committing. It works offline once the page has loaded.

Way 2: PowerShell — Nothing to Install

Windows PowerShell 5.1 ships with every copy of Windows 10 and 11, and it can load the .NET System.Drawing library. That library can resample a PNG, and the ICO container is simple enough to write by hand. Put the two together and Windows converts PNG to ICO on its own.

The script

function ConvertTo-Ico {
  param([string]$Png, [string]$Ico, [int[]]$Sizes = (256, 48, 32, 16))
  Add-Type -AssemblyName System.Drawing
  $img = [System.Drawing.Image]::FromFile((Resolve-Path $Png))
  $frames = foreach ($s in $Sizes) {
    $bmp = New-Object System.Drawing.Bitmap $s, $s, ([System.Drawing.Imaging.PixelFormat]::Format32bppArgb)
    $g = [System.Drawing.Graphics]::FromImage($bmp)
    $g.InterpolationMode = 'HighQualityBicubic'; $g.PixelOffsetMode = 'HighQuality'
    $g.Clear([System.Drawing.Color]::Transparent); $g.DrawImage($img, 0, 0, $s, $s); $g.Dispose()
    $ms = New-Object System.IO.MemoryStream
    $bmp.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png); $bmp.Dispose(); ,$ms.ToArray()
  }
  $bw = New-Object System.IO.BinaryWriter([System.IO.File]::Create($Ico))
  $bw.Write([uint16]0); $bw.Write([uint16]1); $bw.Write([uint16]$Sizes.Count)
  $offset = 6 + 16 * $Sizes.Count
  for ($i = 0; $i -lt $Sizes.Count; $i++) {
    $b = if ($Sizes[$i] -ge 256) { 0 } else { $Sizes[$i] }
    $bw.Write([byte]$b); $bw.Write([byte]$b); $bw.Write([byte]0); $bw.Write([byte]0)
    $bw.Write([uint16]1); $bw.Write([uint16]32)
    $bw.Write([uint32]$frames[$i].Length); $bw.Write([uint32]$offset)
    $offset += $frames[$i].Length
  }
  foreach ($f in $frames) { $bw.Write($f) }
  $bw.Dispose(); $img.Dispose()
}

Copy it as is. The only line you might change is the default size list.

How it works, line by line

Resample with System.Drawing

For each size, the script creates a 32-bit ARGB bitmap, clears it to transparent, and draws the PNG into it with bicubic interpolation. Each result is saved as a PNG into memory — so every entry in the icon is a proper compressed PNG, the same thing the browser converter produces.

Write the ICONDIR

The header is three 16-bit numbers: reserved, type 1 for icon, and the count. Each entry is 16 bytes: width, height, colour count, reserved, planes, bits per pixel, data length, and the offset where that image starts. A width byte of 0 means 256, which is why the script checks for it.

Append the PNG frames

After the directory, the PNGs are written back to back. That is the whole format.

The ConvertTo-Ico script split into three jobs — resample with System.Drawing, write the ICONDIR, append the PNG frames — next to a byte layout of the resulting 8,140-byte file: 6-byte header, four 16-byte entries, then PNG data for 256, 48, 32 and 16 pixels

Run it

Three steps in PowerShell

  1. Save the script. Copy the ConvertTo-Ico function below into Notepad and save it as ConvertTo-Ico.ps1 in the folder with your PNG.
  2. Load it in PowerShell. Open Windows PowerShell in that folder (Shift + right-click → Open PowerShell window here) and run . .\ConvertTo-Ico.ps1 — the leading dot loads the function into the session.
  3. Convert. Run ConvertTo-Ico -Png logo.png -Ico logo.ico. A four-size icon appears next to the PNG, ready for the Change Icon dialog or your project.

If the execution policy blocks it

If PowerShell refuses to load the file, the execution policy is blocking scripts. Start PowerShell once with powershell -ExecutionPolicy Bypass for that session only; there is no need to change the system-wide setting.

Batch a folder

Every PNG to ICO in one loop

Get-ChildItem *.png | ForEach-Object {
  ConvertTo-Ico -Png $_.FullName -Ico ($_.BaseName + '.ico')
}

What it produced, and its limits

On our 512 × 512 test PNG the PNG to ICO function wrote 8,140 bytes in 271 milliseconds — four PNG entries, all 32-bit, all transparent. ImageMagick read it, .NET read it, and Explorer shows it.

Two honest limits. It stretches a non-square PNG rather than padding it, so square the file first. And it does no sharpening, so the 16-pixel entry is a touch softer than the browser converter’s, which resamples in stages.

On PowerShell 7 the same code needs the System.Drawing.Common package, which is Windows-only. Windows PowerShell 5.1 — the one in the Start menu — has it built in.

Windows 10 and 11 can convert PNG to ICO with nothing installed: Windows PowerShell 5.1 includes the .NET System.Drawing library, which resamples the PNG, and the ICO container is 22 bytes of bookkeeping per image.

Way 3: ImageMagick

If you already have ImageMagick, or convert PNG to ICO often enough to install it, one command does the job:

One file

magick logo.png -define icon:auto-resize=256,48,32,16 logo.ico

A folder, or a non-square PNG

Batching PNG to ICO is a PowerShell loop around the same command, and a non-square PNG can be padded with -gravity center -background none -extent 256x256 before the define.

A terminal card showing the magick command split into annotated parts: the magick command, the resize and extent crop, the icon:auto-resize define, and the .ico extension

Transparency is kept, size is not

ImageMagick 7.1.2 kept the alpha channel perfectly. It also stored all four entries as uncompressed 32-bit bitmaps: 279 KB from a 10.8 KB PNG, roughly 30 times the browser or PowerShell output. Windows does not mind, but a repository will.

📖 Further reading: installation, the -resize … -extent crop and the parameter breakdown are in the ImageMagick section of the JPG guide.

Way 4: GIMP

GIMP exports a proper multi-size PNG to ICO result, with one catch: each layer becomes one entry, so you build the size ladder by hand.

The PNG difference

Because the PNG already has an alpha channel, there is no background to remove. Scale the image to 256, duplicate the layer three times, scale the copies to 48, 32 and 16, then File → Export As with a name ending in .ico.

In the export dialog set every row to 32 bpp, 8-bit alpha and tick Compressed (PNG) for the 256 entry. Left at the defaults, our headless GIMP 3.2 export kept the alpha but stored the 16, 32 and 48 entries as uncompressed 32-bit bitmaps and only the 256 as PNG — 20.9 KB, about twice the browser or PowerShell output.

GIMP’s Layers panel with four layers at 256, 48, 32 and 16 pixels, feeding the Export Image as Windows Icon dialog where each entry is set to 32 bpp

📖 The click-by-click version, including the crop and scale menus, is in the GIMP section of the JPG guide.

Way 5: Online Upload Converters

Convertio, FreeConvert, CloudConvert and the other PNG to ICO sites will convert the file after you upload the file. For a public logo that is fine.

What to check first

  • Size options. Some produce a single 32 or 64 entry unless you open an advanced panel.
  • Transparency. Look for a 32-bit or “keep transparency” option; a few flatten to white.
  • Upload limits and retention. 5–10 MB caps and 24-hour retention are typical.
  • Where it runs. A few sites, like Picflow, state that conversion happens in the browser — then they are Way 1 with different branding.

We did not put a specific service in the measured table, because the numbers depend on which one you pick and which boxes it exposes.

All 5 Ways on the Same PNG

PNG to ICO test file: a 512 × 512 PNG with a transparent background, 10.8 KB. Each method was asked for 16, 32, 48 and 256 pixels.

Way Sizes in one file Transparency kept Output size Needs install Batch
1 · Browser (PNGConvert) 4 (PNG-compressed) Yes 9.6 KB No 50 files → zip
2 · PowerShell script 4 (PNG-compressed) Yes 8.1 KB No One-line loop
3 · ImageMagick 7.1.2 4 (uncompressed) Yes 279 KB Yes One-line loop
4 · GIMP 3.2 4, one layer each Yes (32 bpp rows) 20.9 KB Yes Manual
5 · Online upload Varies Usually Not measured No (upload) Varies
Scorecard of five ways to convert PNG to ICO against multi-size output, transparency kept, nothing to install, batch support and output size — the browser converter and the PowerShell script score highest

Only two of the five ways are zero-install, multi-size and PNG-compressed at once: the browser converter and the PowerShell script. They also produce the smallest files, because both store every entry as PNG.

Which File Does Your Project Actually Need?

Two of the three Microsoft forum threads that rank for PNG to ICO on Windows were asked by developers who believed the Store required an .ico. Five answers between them, and not one said that it does not. Here is what each destination wants.

A desktop shortcut or folder

One PNG to ICO output with 16, 32, 48 and 256. Right-click → Properties → Change Icon → Browse. Keep the file somewhere permanent — the apply-the-icon steps in the JPG guide cover folders, drives and the three reasons an icon reverts.

A Win32 or .NET desktop app

Where the ICO goes

The .exe embeds an ICO at build time, and that is what Explorer, the taskbar and Alt+Tab show. In a .NET project it is <ApplicationIcon>app.ico</ApplicationIcon> in the .csproj; in C++ it is an ICON resource in the .rc file; in Visual Studio it is Project Properties → Application → Icon.

Which sizes

Include 16, 24, 32, 48 and 256 in a PNG to ICO conversion for an executable. This is the one place the 24 matters on Windows 10.

A Microsoft Store (MSIX) app

Not an ICO. The package manifest points at PNG files — Square44x44Logo.png, Square150x150Logo.png, StoreLogo.png — plus target-size variants such as AppList.targetsize-16.png up to targetsize-256.png, in unplated light and dark forms. Microsoft lists every filename in the app-icon construction guide.

So for a Store app, the job is “make this PNG at fourteen sizes”, not “convert PNG to ICO”. Visual Studio’s manifest designer generates the set from one 400 × 400 source; so does any batch resizer.

Electron, Tauri and other packagers

These wrap a Win32 executable, so they want a multi-size .ico for Windows (and an .icns for macOS). Electron’s packager asks for 256 at minimum; give it the full ladder.

A website favicon

A different, shorter list: a favicon.ico with 16, 32 and 48, an SVG, a 180-pixel Apple touch icon and 192/512 manifest PNGs. The favicon generator builds that set from one PNG and explains each file.

One PNG branching to four destinations: a desktop shortcut and a Win32 executable both take an .ico; a Microsoft Store MSIX package takes PNG assets only; a website takes favicon.ico plus PNGs

Microsoft Store (MSIX) apps do not use an .ico at all — the manifest points at PNG files such as Square44x44Logo.png. An .ico is what a Win32 executable embeds so Explorer and the taskbar can show it.

Transparency: Why a PNG Can Still Come Out With a Black Box

The PNG was transparent, the PNG to ICO result shows a black square. Three causes, in the order to check them.

The converter flattened the alpha

Some PNG to ICO tools write 24-bit entries, which have no room for transparency, and fill the gap with black. Others offer a “background colour” box that defaults to white or black. Re-convert with 32-bit output — every method above does this by default except some online services.

The entry is a bitmap with no mask

Bitmap entries in an ICO carry transparency two ways: an 8-bit alpha channel, or a 1-bit AND mask from the Windows 3.1 era. An old tool that writes neither leaves Windows to guess, and it guesses opaque. PNG-compressed entries do not have this problem.

The viewer, not the file

Some third-party file managers and older programs read PNG entries incorrectly at small sizes and paint a black backdrop — the open-source Files app fixed exactly this bug in 2025. Explorer has handled PNG entries since Vista, so check the icon there before blaming the file.

How to check what is inside

Drop the PNG to ICO output on the ICO to PNG extractor. It lists every entry with its size and bit depth, and the extracted PNGs show at once whether the alpha survived.

A fault tree for an icon that shows a black box: the alpha was flattened, the bitmap entry has no mask, or the viewer mishandles PNG entries — each with its fix

Sizes Windows 11 Actually Asks For

Microsoft’s 2026 guidance replaces the old fixed PNG to ICO size list with a table of display scale factors. The 16-pixel slot in a context menu is 20 pixels at 125% scaling, 24 at 150%, 32 at 200% and 64 at 400%. The taskbar starts at 24 and goes up to 96.

Windows looks for an exact match first and otherwise scales the next larger entry down. That is why 256 is in the minimum set: it guarantees Windows never has to scale up.

A ladder of icon sizes for the same 16-pixel slot at Windows 11 display scales from 100% to 400%: 16, 20, 24, 32, 40, 48 and 64 pixels, with the sizes in Microsoft’s minimum set marked in bold

For a PNG to ICO conversion that means: 16, 32, 48 and 256 always; 24 for Windows 10 taskbars and desktop apps; 64 if Explorer at 150% matters to you. The ICO sizes explained section on the converter page maps each size to where it appears.

Where Windows draws each icon size, from 16 pixels in the title bar up to 256 pixels for extra-large icons

Frequently Asked Questions

Can I convert PNG to ICO on Windows without installing anything?

Yes. Windows PowerShell 5.1, which ships with Windows 10 and 11, includes the .NET System.Drawing library. The 25-line ConvertTo-Ico function in this guide uses it to resample the PNG and write a four-size ICO — no download, no admin rights. A browser converter is the other zero-install route.

Does Paint or the Photos app save as ICO?

No. Windows 11 Paint offers PNG, JPEG, BMP, GIF and TIFF under Save As; Photos offers JPG and PNG. Typing .ico as the extension only renames the file. An answer on Microsoft’s own forum that recommends Paint has been marked correct for years and is wrong.

Does the Microsoft Store need an ICO file for my app?

No. A packaged (MSIX) app declares PNG assets in its manifest — Square44x44Logo.png, AppList.targetsize-16.png through targetsize-256.png, StoreLogo.png — according to Microsoft’s app-icon construction guide (updated July 2026). An .ico is what a classic Win32 or .NET desktop executable embeds.

Will the transparent background be kept when I convert PNG to ICO?

Yes, as long as the converter writes 32-bit or PNG-compressed entries. The browser converter, the PowerShell script and ImageMagick all do. Transparency is lost only if the tool flattens to 24-bit, or if you saved the PNG as a JPG somewhere along the way.

Why does my icon have a black box around it?

Three causes, in order: the converter flattened the alpha channel to 24-bit; an old tool wrote a bitmap entry with no transparency mask; or the program showing the icon mishandles PNG entries. Check the file in Explorer itself, and extract the entries with the ICO to PNG tool to confirm the alpha is there.

What sizes should a PNG to ICO conversion include for Windows 11?

Microsoft’s minimum for an app icon is 16, 24, 32, 48 and 256 pixels. Windows picks an exact match when it has one and otherwise scales the next size down, so 256 guarantees it never scales up. The browser converter defaults to 16/32/48/256; add 24 with one click.

How do I convert a folder of PNGs to ICO at once?

With the PowerShell function loaded: Get-ChildItem *.png | ForEach-Object { ConvertTo-Ico $_.FullName ($_.BaseName + ".ico") }. ImageMagick does the same with magick in a loop, and the browser converter accepts up to 50 PNGs and returns one zip.

What if my source is a JPG rather than a PNG?

Then transparency is the problem to solve first, because JPG has none. Our guide to converting JPG to ICO on Windows covers keying out the background, plus the Change Icon steps and what to do when a custom icon reverts.

Next Steps

For one icon, use the PNG to ICO converter and keep the defaults — that is PNG to ICO in three clicks. For a folder of them, or a machine where you cannot open a browser, paste the PowerShell function and keep it — it is the one method that will still work on a fresh Windows install with nothing added.

To put the icon on a shortcut and fix it when Windows reverts it, the JPG to ICO on Windows guide has the steps. For a website, the favicon generator builds the shorter set. More walkthroughs are on the PNGConvert guides page.

Written by the PNGConvert Team — the people who build the converters on this site and test every ICO they produce against Windows Explorer.

Free Converter Tools

Every tool runs in your browser. Nothing is uploaded.