Outils / Image / Encodeur JPG en Base64
Côté client

Encodeur JPG en Base64

Déposez un JPEG, obtenez une chaîne data:image/jpeg;base64 prête à copier sans envoyer le moindre octet.

Ce que fait l'outil

  • Produit le data URI complet avec le préfixe MIME image/jpeg correct
  • Ré-encodage sans perte octet par octet qui ne recompresse jamais votre photo
  • Encode en local dans le navigateur via Rust et WebAssembly, zéro requête réseau
  • Encode plusieurs JPEG d'un coup, sans limite de nombre de fichiers ni de taille

Déposez vos fichiers ici ou cliquez pour parcourir

PNG, JPG, WebP, BMP, TIFF, or AVIF

JPG en Base64 transforme une photo JPEG en une chaîne de texte prête à copier (un data URI), entièrement sur votre appareil et sans aucun envoi. Les développeurs y ont recours pour intégrer un petit JPEG directement dans un attribut src d'un img HTML, dans un background-image: url() en CSS, dans un bundle JS ou dans une charge utile JSON/API, afin que l'image s'affiche sans requête HTTP séparée ni hébergement externe. Comme le JPEG est souvent une photo de produit, une capture d'écran ou un actif de design confidentiel, le confier au serveur d'un inconnu juste pour obtenir une chaîne de texte est exactement le risque que cet outil élimine (jpg et jpeg désignent le même format, donc les deux extensions fonctionnent ici).

