La réponse courte
Araluma repose sur une architecture hybride : deux outils s’exécutent entièrement dans votre navigateur, sans aucun téléversement, et deux outils font transiter une unique requête réseau par notre propre infrastructure lorsque le navigateur ne peut pas égaler la qualité obtenue côté serveur. Nous vous indiquons dans quel mode vous vous trouvez, dans chaque outil et sur cette page.
| Outil | Où le traitement s’effectue |
|---|---|
| Circle Crop | 100 % dans votre navigateur, Canvas API. Aucun téléversement, fonctionne hors ligne. |
| Aperçu Compress (curseur + comparaison de formats) | 100 % dans votre navigateur, canvas.toBlob. Aucun téléversement. |
| Téléchargement final Compress | Un aller-retour vers notre service à api.araluma.com (Fastify + sharp + libvips sur un VPS en Allemagne). |
| Supprimer l’arrière-plan | Un aller-retour vers un Cloudflare Worker qui exécute BiRefNet sur les GPU edge de Cloudflare, avec un fallback WebAssembly dans votre navigateur si le cloud est inaccessible. |
Vous pouvez vérifier les affirmations côté client en environ 30 secondes : ouvrez les DevTools → Network, effacez le journal, puis utilisez Circle Crop ou le curseur d’aperçu Compress — vous constaterez qu’aucune requête transportant les octets de votre image ne quitte la page. Pour les deux outils passant par nos serveurs, vous verrez exactement un téléversement par opération, vers les endpoints nommés ci-dessus.
Pourquoi une architecture hybride
La plupart des outils d’image en ligne se situent à l’un des deux extrêmes : tout téléverser sur un serveur (vous attendez des allers-retours et l’opérateur conserve votre fichier), ou tout traiter dans le navigateur (vous payez en qualité et en vitesse sur les étapes d’encodage et d’IA). Aucun extrême ne l’emporte partout.
Nous avons choisi le côté client là où les navigateurs sont déjà excellents — l’élément <canvas>
gère le recadrage, la rotation et l’encodage lossy en prévisualisation JPG/WebP — et le côté serveur
là où le navigateur reste mesurrablement en retrait :
- Compression d’images, lors du téléchargement final.
sharp+libvips 8.17côté serveur produit des fichiers 10 à 15 % plus petits octet pour octet que les encodeurs navigateur à même qualité visuelle, et donne accès au réglage de vitesse/chroma AVIF et à la sortie JPEG XL que le navigateur n’expose pas. Le curseur et l’aperçu s’exécutent toujours dans votre navigateur pour que l’itération reste instantanée ; seul le bouton « Télécharger » passe par notre service. - Suppression d’arrière-plan par IA, sur le chemin par défaut. Le modèle BiRefNet qu’exécute
cf.image.segmentde Cloudflare (même architecture que remove.bg) nécessite un vrai GPU pour terminer en 1 à 3 secondes. Le fallback dans le navigateur (ISNet via ONNX Runtime + WebAssembly) fonctionne, mais prend 20 à 40 secondes lors du premier lancement puis 2 à 10 secondes ensuite, et produit une découpe visiblement moins précise sur les cheveux, la fourrure et les bords fins.
Le coût que nous acceptons sur ces deux chemins serveur est un aller-retour par opération. Le coût que nous évitons en restant côté client partout ailleurs (Circle Crop, l’aperçu Compress) est celui de l’aller-retour sur les parties du flux de travail qui itèrent le plus vite.
Le pipeline, étape par étape
1. Vous sélectionnez un fichier
Via le sélecteur de fichiers, le glisser-déposer ou le collage, le navigateur remet à JavaScript
un objet File. JavaScript lit les octets via FileReader ou Blob.arrayBuffer().
À aucun moment de cette étape le fichier n’est envoyé sur le réseau, quel que soit
l’outil utilisé.
2. Le navigateur décode l’image
Les navigateurs modernes décodent nativement les formats JPG, PNG, WebP, GIF et AVIF. Nous utilisons
createImageBitmap() pour convertir les octets bruts en un bitmap exploitable par le GPU,
hors du thread principal. Pour le format HEIC sur les navigateurs qui ne le décodent pas nativement,
nous recourons à un décodeur WebAssembly qui s’exécute localement dans votre navigateur.
3. L’outil fait son travail — c’est là que les chemins divergent
- Circle Crop. Une transformation de pixels Canvas 2D avec un tracé de recadrage circulaire. Le bitmap est dessiné dans un
<canvas>à la rotation et au zoom choisis, le recadrage circulaire est appliqué, et l’intérieur du cercle est relu en tant qu’ImageData. Cropper.js gère l’interaction du cadre de recadrage. Entièrement dans votre navigateur. - Compress — aperçu et curseur. Réencode les formats JPG, PNG, WebP ou AVIF via
canvas.toBlobpour que l’aperçu côte à côte se mette à jour à mesure que vous déplacez le curseur de qualité. Entièrement dans votre navigateur. Aucun téléversement à ce stade. - Compress — Téléchargement. Lorsque vous appuyez sur « Télécharger », l’image est envoyée une seule fois à
api.araluma.com(un service Fastify fonctionnant sur un VPS en Allemagne opéré par Hostinger, Node 24 +sharp 0.34+libvips 8.17, les mêmes bibliothèques C qu’utilise Squoosh sur son chemin serveur). Elle est réencodée avec les mêmes paramètres que vous avez définis dans l’aperçu, et les octets sont retransmis en streaming vers votre navigateur. Le service maintient un cache adressé par contenu et isolé par tenant (un hash des octets d’entrée + paramètres), plafonné à 500 Mo, de sorte que retélécharger la même image avec les mêmes réglages rejoue les octets mis en cache — le cache n’est pas indexé par utilisateur, adresse IP ou nom de fichier. Si le service est inaccessible, l’outil revient au blob d’aperçu produit dans le navigateur. - Supprimer l’arrière-plan — chemin cloud par défaut. L’image est téléversée une seule fois vers un Cloudflare Worker (
araluma-bg-remover), mise en attente dans un bucket R2 privé (araluma-bg-temp), traitée par la transformationcf.image.segmentde Cloudflare qui exécute le modèle BiRefNet sur les GPU edge de Cloudflare, et la découpe est retransmise en streaming. L’objet R2 mis en attente est supprimé dans l’heure par une règle de cycle de vie R2, quel que soit le résultat. Une photo typique se traite en 1 à 3 secondes. Des limites quotidiennes par IP et une limite de téléversement à 5 Mo maintiennent la viabilité du niveau gratuit. - Supprimer l’arrière-plan — fallback WebAssembly. Si le Worker est inaccessible (réseau coupé, pare-feu strict, quota quotidien atteint ou fichier dépassant la limite cloud de 5 Mo), l’outil bascule silencieusement vers le modèle ISNet s’exécutant localement dans votre navigateur via ONNX Runtime Web avec WebAssembly. Le premier lancement télécharge le modèle d’environ 80 Mo et prend 20 à 40 secondes ; les lancements suivants prennent 2 à 10 secondes. Aucun téléversement sur ce chemin — vous pouvez le vérifier dans les DevTools.
4. Vous téléchargez le résultat
Le bitmap de sortie est encodé dans un Blob, encapsulé dans une object URL et proposé
à la boîte de dialogue standard d’enregistrement de fichier de votre navigateur. Le fichier
apparaît sur votre disque.
Comment le vérifier vous-même
Choisissez la méthode que vous préférez :
Méthode 1 — Observez l’onglet Network
- Ouvrez Araluma dans un nouvel onglet et ouvrez les DevTools → Network.
- Utilisez Circle Crop ou le curseur d’aperçu Compress. Vous verrez des requêtes pour HTML/CSS/JS/polices uniquement, ainsi que les modules WebAssembly pertinents lors du premier usage. Aucune requête ne transportera les octets de votre image.
- Utilisez maintenant Compress → Télécharger ou Supprimer l’arrière-plan. Vous verrez exactement un
POSTversapi.araluma.com(Compress) ou vers le Worker Supprimer l’arrière-plan, transportant votre image — et une réponse revenant avec le résultat. Survolez n’importe quelle requête pour voir la taille et le temps.
La colonne « Initiator » vous indique quel script a déclenché chaque requête, et la colonne « Type » indique ce qui a été envoyé. Nous ne cachons ni l’un ni l’autre.
Méthode 2 — Utilisez les outils hors ligne
- Chargez n’importe quelle page d’outil Araluma. Utilisez Supprimer l’arrière-plan une fois sur une petite image pour que le modèle ISNet dans le navigateur soit mis en cache.
- Ouvrez les DevTools → Network → cochez Offline (ou coupez simplement votre Wi-Fi).
- Rechargez la page ; les assets statiques sont en cache, elle se charge quand même.
- Essayez chaque outil :
- Circle Crop et l’aperçu Compress continuent de fonctionner — ils n’ont jamais eu besoin du réseau.
- Compress Télécharger revient au blob d’aperçu produit dans le navigateur (encodage légèrement moins efficace, mais fonctionnel).
- Supprimer l’arrière-plan bascule vers le modèle ISNet WebAssembly et fonctionne sans aucune requête sortante.
Si les quatre outils ont fonctionné hors ligne (l’un légèrement dégradé, les trois autres identiques), par définition aucun serveur n’a vu votre image.
Ce que nous voyons — et ce que nous ne voyons pas
Sur les chemins côté client, nous ne voyons rien de votre image. Il n’y a aucune requête à examiner, aucun cache pour la stocker, aucune ligne de log à analyser.
Sur les chemins côté serveur :
- Compress Télécharger voit les octets de l’image pendant la durée de l’encodage (généralement quelques centaines de millisecondes), conserve une entrée de cache adressée par contenu pendant la durée de vie du cache, et c’est tout. Le cache n’est pas indexé par utilisateur, adresse IP, nom de fichier ou tout autre identifiant permettant de retrouver « vos » images. Nous n’enregistrons pas le contenu des images. Le service d’encodage est partagé entre les deux mêmes tenants que servait la v1 avant le basculement, avec des CORS, des limites de débit et des URL canoniques signées par HMAC par tenant.
- Supprimer l’arrière-plan voit l’image pendant la durée du téléversement de mise en attente et de l’appel de segmentation (généralement 1 à 3 secondes au total), après quoi la copie en attente est supprimée par la règle de cycle de vie R2. Nous ne transmettons jamais vos octets à un fournisseur de modèle tiers — le modèle BiRefNet s’exécute dans la propre infrastructure de Cloudflare, pas sur une API externe de type remove.bg / fal.ai / Replicate.
Sur chaque chemin, notre fournisseur d’analytics (Cloudflare Web Analytics) enregistre des données d’affichage de pages agrégées — URL, pays, famille de navigateur, Core Web Vitals. Aucun cookie, aucun identifiant persistant, rien lié à une personne.
Pour les outils qui téléchargent un module WebAssembly lors du premier usage (le décodeur HEIC, le modèle ONNX ISNet), notre hébergeur voit que quelqu’un a récupéré le module — de la même façon qu’il voit quelqu’un récupérer le fichier CSS. Le module lui-même ne contient aucune information sur votre image.
L’inventaire complet des données figure dans notre politique de confidentialité.
La stack technologique
Pour les curieux :
- Astro — le générateur de sites statiques. Chaque page est livrée en HTML brut avec des « islands » JavaScript à amélioration progressive uniquement là où résident les outils interactifs.
- CSS vanilla avec propriétés personnalisées — sans Tailwind, sans CSS-in-JS. L’intégralité du système de design tient dans un seul fichier
tokens.css. canvas.toBlob/<canvas>— encodage JPEG, PNG, WebP, AVIF (pris en charge par le navigateur) dans l’aperçu Compress et dans Circle Crop.- Cropper.js — la couche d’interaction du rectangle de recadrage.
- ONNX Runtime Web — exécute le fallback ISNet WebAssembly pour Supprimer l’arrière-plan.
- Cloudflare Pages — héberge le build statique, le sert depuis l’edge.
- Cloudflare Workers + R2 +
cf.image.segment(BiRefNet) — le pipeline par défaut de Supprimer l’arrière-plan. - Fastify +
sharp 0.34+libvips 8.17sur Node 24 — le service de téléchargement Compress àapi.araluma.com, sur un VPS Hostinger en Allemagne. - Cloudflare Web Analytics — comptages de pages vues agrégés, sans cookies.
Compatibilité des navigateurs
Tous les outils fonctionnent sur la version actuelle et la précédente de Chrome, Firefox, Safari
et Edge — bureau et mobile. Le site utilise l’amélioration progressive : là où un navigateur prend
en charge une API plus récente (ex. : showSaveFilePicker, OffscreenCanvas), nous l’utilisons ;
là où ce n’est pas le cas, nous revenons à l’équivalent plus ancien. Il n’y a pas de barrière
« votre navigateur n’est pas pris en charge ».
Les seules exigences absolues sont JavaScript (pour tout outil) et une connexion réseau (uniquement lors de l’utilisation de Compress Télécharger ou du chemin par défaut de Supprimer l’arrière-plan — les autres chemins fonctionnent entièrement hors ligne après le premier chargement de page).
Questions
Quelque chose que nous n’avons pas couvert ? Écrivez-nous à support@araluma.com. Les questions techniques sont les bienvenues.