Les outils de fichiers dans le navigateur font le travail à l'intérieur de la page plutôt que sur un serveur. Votre fichier est lu depuis le disque par la File API, traité par un moteur WebAssembly tel que qpdf ou FFmpeg exécuté dans l'onglet, et réécrit sous forme de téléchargement. Aucune étape de téléversement n'existe, rien n'est donc envoyé.
L'architecture comporte trois parties. Les API File et Blob déplacent les octets entre votre disque et la page sans aller-retour réseau. WebAssembly exécute des moteurs à l'origine écrits pour le bureau, c'est pourquoi les résultats correspondent à un outil de bureau plutôt qu'à une approximation web simplifiée. Canvas, les Web Workers et MediaRecorder couvrent les tâches qui nécessitent du dessin, du traitement en arrière-plan ou une caméra. Le compromis est que la première utilisation télécharge le moteur, et que tout doit tenir dans la mémoire d'un seul onglet.
La plupart des gens rencontrent cette idée dans une mention de confidentialité sur une page d'outil : les fichiers ne quittent jamais votre appareil. Cette phrase est vraie ou ne l'est pas, et elle est décidée par l'architecture plutôt que par l'intention. Ce guide explique ce qu'un navigateur peut réellement exécuter aujourd'hui, pourquoi l'étape de téléversement disparaît lorsqu'on construit de cette façon, et les coûts qui l'accompagnent.
Compresseur d'image
Un exemple concret. Canvas et OxiPNG s'exécutent dans l'onglet, les tailles avant et après sont affichées côte à côte, et le fichier n'est jamais téléversé.
Deux architectures : l'aller-retour serveur et l'onglet local
La plupart des convertisseurs en ligne suivent le même schéma. Votre navigateur envoie le fichier à un serveur par un téléversement HTTP, le serveur exécute un outil comme ImageMagick ou un FFmpeg sans interface, et un lien de téléchargement revient. Le travail est réel et souvent rapide, mais le fichier doit quitter votre machine pour que cela se produise, et il reste sur cette machine aussi longtemps que l'opérateur le conserve.
Un outil dans le navigateur conserve les mêmes étapes et supprime le serveur. La lecture du fichier, l'exécution du moteur et l'écriture du résultat se font toutes dans l'onglet. Ce n'est pas une petite variation du modèle de téléversement. Cela élimine toute une classe de problèmes, car il n'y a ni transfert à intercepter, ni file d'attente, ni fenêtre de conservation à lire.
| Étape | Outil basé sur un serveur | Outil dans le navigateur |
|---|---|---|
| Lecture du fichier | Copié dans leur stockage | Lu par la File API, reste local |
| Traitement | Leur CPU, généralement en file d'attente | Votre CPU, dans l'onglet |
| Résultat | Un lien de téléchargement qui expire | Un téléchargement Blob, prêt immédiatement |
| Qui peut lire le fichier | Quiconque ayant accès à leur stockage | Vous seul |
Ce que le navigateur exécute réellement
Un rapide tour de la pile technique, car ces capacités sont ce qui rend l'argument de confidentialité possible plutôt qu'une couche marketing ajoutée par-dessus.
WebAssembly amène les moteurs de bureau dans l'onglet
WebAssembly est un format binaire compact qui s'exécute à une vitesse proche du natif dans une machine virtuelle en bac à sable. Les moteurs écrits en C, C++ ou Rust y sont compilés et livrés comme des fichiers ordinaires : qpdf pour le chiffrement PDF, FFmpeg pour la vidéo et l'audio, Tesseract pour la reconnaissance optique de caractères, pdf-lib pour construire et modifier des PDF, et OxiPNG pour l'optimisation PNG sans perte. PDF.js gère le rendu PDF et l'extraction de texte. Comme ce sont les mêmes moteurs que sur le bureau, la sortie n'est pas une approximation web : une vidéo encodée par la version FFmpeg de votre onglet est la sortie de FFmpeg.
Canvas et le pipeline d'images
Les images sont la seule catégorie qui n'a pas besoin de WebAssembly. La Canvas API expose la même surface de dessin qu'un éditeur d'images natif. createImageBitmap décode un fichier, un canvas conserve les pixels, et toBlob réencode le résultat en PNG, JPEG, WebP ou AVIF. Le recadrage, le redimensionnement, le filigrane et la conversion de format sont tous des opérations sur les pixels de cette surface. Le Compresseur d'image l'associe à OxiPNG pour la sortie PNG, qui recompresse le fichier sans perte au lieu de sacrifier la qualité.
Les Web Workers maintiennent l'interface active
Un travail lourd sur le thread principal gèle la page, les tâches longues s'exécutent donc dans un Web Worker, un thread d'arrière-plan sans accès au DOM. Les outils vidéo confient le travail à FFmpeg à l'intérieur d'un worker et reçoivent en retour des lignes de journal et des événements de progression, c'est pourquoi la barre de progression continue d'avancer pendant que l'encodeur travaille. Tesseract suit le même schéma. Notamment, la configuration OCR ici utilise une version mono-thread du moteur, elle n'a donc pas besoin des en-têtes SharedArrayBuffer que de nombreux outils WebAssembly exigent du serveur.
File et Blob déplacent les octets
La File API est ce qui remplace le téléversement. Lorsque vous déposez un fichier sur la page, JavaScript reçoit un objet File, et file.arrayBuffer() lit ses octets en mémoire à la demande. Le résultat est un Blob, qui peut devenir une URL locale temporaire ou être remis directement à un téléchargement. Les octets voyagent du disque à la mémoire et retour, et aucun chemin de code dans cette boucle ne parle à un réseau. C'est aussi pourquoi un outil de navigateur n'a aucune limite de taille de téléversement imposée par un serveur, seulement la limite de mémoire de l'appareil.
Pourquoi le traitement local signifie que rien n'est téléversé
L'affirmation est facile à énoncer et facile à vérifier. Un téléversement est une requête réseau qui transporte votre fichier, et un outil de navigateur n'en fait jamais, car il n'y a rien à l'autre bout qui en ait besoin. Les seules requêtes qu'une page comme celle-ci effectue concernent son propre code et ses ressources : le HTML, la feuille de style, le moteur à la première utilisation et la police.
Vous n'êtes pas obligé de le croire sur parole. Ouvrez les outils de développement du navigateur, passez au panneau réseau, videz-le, puis traitez un fichier et observez. Les requêtes qui apparaissent transportent du code et des ressources. Aucune ne transporte votre document, et si vous vous déconnectez du réseau après le chargement du moteur, le traitement fonctionne toujours. Il existe un guide pas à pas plus long sur vérifier si un outil téléverse votre fichier si vous voulez la procédure complète.
| Requête que vous verrez | Ce qu'il transporte |
|---|---|
| La page, son CSS et son JavaScript | Code du site, pas votre fichier |
| Le moteur, à la première utilisation | Un outil compilé, mis en cache ensuite |
| Polices web | Une police de caractères |
| Script d'analyse | Une vue de page, pas des octets de fichier |
La dernière ligne compte car c'est la source habituelle de fausses alertes. Les analyses se chargent sur la page et signalent qu'une page a été vue, pas le contenu de votre document. Ce site charge lui-même Google Tag Manager, c'est pourquoi le panneau réseau affiche un script de Google. Cette requête signale une vue de page, et ce n'est pas un transfert de fichier.
Ce que cela vous coûte
Le traitement local n'est pas gratuit, et la version honnête de l'argument mérite d'être énoncée clairement. Trois coûts apparaissent, et un quatrième point explique où le navigateur s'arrête.
- Le premier lancement télécharge. Chaque moteur est récupéré une fois : environ 30 MB pour le cœur FFmpeg derrière les outils vidéo et audio, environ 6,7 MB pour le moteur OCR et les données d'anglais, environ 1,3 MB pour le moteur PDF, et environ 1,4 MB pour le worker PDF.js utilisé pour les aperçus de pages. Rien de tout cela n'est votre fichier, et tout est mis en cache, mais un démarrage à froid sur une connexion lente est un démarrage lent.
- La mémoire est le plafond. Tout ce que le moteur lit et écrit vit dans un seul onglet. Un outil de bureau lit un gros fichier en flux depuis le disque, tandis qu'un onglet de navigateur le conserve entier, une vidéo ou un PDF énorme peut donc épuiser la mémoire avant la fin. Certains outils fixent un plafond ferme pour cette raison, comme la limite de 50 MB sur l'outil de déverrouillage PDF.
- Un serveur peut être plus rapide. L'encodage vidéo est limité par le CPU, et une machine dédiée avec plus de cœurs et un cache plus chaud battra un onglet de portable. La version navigateur s'appuie aussi sur l'encodage logiciel plutôt que sur un encodeur matériel, elle ne bénéficie donc pas de l'accélération GPU qu'une version native peut utiliser.
- Certaines tâches nécessitent encore un serveur. La suppression d'arrière-plan, l'effacement d'objets et l'amélioration générative d'image dépendent de grands modèles qu'aucun budget de téléchargement raisonnable ne couvre. Ces trois-là sont gérés par Cloud AI et ils téléversent bien l'image. Tout le reste sur le site est local.
Pour un document de quelques mégaoctets ou un clip d'une minute, aucun de ces coûts ne se fait sentir, et le compromis achète la confidentialité et l'absence de quotas. Pour un enregistrement 4K de deux heures, un outil de bureau ou une tâche serveur est le meilleur choix, et la réponse honnête est de le dire.
Le même schéma sur l'ensemble des outils
Le page d'accueil regroupe les outils en cinq sections, et l'architecture est la même dans chacune. Le travail PDF s'exécute sur qpdf, pdf-lib et PDF.js. Par exemple Fusionner un PDF combine des fichiers avec pdf-lib, tandis que PDF en texte extrait le texte avec PDF.js et ne se rabat sur Tesseract que pour les pages scannées. Le travail d'image s'exécute sur Canvas et OxiPNG. La vidéo et l'audio s'exécutent sur FFmpeg, avec Compresseur vidéo et les outils audio partageant un seul moteur. L'OCR s'exécute sur Tesseract. Les trois outils Cloud AI sont l'exception, et le site les étiquette comme tels plutôt que de brouiller la frontière.
La conséquence pratique est que vous pouvez raisonner sur n'importe quel outil de la même manière. S'il nomme un vrai moteur et l'exécute dans l'onglet, le fichier reste sur place. S'il a besoin d'un modèle plus gros qu'un navigateur ne peut télécharger, il dira qu'il téléverse, et il devrait le dire sur la page plutôt que dans une note de bas de page.