Skip to content

PNG naar ICO omzetten (en ICO naar PNG)

Zet PNG, JPG, SVG of WebP om naar een echte .ico met meerdere formaten: 16, 32 en 48 px in één bestand, het alfakanaal blijft behouden. Kies opslag als PNG of ongecomprimeerde bitmap en zie beide groottes. Opent .ico ook weer.

Geen tracking Draait in je browser Gratis
De omzetting draait volledig in je browser. Je afbeelding wordt nooit geüpload.

Sleep hier een afbeelding heen of klik om te bladeren

PNG, JPG, SVG, WebP, GIF of BMP · tot 10 MB

Formaten om in te pakken

16, 32 en 48 px is de set waar de Microsoft-richtlijn voor pictogrammen uit 1995 om vroeg en de combinatie die het vaakst voorkomt in echte favicons. 512 wordt niet aangeboden: de directory slaat de zijdelengte in één byte op, dus daar bestaat geen geldige weergave voor.

Allebei zijn toegestaan in een .ico. PNG wordt sinds Vista door Windows en door elke huidige browser gelezen; ongecomprimeerde BMP is wat 13 van de 14 echte ICO-bestanden die over 20 onderzochte sites zijn gevonden daadwerkelijk gebruiken, omdat ImageMagick er standaard naar omzet.

Wat er in een .ico-bestand zit (voorbeeld 16 + 32 + 48 px)
Positie Bytes Veld Waarde
0 2 idReserved 0
2 2 idType 1
4 2 idCount 3
6 1 bWidth[0] 16 → 16
7 1 bHeight[0] 16 → 16
8 1 bColorCount[0] 0
9 1 bReserved[0] 0
10 2 wPlanes[0] 1
12 2 wBitCount[0] 32
14 4 dwBytesInRes[0] 248
18 4 dwImageOffset[0] 54
22 1 bWidth[1] 32 → 32
23 1 bHeight[1] 32 → 32
24 1 bColorCount[1] 0
25 1 bReserved[1] 0
26 2 wPlanes[1] 1
28 2 wBitCount[1] 32
30 4 dwBytesInRes[1] 720
34 4 dwImageOffset[1] 302
38 1 bWidth[2] 48 → 48
39 1 bHeight[2] 48 → 48
40 1 bColorCount[2] 0
41 1 bReserved[2] 0
42 2 wPlanes[2] 1
44 2 wBitCount[2] 32
46 4 dwBytesInRes[2] 1464
50 4 dwImageOffset[2] 1022
De hexdump, de byteaantallen en de commando-uitvoer die op deze pagina worden geciteerd, zijn vastgelegd uit bestanden die deze tool heeft geproduceerd, en elke bewering over het gedrag van decoders is gecontroleerd tegen drie onafhankelijke implementaties: een zelfgeschreven encoder, Pillow 12.3.0 en de eigen ICO-decoder van Chromium. De waarneming dat de meeste uitgeleverde favicons ongecomprimeerde bitmaps gebruiken, komt uit het ophalen en uitlezen van de pictogrambestanden van twintig bekende sites in september 2026. — Go Tools Engineering · Sep 22, 2026

Geschreven en beoordeeld door de ontwikkelaars die de conversietools van Go Tools bouwen. De opbouw van de container, de byteaantallen en de hier beschreven storingsvormen komen uit een schriftelijke vakinhoudelijke review en niet uit de samenvattingen die anderen van dit formaat maken.

PNG naar ICO in het kort

Welke formaten horen er in een favicon.ico?

16, 32 en 48 px Die drie dekken het browsertabblad, de Alt-Tab-schakelaar en het bureaublad, en zijn sinds 1995 de aanbevolen set. Voeg 256 alleen toe als het pictogram het ook moet volhouden in een weergave met grote pictogrammen.

Kan één .ico-bestand meerdere formaten bevatten?