Ce que cette conversion fait réellement (et ce qu'elle ne fait PAS)

Encoder un JPEG en Base64 est sans perte à 100 %. L'opération ne recompresse pas, ne réaffiche pas et ne modifie pas un seul pixel ; elle lit les octets JPEG déjà compressés et les réexprime en texte ASCII, si bien que l'image décodée est identique à la source octet pour octet. Toute perte de qualité a eu lieu plus tôt, au moment où le JPEG a été enregistré à un certain niveau de qualité, et le Base64 n'y ajoute rien et n'en récupère rien. C'est une confusion fréquente : on s'attend à ce qu'un encodeur dégrade la photo, mais l'encodeur ne touche jamais aux données de l'image, seulement à leur représentation.

Le fait contre-intuitif : la sortie est plus grosse que la source, pas plus petite. Le Base64 fait correspondre chaque groupe de 3 octets à 4 caractères ASCII, dépensant 8 bits pour transporter 6 bits de données utiles, ce qui gonfle le texte d'environ 33 %. Un JPEG de 90 Ko devient un data URI d'environ 120 Ko, et une photo de 300 Ko atteint près de 400 Ko. L'encodeur émet un data URI correct en trois parties : le schéma data:, le type MIME image/jpeg (attention, image/jpeg, pas image/jpg), et le marqueur ;base64, avant la charge utile. Une vraie charge utile JPEG commence toujours par les caractères /9j/, qui décodent vers les octets magiques JPEG FF D8 FF, ce préfixe est donc un moyen rapide de confirmer que la chaîne contient bien un JPEG. Une chose qu'elle ne peut pas faire : le JPEG n'a pas de canal alpha, donc, contrairement à un PNG, vous ne pouvez pas intégrer une image transparente sous forme de data URI JPEG. Si vous avez besoin de transparence, la source doit être un PNG ou un WebP.

Quand choisir JPG en Base64 plutôt que l'alternative

N'intégrez un JPEG en data URI que pour des images vraiment petites, environ moins de 5 à 10 Ko, où éviter un aller-retour HTTP séparé (DNS, TCP, TLS, en-têtes de requête) coûte moins cher que les 33 % de gonflement du texte. Au-delà d'environ 10 Ko, un fichier .jpg normal mis en cache se charge presque toujours plus vite, car un data URI ne peut pas être mis en cache séparément du HTML ou du CSS qui le contient et est re-téléchargé avec chaque fichier qui l'intègre. Intégrer un gros JPEG dans le CSS est encore pire : cela rend la feuille de style bloquante pour le rendu et plus lourde, ce qui retarde directement le premier affichage. Une photographie complète est donc un mauvais candidat au data URI ; réservez l'intégration aux toutes petites miniatures ou aux placeholders flous de type LQIP, et si votre photo est volumineuse, compressez-la d'abord avec les outils image. Si vous avez réellement besoin de transparence, dirigez-vous plutôt vers l'encodeur PNG en Base64, qui préserve l'alpha.

Comment convertir

  1. Déposez le JPEG dans l'encodeur (il est lu en local dans votre navigateur, jamais envoyé).
  2. Le fichier est encodé sur votre appareil en un data URI Base64, complet avec le préfixe data:image/jpeg;base64,.
  3. Copiez la chaîne du data URI, ou téléchargez-la en fichier .txt ; attendez-vous à une augmentation de taille d'environ 33 % par rapport à la source, puisque les data URI s'intègrent directement dans le HTML et le CSS sous forme de texte.

Aucun envoi. Tout s'exécute sur votre appareil.

L'encodage s'exécute en Rust compilé en WebAssembly, à l'intérieur de l'onglet de votre navigateur. Votre JPEG est lu en mémoire localement, encodé, puis renvoyé sous forme de texte, sans aucune requête réseau pour le fichier lui-même. Une fois la page chargée, l'outil fonctionne entièrement hors ligne, il n'y a rien à supprimer puisque rien n'a jamais été envoyé, et vous pouvez le vérifier vous-même en ouvrant l'onglet Réseau des outils de développement et en constatant l'absence de tout envoi de fichier pendant l'encodage. Cela compte d'autant plus ici que les JPEG que les développeurs encodent en Base64 sont généralement des photos de produits, des captures d'écran d'applications et des actifs de design confidentiels qui ne devraient jamais se trouver sur un serveur tiers. Plusieurs concurrents prétendent encoder côté client, mais certains envoient encore les données via un « HTTPS sécurisé » ; avec un WebAssembly vérifiable, vous pouvez couper votre connexion et regarder l'outil continuer à fonctionner.

Aucune limite

Encodez autant de JPEG que vous le souhaitez en un seul lot, sans limite de nombre de fichiers ni de taille liée à des contraintes d'envoi. Pas de filigrane, pas d'inscription, pas de publicité, pas de sortie tronquée.

Questions fréquentes

La conversion de mon JPEG en Base64 l'envoie-t-elle vers un serveur ?
Non. Le JPEG est lu et encodé entièrement dans votre navigateur grâce à Rust compilé en WebAssembly, sans aucune requête réseau pour le fichier. Vous pouvez le confirmer en surveillant l'onglet Réseau des outils de développement pendant l'encodage, ou en vous déconnectant d'internet et en constatant que cela fonctionne toujours.
Qu'est-ce que le préfixe data:image/jpeg;base64 et dois-je l'inclure ?
C'est l'en-tête en trois parties d'un data URI : data: est le schéma, image/jpeg est le type MIME qui indique au navigateur comment interpréter la charge utile, et ;base64, signale que le texte qui suit est encodé en Base64. Vous devez l'inclure, car sans ce préfixe un navigateur n'affichera pas la chaîne comme une image.
Pourquoi ma chaîne Base64 est-elle plus grosse que le fichier JPEG d'origine ?
Le Base64 représente chaque groupe de 3 octets binaires par 4 caractères ASCII, ce qui ajoute environ 33 % à la taille. Un JPEG de 90 Ko devient une chaîne d'environ 120 Ko, donc cette croissance est attendue et constitue le coût inévitable de la transformation du binaire en texte sûr et collable.
L'encodage Base64 réduit-il la qualité de mon JPEG ?
Non. Le Base64 est une réexpression textuelle sans perte des octets compressés existants, pas une recompression, donc l'image décodée est identique à la source. Toute perte de qualité a déjà eu lieu lorsque le JPEG a été enregistré à un niveau de qualité donné, et l'encodage n'y ajoute rien et n'en retire rien.
Comment utiliser un data URI JPEG dans un src d'img HTML ou un background-image CSS ?
En HTML, collez le data URI complet comme source de l'image, par exemple <img src="data:image/jpeg;base64,/9j/4AAQ...">. En CSS, utilisez-le dans une déclaration de fond, par exemple background-image: url("data:image/jpeg;base64,/9j/4AAQ..."), en gardant à l'esprit qu'un gros data URI rendra la feuille de style bloquante pour le rendu.
Comment décoder une chaîne Base64 pour récupérer un fichier .jpg ?
Collez le data URI complet (ou le Base64 brut situé après la virgule) dans un décodeur, qui inverse la correspondance 4 caractères pour 3 octets afin de reconstruire les octets JPEG d'origine. Comme l'aller-retour est sans perte, le .jpg récupéré est identique octet pour octet au fichier que vous avez encodé.
Dois-je utiliser image/jpeg ou image/jpg dans le data URI ?
Utilisez toujours image/jpeg. Le type MIME enregistré pour le JPEG est image/jpeg, tandis que image/jpg n'est pas un type officiel et certains navigateurs ou analyseurs ne le reconnaîtront pas, même si l'extension de fichier s'écrit couramment .jpg.
Quand NE devrais-je PAS convertir un JPEG en Base64 ?
Évitez le Base64 pour toute image au-dessus d'environ 10 Ko, car un .jpg lié avec la mise en cache du navigateur se charge plus vite et un data URI ne peut pas être mis en cache séparément de son fichier hôte. Les photographies complètes sont de mauvais candidats parce qu'elles sont volumineuses ; n'intégrez que les toutes petites miniatures ou les placeholders flous.
Puis-je utiliser une image JPEG en Base64 dans une signature d'e-mail ?
C'est peu fiable. Gmail et plusieurs autres clients de messagerie suppriment ou refusent d'afficher les images en data URI Base64, si bien que l'image apparaît souvent cassée dans la boîte de réception du destinataire. Pour les signatures, liez plutôt une image hébergée au lieu de l'intégrer.
Puis-je convertir plusieurs JPEG en Base64 d'un coup ?
Oui, vous pouvez encoder plusieurs JPEG en un seul passage, sans limite de nombre de fichiers ni de taille. Chacun est encodé indépendamment et localement, de sorte qu'un dossier entier de photos peut être traité ensemble sans qu'aucune ne touche un réseau.

Outils associés : encodez d'autres formats avec l'encodeur PNG en Base64, ou parcourez l'ensemble des outils image.