Most image formats store one image. A JPEG is a photo. A PNG is a graphic. An ICO file is something different: it's a container that holds multiple images at once, each at a different size, bundled into a single file. The operating system or browser opens the container, looks at what sizes are available, and picks the one that fits the context it needs. The 16x16 version goes in the browser tab. The 32x32 version shows up in the Windows taskbar. The 48x48 might appear in a folder view or network share. Nothing is scaled. The right size is simply selected.
This is why ICO files have survived for 40 years in an industry that discards formats constantly. A single ICO file serves every display context without any app having to do its own downscaling. The tradeoff is that ICO files are genuinely awkward to work with. You can't open one in Photoshop without a plugin. Preview on macOS shows only the largest embedded size. Windows Explorer renders it correctly, but only because the OS has native ICO support baked in. Everywhere else, you're either fighting plugin support or getting a partial view of what's actually inside.
What changed in Windows Vista and why it matters for extraction
Before Windows Vista, ICO files stored their images as uncompressed BMP data. A 256x256 icon at 32-bit color depth took up about 262KB just for that one size inside the container. Vista introduced support for embedding full PNG data directly inside ICO files, which dropped the size of a 256x256 entry from around 262KB to roughly 5 to 15KB depending on the image. Modern ICO files, and especially any favicon generated in the last decade, are almost certainly wrapping PNG data internally.
This matters for extraction because it means what you get out is a proper PNG, not a converted BMP. The alpha channel is preserved exactly. The transparency works. If you extract a 32x32 PNG from a modern favicon.ico and drop it into Figma or Sketch, it behaves like any other PNG you'd have created from scratch. Older ICO files with BMP internals still extract correctly here, but you may notice the transparency handling is slightly different since those files used a different masking technique before PNG's alpha channel was available.
Why you'd want individual PNG sizes instead of the ICO file
The most common reason is that you need a specific size for a specific platform. Apple's iOS requires a 180x180 PNG for the home screen icon. Android's web app manifest wants 192x192 and 512x512. Neither platform reads ICO files. If you have an existing favicon.ico but not the original source assets, you can't just hand the ICO to these platforms and call it done. You need the individual PNGs pulled out.
Design tools are the other common scenario. If you're pulling a logo or brand asset out of a favicon.ico to use in a presentation or document, you need a PNG, not an ICO. The 32x32 is usually fine for small inline use. If you need a larger version and the ICO only has sizes up to 48x48, the resize tool can scale it up. And if you're going the other direction and need to build a new ICO from a PNG you already have, the PNG to ICO converter handles that with multiple embedded sizes in one step.