Ja — daar is het voor bedoeld Het formaat is een container: een header van zes byte, één directory-entry van zestien byte per afbeelding, dan de afbeeldingen. Elk daarvan is een aparte tekening, en daarom blijft een goed pictogram scherp op 16 px.

Gaat transparantie verloren bij het omzetten van PNG naar ICO?

Nee, niet als het goed gebeurt Beide manieren om een afbeelding in een .ico op te slaan dragen een volledig alfakanaal van acht bit. Transparantie gaat alleen verloren als een tool de alfabytes leeg laat of het 1-bitmasker weglaat dat oudere software in plaats daarvan leest.

Hoe groot is een laag van 256 px in een .ico?

264 KB ongecomprimeerd, of een paar KB als PNG Een ongecomprimeerde laag van 256 px is precies 270.376 byte — 40 byte header, 262.144 byte pixels en 8.192 byte masker — wat het plaatje ook is. Als PNG opgeslagen kost dezelfde laag meestal een paar kilobyte.

Wat is een ICO-bestand?

Een .ico-bestand is niet zozeer een afbeeldingsformaat als wel een klein archief van afbeeldingen. Het begint met een header van zes byte die zegt hoeveel plaatjes erin zitten, gevolgd door één directory-entry van zestien byte per plaatje met de breedte, de hoogte, het aantal bytes en de positie in het bestand, en pas daarna komen de beeldgegevens zelf. Elk plaatje kan op twee manieren worden opgeslagen: als een compleet PNG-bestand dat in zijn geheel is ingebed, of als een ongecomprimeerde Windows-bitmap met daaronder een transparantiemasker van één bit geschroefd.

Dat ontwerp is de reden dat een favicon scherp kan zijn op 16 px in een browsertabblad én op 48 px in een bestandsbeheerder — het zijn verschillende tekeningen, per formaat met de hand bijgesteld, en niet één afbeelding die wordt verkleind. Het is ook de reden dat het formaat een paar verrassingen heeft. De zijdelengte staat in één byte, dus 256 wordt als nul geschreven en 512 is helemaal niet op te schrijven. En de directory legt per entry een formaat vast dat de beeldgegevens zelf ook vastleggen, wat betekent dat die twee elkaar kunnen tegenspreken — en verschillende software gelooft verschillende dingen.

$ file favicon.ico
favicon.ico: MS Windows icon resource - 3 icons, 16x16, 32 bits/pixel, 32x32, 32 bits/pixel

$ python3 -c "from PIL import Image; print(sorted(Image.open('favicon.ico').ico.sizes()))"
[(16, 16), (32, 32), (48, 48)]

Wat deze ICO-converter doet

Eén bestand, elk formaat dat je aanvinkt

16, 32 en 48 px standaard, tot en met 256. Elk formaat wordt apart uit het origineel getekend op volledige kwaliteit in plaats van te worden verkleind uit de laag erboven, zodat kleine formaten de vaagheid van een groter formaat niet erven.

PNG of ongecomprimeerde bitmap, met beide groottes erbij

De twee toegestane payload-vormen hebben heel verschillende afwegingen en de meeste converters vertellen nooit welke ze schrijven. Hier is het een schakelaar, en de resulterende bestandsgrootte staat er voor allebei bij, zodat de beslissing op een getal berust en niet op een gok.

Transparantie die beide routes overleeft

Het alfakanaal wordt volledig weggeschreven, en het 1-bitmasker dat oudere software in plaats daarvan leest, wordt eruit afgeleid in plaats van leeg gelaten. Dat masker leeg laten is precies wat een transparant pictogram verandert in een zwart vierkant op de plekken die alleen het masker lezen.

Een ICO-viewer, niet alleen een downloadknop

Het omgekeerde tabblad somt elke afbeelding in een .ico op met het echte formaat, de opslagvorm, de kleurdiepte en de herkomst van de transparantie — inclusief bitmaps met een kleurenpalet die verschillende bekende favicons nog steeds gebruiken. Een browser laat je er altijd maar één van zien.

