Viens de finir un kit d'assets pour ta boutique en ligne. Seize PNG transparents — logos en trois tailles, quelques badges d'angle, quelques designs de stickers. Ils sont parfaits dans Figma. Tu les exportes en PNG avec transparence activée, poses le dossier sur ton bureau et vérifies la taille totale : 2,4 Mo. Pour seize petits graphismes. Sur mobile, ce sont deux secondes de chargement avant que le reste de la page commence.
Alors tu les passes dans un compresseur. Les tailles chutent drastiquement — super. Mais ensuite tu uploades une version compressée sur ta page boutique et tu remarques quelque chose d'anormal sur les bords du logo : une fine ligne blanche là où il y avait un dégradé doux. Ou des marches d'escalier dentelées le long d'une courbe. C'est le piège de compression des PNG transparentes et presque personne n'en parle car la plupart des outils cachent le problème derrière un aperçu trop petit pour le voir. Je vais te montrer exactement ce qui se passe sous le capot, te donner des chiffres réels, et t'indiquer quelle approche convient à quel type d'asset.
Les chiffres : un vrai logo transparent, trois chemins de compression
J'ai construit une image test spécifiquement pour ça : une composition 1200×1200 pixels avec un badge logo central, un halo estompé (alpha doux) et plusieurs stickers à bords durs dans les coins. Elle utilise RGBA — quatre canaux au lieu de trois — donc chaque pixel porte rouge, vert, bleu et opacité. Je l'ai passée par trois chemins et j'ai tout mesuré :
| Méthode | Taille | Économie | Alpha doux préservé ? |
|---|---|---|---|
| Original (RGBA non optimisé) | 156,6 Ko | — | Oui — 649 298 pixels alpha partiel |
| Réencodage lossless (optimize uniquement) | 126,0 Ko | −19,6% | Oui, pixels identiques |
| PNG8 quantifié (256 couleurs, alpha 1-bit) | 11,3 Ko | −92,8% | Non — zéro pixel alpha partiel |
Ce que fait PNG8 vraiment (et pourquoi il abîme les bords doux)
PNG8 signifie PNG indexé. Au lieu de stocker une valeur RVB séparée pour chaque pixel, l'encodeur construit une palette — jusqu'à 256 couleurs au total — puis chaque pixel est juste un nombre pointant vers une entrée de palette. C'est drastiquement plus petit car un octet par pixel remplace trois (ou quatre avec alpha).
Le problème vient de comment PNG8 stocke la transparence. Dans un PNG indexé, chaque entrée de palette reçoit une seule valeur de transparence. La plupart des encodeurs arrondissent ça à totalement transparent ou totalement opaque — pas de place pour "37% semi-transparent". Chaque pixel qui était semi-transparent (bords anti-aliasing, ombres portées, halos, fondus progressifs) saute vers l'un des deux extrêmes.
Dans mon image test, l'original avait 649 298 pixels avec valeurs alpha intermédiaires — tout le halo doux plus l'anti-aliasing autour du cercle et de l'étoile. Après conversion PNG8 utilisant le même moteur que notre site (upng-js avec quantification médiane-cut, arrondi alpha à 1-bit), ce nombre est tombé exactement à zéro. Chacun de ces 649 mille pixels est devenu 255 (opaque) ou 0 (transparent). Visuellement, c'est le halo que tu vois dans le panneau central ci-dessus : un anneau dur où le halo s'estompait doucement auparavant.
Est-ce que ça compte ? Ça dépend entièrement de ce qu'il y a dans ton PNG transparent.
Quand PNG8 est parfaitement sûr (utilise-le agressivement)
Si ton image transparente ne contient que des formes à bords durs — logos couleur plate, icônes plates, stickers carrés ou arrondis, découpages produits photographiés contre un fond blanc pur — PNG8 est pratiquement de l'argent gratuit. Le canal alpha n'a rien de doux à ruiner, et tu obtiens une réduction de taille de plus de 90% avec zéro changement visuel.
- Logos de marque exportés depuis Illustrator/Figma comme exports vectoriels plats. Pas de halo, pas d'ombre portée, pas de flou. Ceux-ci se compressent magnifiquement en PNG8. Mes éléments de sticker d'angle dans le test en sont la preuve — ils semblent identiques avant et après.
- Découpages de produit (photos e-commerce sur fond blanc dont le fond a été retiré). La frontière entre produit et transparence est typiquement un masque propre issu de l'outil plume ou de la baguette magique de Photoshop. Bord dur, pas de fondu. Sûr pour PNG8.
- Sets d'icônes UI, graphiques style emoji, assets jeux pixel-art. Tous à bords durs par conception. PNG8 a pratiquement été inventé pour ceux-là.
- Designs de stickers print-on-demand. La plupart de plateformes POD veulent un PNG transparent simple avec forme solide. Sans effets. PNG8 coupe la taille d'upload de centaines de Ko à moins de 15 Ko, ce qui compte quand tu gères des dizaines de designs.
Quand PNG8 va te mordre (évite ou contourne)
- Logos avec ombres portées, halos ou flous externes. Ceux-ci dépendent de gradients alpha doux. PNG8 transforme ces gradients en anneaux concentriques durs. En taille de visualisation normale (200–400 px de large sur téléphone) tu ne remarqueras peut-être pas. En résolution complète ou écran Retina, le halo est évident.
- Texte anti-aliasing rendu en PNG transparent. Petites tailles de police (sous 24 px) utilisent l'anti-aliasing sous-pixel qui crée beaucoup de pixels alpha partiels le long des bords de caractères. PNG8 rend le texte denté ou légèrement plus épais/mince selon le seuil. Si ton logo contient du texte lisible, inspecte soigneusement après compression.
- Marques d'eau ou graphiques superposés avec opacité variable (comme un tampon "50% transparent"). PNG8 effondre toutes les valeurs intermédiaires. Ta marque d'eau devient soit totalement visible soit invisible — pas de milieu.
Si ton asset tombe dans cette catégorie, tu as trois options :
- Aplatis l'effet d'abord. Fusionne la couche de halo/ombre sur une couleur de fond solide, puis exporte en PNG ou JPEG non transparent. Maintenant tu n'as plus d'alpha à ruiner. Compresse normalement. C'est comme ça que la plupart des professionnels gèrent les assets de production finaux.
- Utilise uniquement l'optimisation lossless. Saute PNG8. Passe le fichier par un optimiseur PNG lossless (OxiPNG, zopfli) qui réencode le flux deflate plus efficacement sans toucher aux valeurs de pixels. Tu économiseras peut-être 15–25% au lieu de 93%, mais chaque pixel reste exactement comme conçu. Suffisant pour images héro et logos d'en-tête où la qualité n'est pas négociable.
- Accepte et vérifie en taille d'affichage.Compresse en PNG8, télécharge le résultat, ouvre-le côte à côte avec l'original à la taille réelle où il apparaîtra sur ta page web (pas zoomé). Si le halo est invisible à 1:1, utilise-le. La plupart d'utilisateurs voient des logos à 80–200 px de large où un halo de 2 px est sous le seuil de perception. Mais ne suppose pas — vérifie.
Flux de travail par lot : compresser 20 PNG transparentes d'un coup
Une fois que tu sais quelle méthode va avec quel asset, l'étape de compression prend environ dix secondes. Voici mon flux :
- Rassemble tes PNG transparentes. Mets-les tous dans un dossier. Mélange de logos, stickers, découpages — peu importe ce qui doit être réduit.
- Vérifie chacun rapidement à 200% de zoom. Cherche des bords doux, halos ou zones estompées près des limites de forme. Trie en deux piles : "que des bords durs" et "a alpha doux".
- Dépose tout le lot dans un compresseur navigateur.L'outil que j'utilise accepte jusqu'à 20 fichiers à la fois, tourne intégralement dans ton navigateur (rien ne monte sur serveur), et détecte le format automatiquement. Upload les 20 en un seul glisser-déposer.
- Laisse le moteur tourner PNG8.Pour la pile bords durs, la sortie par défaut est déjà optimale. Pour la pile alpha doux, prévisualise chaque résultat à 1:1 avant de décider de le garder ou passer en mode lossless.
- Télécharge le lot.Un clic télécharge tout comme fichiers individuels. Les noms de fichiers restent intacts. Pose directement dans ton CMS ou uplodeur plateforme.
Temps total depuis dossier ouvert jusqu'à téléchargement fini : environ 30 secondes pour un lot de 20 fichiers. Sans installation de logiciel. Sans création de compte. Et critiquement, tes fichiers originaux n'ont jamais quitté ton appareil — la compression s'est produite localement dans ton onglet navigateur.
Erreurs qui gaspillent des heures (j'ai fait la plupart)
- Convertir des PNG transparentes en JPEG.Ça détruit le canal alpha complètement. Tes zones transparentes se remplissent de blanc (ou noir selon l'outil). JPEG n'a aucun concept de transparence. Toute plateforme attendant un logo transparent le rejettera ou le rendra mal. Garde les PNG comme PNG.
- Ne pas vérifier les halos avant upload massif.Tu compresses 50 logos, tu te sens bien avec les 90% gagnés, tu uploades tout à ta boutique, et trois jours plus tard un client t'écrit : "ton logo a l'air cassé sur mon téléphone". Maintenant tu dois tout refaire. Vérifie ponctuellement à 1:1 d'abord.
- Utiliser des compresseurs côté serveur pour des assets non publiés.Ton matériel de marque pré-lancement voyage sur le serveur de quelqu'un d'autre. Les outils côté navigateur évitent ça complètement — le fichier ne quitte jamais ta machine.
- Supposer que tous les PNG se comportent pareil.Une capture d'écran enregistrée en PNG compresse bien avec PNG8 (ce sont surtout des couleurs plates). Une photo enregistrée en PNG est déjà erronée (devrait être JPEG). Un logo transparent avec halo est une troisième catégorie avec ses propres règles. Adapte la méthode au type de contenu.
- Sur-quantifier à 64 couleurs ou moins.Passer de 256 à 128 ou 64 n'économise presque pas d'octets supplémentaires (mon test a montré 11,3 Ko aux trois niveaux — la palette était déjà assez petite à 256). Mais la qualité visuelle dégrade notablement : des bandures apparaissent dans les gradients, les colors changent. Reste à 256 sauf si tu as besoin d'atteindre une cible de taille très spécifique sous 10 Ko.
Guides connexes pour situations spécifiques
Besoins de PNG transparent peuvent se connecter à d'autres tâches d'image. Ces guides couvrent les sujets adjacents en profondeur :
- Compressant des photos de produit (réglages qualité JPEG, exigences plateforme) ? Lis le guide de compression photos produit.
- Compression PNG générale sans se soucier de la transparence (captures, documents, graphiques plats) ? Le tutoriel compression PNG couvre les bases.
- Gérant des captures d'écran qui deviennent floues enregistrées en JPEG ? Le guide captures explique pourquoi PNG8 garde le texte net.
- Comprenant les niveaux de qualité JPEG en détail ? La comparaison profonde qualité JPEG compare q50 à q95 sur différents types d'image.
- Réduisant des images pour pièces jointes email ? Le guide compression email détaille les flux par lot pour tout format.
En résumé
Les PNG transparentes sont surdimensionnés parce que RGBA ajoute un quatrième canal et que la plupart d'outils design les exportent non optimisés. La compression PNG8 (quantification palette médiane-cut avec alpha 1-bit) peut les réduire de plus de 90% dans un onglet navigateur sans installation logicielle. La seule chose à surveiller est l'alpha doux — halos, ombres portées, texte anti-aliasing — que PNG8 transforme en bords durs. Si tes assets n'en ont aucun, compresse sans hésiter. S'ils en ont, aplatit l'effet, utilise le mode lossless, ou vérifie en taille d'affichage que le halo est invisible.
Ton logo mérite d'être net sur chaque écran. Il mérite aussi de charger vite. Les deux objectifs sont atteignables — tu as juste besoin de choisir le bon chemin pour l'asset spécifique que tiens en main.