FreeToGenerate.com

Quatre formats, mesurés dans votre propre navigateur — y compris celui que votre CDN envoie vraiment.

Quelque chose à compresser

Le fichier est lu dans votre navigateur et compressé sur place. Rien n'est envoyé, et c'est aussi pourquoi la seule limite de taille est ce que votre machine peut contenir.

Tailles compressées

brotli
Ce que servent réellement la plupart des CDN. HTTP l'écrit br dans Accept-Encoding, mais ici le nom du format est brotli : br n'est pas valide et déclenche une erreur.
deflate
Des données deflate dans une enveloppe zlib, qui coûte 8 octets même sans rien à compresser.
deflate-raw
Les mêmes données deflate sans aucune enveloppe : 2 octets de surcoût, et pas de somme de contrôle.
gzip
Celui que rapportent tous les outils de mesure. Son conteneur coûte 20 octets, le plus cher des quatre.

La compression est faite par votre propre navigateur via la norme Compression Streams, qui définit exactement quatre formats et autorise une implémentation à en refuser n'importe lequel.

Aussi disponible en : English · Español · Português · العربية

Calculer la taille gzip : gzip, brotli et deflate

Collez n'importe quoi et voyez sa taille compressée dans tous les formats que votre navigateur sait produire, avec le chiffre gzip remis à sa place.

Qu'est-ce que la taille gzip ?

La taille gzip, c'est le nombre d'octets que devient un fichier après compression — le chiffre qui traverse réellement le réseau, par opposition à celui qu'il occupe sur le disque. C'est l'unité dans laquelle s'écrivent les budgets de performance, car un paquet JavaScript de 300 Ko qui se compresse à 80 Ko coûte 80 Ko au visiteur.

La compression fonctionne en repérant les répétitions. C'est pourquoi le même procédé donne des résultats si différents selon le contenu : le balisage et le JSON se répètent sans arrêt et fondent énormément, tandis que la prose se répète bien moins et fond peu. Une image ou une archive zip a déjà vu ses répétitions supprimées et ne bougera presque pas.

Cette page compresse ce que vous lui donnez dans tous les formats que votre navigateur gère, et affiche les tailles côte à côte. Tout se passe dans le navigateur : rien de ce que vous collez ou sélectionnez ne quitte votre machine.

Comment l'utiliser

  1. Collez du texte, ou choisissez un fichier : les deux marchent. Le fichier est lu localement et jamais envoyé, donc sa taille n'est limitée que par ce que votre machine peut contenir.
  2. Lisez les tailles d'un format à l'autre : chaque ligne donne la taille compressée, le ratio par rapport à l'original et les octets gagnés. La plus petite est signalée.
  3. Regardez ce que votre navigateur a refusé : la ligne sous le tableau nomme tout format que votre navigateur n'a pas voulu produire, car la norme autorise une implémentation à en gérer moins de quatre.

Le chiffre gzip n'est pas celui qui part sur le réseau

Presque tous les outils de mesure rapportent gzip et s'arrêtent là. Pendant ce temps, le CDN placé devant un site moderne sert généralement du brotli, qui est un autre algorithme au résultat différent — et systématiquement plus petit.

Mesuré sur les fichiers source de ce site, brotli est ressorti entre 16 % et 28 % plus petit que gzip. Ce n'est pas un écart d'arrondi. Si votre budget dit 100 Ko compressés et que votre CDN sert du brotli, vous mesurez depuis le début quelque chose que vous n'envoyez pas, et vous êtes pessimiste d'un cinquième.

La norme Compression Streams qu'implémentent les navigateurs définit exactement quatre formats : brotli, deflate, deflate-raw et gzip. Il y a un piège dans les noms, car HTTP n'emploie pas ces mots — dans un en-tête Accept-Encoding, brotli s'écrit br, et demander br plutôt que brotli à un navigateur déclenche une erreur au lieu de compresser quoi que ce soit.

La compression peut grossir un fichier

Chaque format enveloppe sa sortie dans un conteneur, et ce conteneur a un coût fixe. Compresser absolument rien — une entrée vide — produit tout de même 20 octets de gzip, 8 de deflate, 2 de deflate-raw et 1 de brotli. C'est le plancher sous chacune des mesures de cette page.

Sur une entrée qui ne se compresse pas, le coût est faible mais réel. Donnez à la famille deflate des octets sans le moindre motif et la sortie fait 23 octets de plus que l'entrée, plus 5 par bloc de 64 Ko au-delà du premier ; brotli s'acquitte de la même tâche pour 4. Voilà pourquoi compresser un fichier déjà compressé est du gaspillage, et pourquoi un serveur qui gzippe un JPEG dégrade légèrement la réponse au lieu de l'améliorer.

La conséquence pratique concerne les petites réponses. Une réponse JSON de 200 octets est précisément le cas où le conteneur peut coûter plus que la compression ne fait gagner, et l'outil affiche alors un gain négatif plutôt que de le masquer.

Ce que cette page ne peut pas vous dire

Elle ne peut pas vous donner les octets exacts que votre serveur enverra. La compression a des niveaux d'effort et le compresseur du navigateur n'en expose aucun : vous obtenez ce que l'implémentation choisit, tandis qu'un CDN peut être réglé plus fort ou plus faible. Deux implémentations correctes du même format produisent légitimement des tailles différentes pour la même entrée.

Elle mesure aussi un fichier à la fois, isolément. Les tailles de transfert réelles dépendent du fait qu'une réponse soit compressée ou non en dessous d'un certain seuil, du tramage de la connexion elle-même, et pour de nombreuses petites ressources, du fait qu'elles aient d'abord été regroupées : plusieurs fichiers compressés ensemble battent presque toujours les mêmes fichiers compressés séparément, car la répétition entre eux devient exploitable.

Enfin, la liste des formats est celle que votre navigateur gère aujourd'hui. La ligne sous le tableau le rapporte au lieu de le supposer, car la norme autorise explicitement une implémentation à refuser un format, et les navigateurs le font.

Pourquoi est-ce gratuit ?

La compression est assurée par une API que votre navigateur possède déjà. Rien de ce que vous collez ou sélectionnez n'est envoyé, rien n'est journalisé, et il n'y a aucun compte à créer.

Sans inscription, sans limite, et sans filigrane sur ce que vous copiez.