Het meldt het als een bestand niet klopt

Claimt de directory een formaat dat niet overeenkomt met de beeldgegevens, dan wordt dat gesignaleerd. Hetzelfde geldt voor een ingesloten PNG die Firefox weggooit — zijn ICO-decoder accepteert alleen 8-bits RGB of RGBA, dus een laag met een palet of in grijswaarden verdwijnt daar gewoon, terwijl elke andere browser hem wel laat zien. Allebei zijn veelvoorkomende redenen dat een pictogram in het ene programma werkt en in het andere leeg blijft, en geen enkele andere converter meldt ze.

Er wordt niets geüpload

Lezen, verkleinen en inpakken gebeuren allemaal op deze pagina. Het bestand bereikt nooit een server, dus er valt achteraf niets te verwijderen en er is geen wachtrij.

PNG naar ICO omzetten in code

ImageMagick

magick in.png -define icon:auto-resize=48,32,16 favicon.ico

Het gebruikelijke antwoord, en de reden dat zoveel favicons ongecomprimeerd zijn. Elke laag behalve 256 px wordt vóór het inpakken omgezet naar een bitmap, dus drie formaten komen op zo'n 15 KB uit in plaats van een paar honderd byte. De formaten worden grootste-eerst weggeschreven.

Python + Pillow

img.save('favicon.ico', sizes=[(16,16),(32,32),(48,48)])

Bedt PNG in, dus dezelfde drie formaten landen in ruwweg een tiende van de ruimte. Pillow leest ICO ook goed: Image.open(f).ico.sizes() somt op wat erin zit, wat handig is om het bestand van iemand anders te controleren.

png-to-ico (npm)

npx png-to-ico icon.png > favicon.ico

Een CLI met één doel die een of meer PNG's neemt en ze als PNG-payload inpakt. Handig in een buildscript; het verkleint niet voor je, dus je levert elk formaat als eigen bestand aan.

sharp

sharp(input).resize(32).png()

Uitstekend om de losse PNG's te maken, maar het schrijft geen ICO-containers, dus het wordt normaal gecombineerd met een van de inpakkers hierboven. Een veelvoorkomende bron van verwarring als een buildpijplijn al op sharp is gestandaardiseerd.

Go

github.com/Kodeworks/golang-image-ico

Schrijft een ICO met één afbeelding vanuit een image.Image. Genoeg voor een favicon met één formaat; meerdere formaten in één container stoppen betekent dat je de directory zelf schrijft, en dat is zo'n dertig regels.

Windows-resourcecompilers

.rc-resourcescript, rc.exe

Zo worden programmapictogrammen normaal gemaakt. De compiler bedt de .ico in de resourcesectie van het programmabestand in; de container daarbinnen heeft precies hetzelfde formaat als een webfavicon.

GIMP

Bestand → Exporteren als → .ico

Exporteert elke laag van de afbeelding als één pictogramformaat en laat je per laag de kleurdiepte kiezen, inclusief gecomprimeerde PNG. Een van de weinige grafische programma's die die keuze laat zien in plaats van hem stilletjes te maken.

macOS sips

sips -s format ico in.png --out favicon.ico

macOS heeft wel degelijk een ICO-schrijver: sips --formats noemt com.microsoft.ico als schrijfbaar, en het commando hierboven leverde hier een geldig bestand op. Wat het niet doet is meerdere maten inpakken — de uitvoer was één laag van 48×48. iconutil, dat zoekresultaten meestal aanraden, maakt .icns, Apples eigen container, die Windows en browsers niet lezen.

PNG naar ICO, byte voor byte

De eerste 38 bytes van een .ico met drie formaten

$ xxd -l 38 favicon.ico
00000000: 0000 0100 0300 1010 0000 0100 2000 e903  ............ ...
00000010: 0000 3600 0000 2020 0000 0100 2000 6c05  ..6...  .... .l.
00000020: 0000 1f04 0000                           ......

