How I Fixed a Broken Favicon Generator for iOS and Android Process

2026-07-25 · 3 min read

I deployed a PWA and the Android install prompt refused to fire. No error message, just silence. Chrome DevTools showed the manifest.json referenced a 192px icon but the actual file I uploaded was 96px. Android silently rejects dimension mismatches.

The Problem That Made Me Rethink Everything

I used to think generating these was straightforward — pick a type, enter the data, export. Then I had a situation that changed my mind. A client's marketing site had been live for six months before anyone noticed: adding it to an iPhone home screen showed a gray letter placeholder. Six months of missed branding. One missing Apple touch icon tag. I fixed it in two minutes.

The root cause was not the tool. It was that I did not understand what the destination actually needed. Apple's Safari Web Content Guide (apple-touch-icon specification) spells out the requirements clearly, but most generators do not enforce them. They let you generate something that looks right on screen and fails in the real world. That gap — between what looks right and what actually works — is where most problems live.

What I Changed After That Experience

I stopped treating generation as a one-click task and started treating it as a two-step process: configure, then verify. The configuration step is where I match the type and parameters to the actual destination. The verification step is where I test the output in conditions that match the real world — not just on my screen.

Our ICO generator handles the configuration complexity so I focus on verification. The multi-size pack is especially useful for this workflow.

How to Test Before You Go Live

Test with the actual reader — not your eyes. If it is a barcode, scan it with the same scanner model your recipient uses. If it is a favicon, add it to a test site and check it on an actual iPhone and Android device. The simulator lies. The real device does not.

I also test the edge case: what happens at minimum size? What happens on a slow connection? What happens when the background is the wrong color? If it passes all three, it is ready.

David Kim Written by David Kim — Frontend & WordPress Developer. More about me →