7 Tips to Optimize PNGs with PngCon Plus Converter for Web and Mobile

How to Use PngCon Plus Converter to Batch Convert Images Like a Pro

PngCon Plus is a lightweight Windows utility that converts PNG files into multi-size ICO icon files. Although the official app converts one PNG at a time, you can batch-process many images quickly by combining PngCon Plus with a simple automated workflow. Below is a step-by-step, practical guide that assumes Windows ⁄11 and no extra paid software.

What you’ll need

  • PngCon Plus Converter installed (Windows).
  • A folder with your PNGs (input).
  • An empty folder for results (output).
  • Optional: a free command-line tool (PowerShell is built into Windows).

Steps — quick version

  1. Install PngCon Plus and confirm it converts a single PNG to ICO manually.
  2. Place all PNG files to convert in an input folder (e.g., C:\Images\ToConvert).
  3. Create an output folder (e.g., C:\Images\Converted).
  4. Use a PowerShell script to loop through PNG files and open PngCon Plus for each file automatically (see script below).
  5. Let the script run; PngCon Plus will create ICO files in its default save location — move them to your output folder.
  6. Optionally verify and rename files as needed.

PowerShell automation script (example)

  • Save this as BatchConvert-PngCon.ps1 and run from PowerShell (run as Administrator if needed).

powershell

\(pngConPath</span><span> = </span><span class="token" style="color: rgb(163, 21, 21);">"C:\Program Files\PngConPlus\pplus.exe"</span><span></span><span class="token" style="color: rgb(0, 128, 0); font-style: italic;"># adjust if installed elsewhere</span><span> </span><span></span><span class="token" style="color: rgb(54, 172, 170);">\)inputFolder = “C:\Images\ToConvert”
\(outputFolder</span><span> = </span><span class="token" style="color: rgb(163, 21, 21);">"C:\Images\Converted"</span><span> </span><span></span><span class="token" style="color: rgb(57, 58, 52);">New-Item</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">-</span><span>Path </span><span class="token" style="color: rgb(54, 172, 170);">\)outputFolder -ItemType Directory -Force
Get-ChildItem -Path \(inputFolder</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">-</span><span class="token" style="color: rgb(0, 0, 255);">Filter</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">*</span><span class="token" style="color: rgb(57, 58, 52);">.</span><span>png </span><span class="token" style="color: rgb(57, 58, 52);">|</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">ForEach-Object</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">{</span><span> </span><span> </span><span class="token" style="color: rgb(54, 172, 170);">\)png = \(_</span><span class="token" style="color: rgb(57, 58, 52);">.</span><span>FullName </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">Start-Process</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">-</span><span>FilePath </span><span class="token" style="color: rgb(54, 172, 170);">\)pngConPath -ArgumentList "</span><span class="token" style="color: rgb(54, 172, 170);">$png</span><span class="token" style="color: rgb(163, 21, 21);">”” -Wait Start-Sleep -Milliseconds 500 # If PngCon saves to the same folder as source or fixed folder, move ICOs:
\(icoName</span><span> = </span><span class="token">[System.IO.Path]</span><span>::ChangeExtension</span><span class="token" style="color: rgb(57, 58, 52);">(</span><span class="token" style="color: rgb(54, 172, 170);">\)_.Name, ”.ico”)
\(possiblePaths</span><span> = @</span><span class="token" style="color: rgb(57, 58, 52);">(</span><span> </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">Join-Path</span><span> </span><span class="token" style="color: rgb(54, 172, 170);">\)inputFolder \(icoName</span><span class="token" style="color: rgb(57, 58, 52);">,</span><span> </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">Join-Path</span><span> </span><span class="token" style="color: rgb(163, 21, 21);">"</span><span class="token" style="color: rgb(54, 172, 170);">\)env:USERPROFILE\Documents” \(icoName</span><span class="token" style="color: rgb(57, 58, 52);">,</span><span> </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">Join-Path</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">(</span><span class="token" style="color: rgb(57, 58, 52);">Split-Path</span><span> </span><span class="token" style="color: rgb(54, 172, 170);">\)pngConPath) \(icoName</span><span> </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">)</span><span> </span><span> </span><span class="token" style="color: rgb(0, 0, 255);">foreach</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">(</span><span class="token" style="color: rgb(54, 172, 170);">\)p in \(possiblePaths</span><span class="token" style="color: rgb(57, 58, 52);">)</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">{</span><span> </span><span> </span><span class="token" style="color: rgb(0, 0, 255);">if</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">(</span><span class="token" style="color: rgb(57, 58, 52);">Test-Path</span><span> </span><span class="token" style="color: rgb(54, 172, 170);">\)p) {
Move-Item -Path \(p</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">-</span><span>Destination </span><span class="token" style="color: rgb(57, 58, 52);">(</span><span class="token" style="color: rgb(57, 58, 52);">Join-Path</span><span> </span><span class="token" style="color: rgb(54, 172, 170);">\)outputFolder \(icoName</span><span class="token" style="color: rgb(57, 58, 52);">)</span><span> </span><span class="token" style="color: rgb(57, 58, 52);">-</span><span>Force </span><span> </span><span class="token" style="color: rgb(0, 0, 255);">break</span><span> </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">}</span><span> </span><span> </span><span class="token" style="color: rgb(57, 58, 52);">}</span><span> </span><span></span><span class="token" style="color: rgb(57, 58, 52);">}</span><span> </span></code></div></div></pre> <p>Notes:</p> <ul> <li>Adjust \)pngConPath to where PngCon Plus is installed.
  • PngCon Plus may save ICOs to a fixed location; the script checks common places and moves found ICOs to the output folder.
  • Add longer waits (Start-Sleep) if conversions take time.
  • Tips to work “like a pro”

    • If you have many files, split them into smaller batches to avoid errors.
    • Keep source PNGs square and high resolution for better icon results.
    • If PngCon lacks options you need (size/quality), use a pre-processing step with a tool like ImageMagick to resize/adjust PNGs before converting. Example: convert input.png -resize 128x128 output.png
    • Automate post-processing (rename, organize) in the same PowerShell loop.
    • Test the workflow on 5–10 files before running large batches.

    Troubleshooting

    • If PngCon fails to open via script, run it once as admin to confirm no elevation prompts.
    • If ICOs aren’t where expected, search recent files by extension (*.ico) and timestamp, then move them.
    • For non-PNG inputs, pre-convert images to PNG (ImageMagick or Paint).

    Example workflow with ImageMagick (optional)

    1. Resize originals: mogrify -path C:\Images\ToConvert -resize 256x256 *.png
    2. Run the PowerShell script above.

    If you want, I can:

    • Provide a tested script that locates the exact PngCon save folder automatically, or
    • Give an ImageMagick pre-processing batch script for resizing/format standardization.

    Comments

    Leave a Reply

    Your email address will not be published. Required fields are marked *