0000 is het gereserveerde veld, 0100 is type 1 (pictogram, geen cursor), 0300 zegt: drie afbeeldingen. Daarna volgt de eerste directory-entry van 16 byte: 10 10 is 16×16, 00 het aantal kleuren, 00 gereserveerd, 0100 één vlak, 2000 32 bits per pixel, e903 0000 is 1.001 byte payload op positie 3600 0000 = 54 — precies 6 + 3 × 16, het einde van de directory. Alles wat uit meerdere bytes bestaat is little-endian, behalve de formaten, die losse bytes zijn.

Een entry van 256 px slaat nul op, geen 256

bWidth = 0x00    bHeight = 0x00
256 × 256

De directory heeft per zijde één byte, dus 255 is het grootste getal dat erin past en 0 is gedefinieerd als 256. Daarom wordt 512 px ook nergens op deze pagina aangeboden: er bestaat geen byte die 512 betekent. Verschillende online converters bieden het toch aan en schrijven een afbeelding van 512 px achter een directory-entry die die helemaal niet kan beschrijven.

Dezelfde drie formaten, twee manieren van opslaan

16 + 32 + 48 px, PNG payloads
16 + 32 + 48 px, uncompressed BMP payloads
389 bytes
15,086 bytes

Een ongecomprimeerde payload kost 40 + breedte × hoogte × 4 byte plus een masker van 1 bit, dus de grootte hangt alleen van de afmetingen af en helemaal niet van het plaatje. Daarom kunnen drie verschillende sites drie totaal verschillende pictogrammen uitleveren in bestanden van precies dezelfde lengte.

Hetzelfde bestand bouwen vanaf de commandoregel

$ magick logo.png -define icon:auto-resize=48,32,16 favicon.ico
$ file favicon.ico
favicon.ico: MS Windows icon resource - 3 icons, 48x48, 32 bits/pixel, 32x32, 32 bits/pixel

ImageMagick zet elke laag behalve 256 px eerst om naar een ongecomprimeerde bitmap voordat hij hem inpakt, en daarom komt de uitvoer rond de 15 KB uit in plaats van een paar honderd byte. Pillow doet het omgekeerde en bedt PNG in: Image.open('logo.png').save('favicon.ico', sizes=[(16,16),(32,32),(48,48)]).

Een .ico weer uitpakken

$ magick favicon.ico favicon-%d.png
favicon-0.png   48×48
favicon-1.png   32×32
favicon-2.png   16×16

Een browser kan dit niet voor je doen. Geef een .ico met meerdere formaten aan een <img>-tag en je krijgt precies één afbeelding — de grootste — ongeacht de volgorde van de formaten. Opsommen wat er werkelijk in een bestand zit betekent de container zelf uitlezen, en dat is precies wat het tabblad ICO → PNG doet.

Zo zet je PNG om naar ICO

  1. 1

    Sleep je afbeelding erin

    PNG, JPG, SVG, WebP, GIF en BMP worden allemaal geaccepteerd, tot 10 MB. Er verlaat niets de browser: het bestand wordt met de File API gelezen en elke pixel wordt op een lokaal canvas getekend.

  2. 2

    Kies de formaten

    16, 32 en 48 px staan om te beginnen aangevinkt. Voeg 64, 128 of 256 toe als het pictogram een weergave met grote pictogrammen of een high-dpi-bureaublad moet overleven. Is je bronbestand kleiner dan het grootste aangevinkte formaat, dan zegt de pagina dat in plaats van het stilletjes op te schalen.

  3. 3

    Kies de opslagvorm

    PNG is de standaard omdat het een orde van grootte kleiner is en door elke huidige browser en elke Windows sinds Vista wordt gelezen. Schakel over naar een ongecomprimeerde bitmap als je de vorm wilt waarin de meeste uitgeleverde favicons daadwerkelijk zitten. De twee bestandsgroottes staan naast elkaar.

  4. 4

    Download het en hang het op

    Sla de .ico op en gebruik de knop „link-tags kopiëren” voor de markup. Het pad /favicon.ico in de hoofdmap werkt nog steeds als terugval, maar een expliciet link-element is het pad dat browsers als eerste horen te proberen.

Waarom ICO-bestanden misgaan

Een laag van 256 px die als 255 is weggeschreven

De directory-byte voor een afbeelding van 256 px moet 0 zijn. 255 schrijven lijkt een onschuldige off-by-one en levert een bestand op dat sommige browsers stilzwijgend weigeren te tekenen.

✗ Fout
bWidth = 0xFF   bHeight = 0xFF   ; „255”, bedoeld als 256
✓ Correct
bWidth = 0x00   bHeight = 0x00   ; 0 is gedefinieerd als 256

De directory en de afbeelding zijn het oneens over het formaat

Als een directory-entry 16×16 zegt boven een payload die in werkelijkheid 32×32 is, splitsen de decoders zich: sommige vertrouwen de directory en tekenen helemaal niets, andere vertrouwen de payload en geven hem gewoon weer. Het bestand werkt dan op de ene machine en is onzichtbaar op de andere.

✗ Fout
entry: 16×16     payload IHDR: 32×32
✓ Correct
entry: 32×32     payload IHDR: 32×32

Het hoogteveld van de bitmap is niet verdubbeld

Binnen een ongecomprimeerde laag dekt de hoogte de kleurgegevens en het masker samen. De gewone hoogte wegschrijven levert een bestand op dat in sommige decoders leeg blijft en in andere als de onderste helft van de afbeelding verschijnt, zonder dat er ook maar iets wordt gemeld.

✗ Fout
biHeight = 32        ; voor een afbeelding van 32 px
✓ Correct
biHeight = 64        ; 2 × 32, kleurgegevens plus masker

Een ongecomprimeerde laag met een leeg alfakanaal

Sommige tools vullen het masker en laten elke alfabyte op nul staan. De ene decoder leest dat als een volledig transparante afbeelding en het pictogram verdwijnt; de andere valt terug op het masker en toont het correct. Beide consequent wegschrijven maakt de hele discussie overbodig.

✗ Fout
alpha bytes: all 0x00   mask: all 0x00
✓ Correct
alpha bytes: real values   mask: set where alpha < 128

Een SVG die een bestand van het internet ophaalt

Externe verwijzingen in een SVG worden geblokkeerd zodra hij wordt gerasteriseerd, en niets meldt het — er treedt geen fout op en het canvas blijft leesbaar. De tijdelijke afbeelding voor een kapot plaatje wordt gewoon in het pictogram gebakken. Zet de tekening er direct in voordat je omzet.

✗ Fout
<image href="https://cdn.example.com/logo.png"/>
✓ Correct
<image href="data:image/png;base64,iVBORw0KGgo…"/>

Wanneer je een PNG-naar-ICO-converter nodig hebt

Een favicon uitleveren voor een nieuwe site
Sleep het logo erin, houd de drie standaardformaten aan, download favicon.ico en zet hem in de hoofdmap van de site. De gekopieerde link-tags geven je de moderne markup voor hetzelfde pictogram, naast een SVG en een Apple-touch-icon.
Een pictogram repareren dat groot goed is en klein modderig
Meestal bevat het bestand maar één grote laag en is al het kleine de browser die hem verkleint. Een echte laag van 16 px inpakken, getekend uit de bron in plaats van uit de versie van 256 px, is wat het oplost.
Een desktoptoepassing zijn pictogram geven
Windows-programma's, installatieprogramma's en snelkoppelingen nemen .ico, en verschillende delen van de shell grijpen naar verschillende formaten uit hetzelfde bestand. 16, 32, 48 en 256 inpakken dekt de kleine pictogrammen in lijsten, de Alt-Tab-schakelaar en de weergaven met grote pictogrammen.
Uitzoeken waarom een pictogram op de ene plek wel verschijnt en op de andere niet
Open het bestand op het tabblad ICO → PNG. Een formaat dat de directory verkeerd beschrijft, een laag zonder enig alfa of een afgekapte entry komen allemaal in de lijst terecht, en elke goede laag exporteert nog steeds, ook als een buurlaag stuk is.
PNG's terughalen uit een oude .ico
Pictogrammen die uit een oud project zijn overgeërfd, zijn vaak de enige overgebleven kopie van een logo. Het omgekeerde tabblad exporteert elke laag als eigen PNG, inclusief lagen die als paletbitmap zijn opgeslagen en die de meeste converters weigeren.

Wat er echt in een .ico-bestand zit

Zes bytes, daarna zestien per afbeelding
De header is 00 00 gereserveerd, 01 00 voor een pictogram (02 00 markeert een cursorbestand), daarna een teller van twee byte. Elke directory-entry bestaat uit breedte, hoogte, paletgrootte en een gereserveerde byte — elk één byte — gevolgd door velden van twee byte voor het aantal vlakken en de kleurdiepte, en twee velden van vier byte met de lengte en de positie van de payload. Alles wat uit meerdere bytes bestaat is little-endian.
Nul betekent 256, en 512 is niet uit te drukken
Omdat breedte en hoogte losse bytes zijn, moet 256 als 0 worden gecodeerd en heeft alles wat groter is helemaal geen codering. Voor een laag van 256 px 255 schrijven in plaats van 0 is geen kleine afwijking — het levert een bestand op dat browsers weigeren te tekenen. Converters die een optie van 512 px aanbieden, schrijven entries die hun eigen inhoud niet kunnen beschrijven.
Een ongecomprimeerde laag kost precies 40 + b × h × 4 byte, plus een masker
Het masker voegt per rij ceil(breedte ÷ 32) × 4 byte toe. Een laag van 16 px is daarmee 1.128 byte, 48 px is 9.640 en 256 px is 270.376 — ongeacht wat het plaatje laat zien. Die vaste kostenpost is de reden dat drie ongerelateerde sites favicons van exact dezelfde lengte kunnen uitleveren, en ook de reden dat een laag van 256 px hier alleen wordt aangeboden als de payload PNG is.
De bitmapheader slaat de dubbele hoogte op
Binnen een ongecomprimeerde laag beschrijft het hoogteveld de kleurenbitmap en het transparantiemasker op elkaar gestapeld, dus het wordt weggeschreven als tweemaal de echte hoogte, zelfs als het masker geen enkele informatie draagt. Dit fout doen is een van de stilste storingen in het formaat: sommige decoders leveren een leeg beeld op, andere de onderste helft van het plaatje, en geen van beide meldt een fout.
De velden voor vlakken, kleurdiepte en aantal kleuren zijn hooguit een advies
De specificatie is er precies over en echte bestanden negeren haar. De documentatiesite van Microsoft zelf levert een favicon uit waarvan de directory nul vlakken en nul bits per pixel claimt boven een payload van vier bits per pixel, en hij wordt overal getoond. Decoders leiden het echte formaat af uit de payload — een PNG-signatuur, of de bitmapheader — in plaats van de directory te vertrouwen.
ICO heeft nooit een RFC gehad
Het mediatype image/vnd.microsoft.icon is in september 2003 bij IANA geregistreerd, en de bron waarnaar het verwijst is een Microsoft-artikel uit 1995 met de titel „Icons in Win32”. RFC 2361, die breed wordt geciteerd als de ICO-specificatie, heet in werkelijkheid „WAVE and AVI Codec Registries” en zegt helemaal niets over afbeeldingen.

Een favicon.ico goed doen

Pak 16, 32 en 48 in en houd het daarbij voor het web
Dat drietal is sinds 1995 de aanbevolen set en nog steeds de combinatie die het vaakst voorkomt in echte favicons. Extra formaten zijn niet gratis — elk formaat is nog een laag die een browser mogelijk downloadt voordat hij weet welke hij wil hebben.
Teken de laag van 16 px, verklein niet alleen de grote
Een logo dat op 256 px werkt, verliest zijn dunne lijnen meestal tegen de tijd dat het op 16 aankomt. Als het kleine formaat ertoe doet, vereenvoudig dan de tekening ervoor — minder vormen, zwaardere lijnen — en pak die vereenvoudigde versie in als eigen laag.
Gebruik een link-element en houd /favicon.ico als terugval
De HTML-specificatie zegt browsers alleen dat ze /favicon.ico mogen ophalen, en alleen wanneer er geen icon-link aanwezig is. Een expliciet link-element is het betrouwbare pad; het bestand in de hoofdmap verdient zijn plek nog steeds voor feedlezers, crawlers en al het andere dat jouw markup niet uitleest.
Voeg een formaat boven 48 px toe als zoekresultaten ertoe doen
De favicon-richtlijn van Google vraagt om een vierkante afbeelding van minstens 8 px en raadt aan om boven 48 px te gaan zodat hij het over verschillende oppervlakken volhoudt. PNG wordt daarbij net zo goed geaccepteerd als ICO, dus het grote formaat hoeft helemaal niet in de .ico te zitten.
Controleer het bestand, kijk er niet alleen naar
Een pictogram dat in je browser verschijnt, kan nog steeds fout zijn: een directory-entry die niet klopt, een ontbrekend alfakanaal of een onleesbare laag houden de ene afbeelding die je browser koos niet tegen. Het bestand openen op het omgekeerde tabblad laat ze allemaal zien.

Veelgestelde vragen over PNG naar ICO

Hoe zet ik een PNG om naar een ICO-bestand?
Sleep de PNG op deze pagina, laat 16, 32 en 48 px aangevinkt staan en download het resultaat. Alles draait in de browser, dus de afbeelding wordt nooit geüpload. Op de commandoregel is het gebruikelijke equivalent magick logo.png -define icon:auto-resize=48,32,16 favicon.ico.
Waarom ziet mijn pictogram er vaag uit op kleine formaten?
Bijna altijd omdat het bestand één grote afbeelding bevat en alles wat klein is een browser is die hem ter plekke verkleint. Zodra het pixelraster krimpt bestaat er geen verliesvrije omzetting — dunne lijnen en fijn detail verdwijnen onder ongeveer 24 px, hoe goed het resamplen ook is, dus de kwaliteit wordt bepaald door welke formaten je inpakt en niet door de converter. Pak een echte laag van 16 px in, en vereenvoudig bij een gedetailleerd logo de tekening voor die laag in plaats van hem te schalen.
Moeten de afbeeldingen erin PNG of ongecomprimeerde bitmap zijn?
PNG, tenzij je een reden hebt om dat niet te doen: het is een orde van grootte kleiner en wordt door elke huidige browser en elke Windows-versie sinds Vista gelezen. Ongecomprimeerde bitmaps blijven in de praktijk de vakere keuze, vooral omdat ImageMagick er standaard naar omzet, en ze zijn de veiligere gok voor heel oude software. De pagina toont beide bestandsgroottes zodat je op het getal kunt beslissen.
Waarom is er geen optie voor 512 px?
De directory slaat elke zijdelengte in één byte op, dus de grootste waarde die uit te drukken is, is 255, en 0 is gereserveerd om 256 te betekenen. Er is geen manier om 512 te schrijven. Converters die het aanbieden, produceren een directory-entry die de afbeelding erachter niet beschrijft, en dat is een goede manier om een pictogram te krijgen dat sommige software weigert te tonen.
Blijft een PNG met een transparante achtergrond ook als ICO transparant?
Ja. Het alfakanaal wordt volledig weggeschreven, en het 1-bitmasker dat oudere software in plaats daarvan leest, wordt eruit afgeleid in plaats van leeg gelaten — juist dat masker is wat een transparante achtergrond verandert in een zwart vierkant in tools die het leeg laten. Een half transparante pixel telt in het masker als transparant zodra zijn alfa onder de helft zakt, en dat is de enige beschikbare keuze omdat het masker één bit per pixel heeft.
Kan ik een SVG omzetten naar ICO?
Ja, en een vectorbron is de best mogelijke invoer omdat elk formaat uit de geometrie wordt getekend in plaats van uit een bitmap te worden herbemonsterd. Eén kanttekening: alles wat de SVG over het netwerk ophaalt — een gelinkte afbeelding, een extern lettertype, een geïmporteerde stylesheet — wordt tijdens het omzetten geblokkeerd zonder dat er een fout optreedt. De pagina controleert op die verwijzingen en waarschuwt je.
Heb ik nog steeds een favicon.ico in de hoofdmap van de site nodig?
Het is de moeite waard om hem te hebben, maar het is niet meer het hoofdpad. De HTML-specificatie zegt dat browsers /favicon.ico mogen opvragen, en alleen wanneer de pagina geen icon-link-element heeft. Een link-element is wat browsers als eerste horen te gebruiken; het bestand in de hoofdmap dekt feedlezers, crawlers en al het andere dat jouw HTML nooit uitleest.
Heeft Google een ICO-bestand nodig voor zoekresultaten?
Nee. De favicon-documentatie van Google accepteert BMP, GIF, ICO, PNG, JPEG, PPM en TIFF, vraagt om een vierkante afbeelding van minstens 8 px en raadt aan om boven 48 px te gaan zodat hij er op verschillende oppervlakken goed uitziet. Eén grote PNG voldoet daaraan; de .ico is voor al het andere.
Waarom toont mijn browser maar één formaat als ik een .ico open?
Omdat een afbeeldingselement je niet meer kan geven. Geef een browser een .ico met meerdere formaten en hij kiest er één uit — in de praktijk de grootste — en de rest is onbereikbaar. Elke laag opsommen betekent de container rechtstreeks uitlezen, en dat is wat het tabblad ICO → PNG op deze pagina doet.
Wat betekent het als de directory en de afbeelding het oneens zijn over het formaat?
Het betekent dat het bestand intern niet klopt, en decoders gaan daar tegenovergesteld mee om: sommige vertrouwen de directory en tekenen uiteindelijk niets, andere vertrouwen de beeldgegevens en geven die correct weer. Dat is een klassieke oorzaak van een pictogram dat op de ene machine werkt en op de andere onzichtbaar is, dus deze pagina signaleert het zodra je een bestand opent.
Kan deze tool ICO-bestanden openen die andere converters weigeren?
Vaak wel. Lagen die als paletbitmap zijn opgeslagen — vier of acht bits per pixel — worden nog steeds door verschillende bekende favicons gebruikt en veel converters weigeren ze botweg. Kapotte lagen worden bovendien één voor één afgehandeld, dus één onleesbaar formaat houdt de rest niet tegen bij het exporteren. De lijst markeert ook elke ingesloten PNG-laag die Firefox weggooit: zijn ICO-decoder accepteert alleen 8-bits RGB of RGBA, dus een PNG met een palet of in grijswaarden verdwijnt daar. De eigen site van Mozilla heeft een pictogram uitgeleverd met precies dat probleem — de laag van 64 px is een palet-PNG die Firefox zelf laat vallen, en alleen de andere lagen houden het pictogram zichtbaar.
Wordt mijn afbeelding ergens geüpload?
Nee. Het bestand wordt met de File API van de browser gelezen, op een canvas op deze pagina getekend en door lokaal draaiende JavaScript in de container ingepakt. Geen enkel verzoek draagt de afbeelding ergens heen, wat je kunt bevestigen in het netwerkpaneel van je ontwikkelaarstools — of door de pagina te laden, offline te gaan en hem toch om te zetten.

Gerelateerde tools

Alle tools bekijken →