Comment fonctionnent les outils de fichiers dans le navigateur (et pourquoi rien n'est téléversé)

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 page d'accueil d'Aihangsoft en thème sombre, avec pour titre Chaque outil d'image, de PDF et de vidéo, directement dans votre navigateur
Le badge au-dessus du titre résume tout le principe du site : le travail se fait dans le navigateur, il n'y a donc aucune étape de téléversement à croire ou à suspecter.

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é.

Essayez un outil local

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.

ÉtapeOutil basé sur un serveurOutil dans le navigateur
Lecture du fichierCopié dans leur stockageLu par la File API, reste local
TraitementLeur CPU, généralement en file d'attenteVotre CPU, dans l'onglet
RésultatUn lien de téléchargement qui expireUn téléchargement Blob, prêt immédiatement
Qui peut lire le fichierQuiconque ayant accès à leur stockageVous 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 verrezCe qu'il transporte
La page, son CSS et son JavaScriptCode du site, pas votre fichier
Le moteur, à la première utilisationUn outil compilé, mis en cache ensuite
Polices webUne police de caractères
Script d'analyseUne 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.

Une rangée de fiches d'outils image sur la page d'accueil d'Aihangsoft, chaque fiche nommant ce que fait l'outil
Les outils dans le navigateur sont regroupés par type de fichier. Aucun d'eux n'a besoin d'un compte, et aucun n'envoie le fichier où que ce soit.

Questions fréquentes

Il lit le fichier depuis votre disque jusque dans la page elle-même, exécute le code de traitement dans l'onglet, et rend le résultat sous forme de téléchargement. Le fichier est livré à JavaScript via la File API et ne quitte jamais la machine, car aucune partie du pipeline n'a besoin d'un serveur. Les moteurs qui font le travail sont compilés en WebAssembly et livrés comme des fichiers de script ordinaires : qpdf pour le chiffrement PDF, FFmpeg pour la vidéo et l'audio, Tesseract pour l'OCR, PDF.js et pdf-lib pour lire et écrire des PDF, et OxiPNG pour l'optimisation PNG sans perte. À la première utilisation, la page télécharge le moteur dont elle a besoin, c'est du code, pas votre document. Ensuite, l'onglet garde le moteur en mémoire et la même page peut traiter fichier après fichier sans aucune activité réseau. Vous pouvez l'observer dans les outils de développement du navigateur : les requêtes que vous voyez transportent le moteur, les polices et les ressources de la page, et aucune ne transporte votre fichier.
Pas tout à fait, mais c'est bien plus proche que JavaScript seul. WebAssembly s'exécute à une vitesse proche du natif pour le calcul, et les moteurs ici sont les vrais outils, pas des réimplémentations : qpdf est le même qpdf que vous exécuteriez sur un bureau, et FFmpeg est le même FFmpeg compilé pour le navigateur. L'écart vient de l'environnement plutôt que du modèle d'exécution. Un bac à sable de navigateur ne peut pas utiliser toutes les fonctionnalités CPU qu'attend une version native, et le travail s'exécute dans un seul onglet au lieu d'un processus avec accès direct au disque et à plusieurs cœurs. Les encodeurs qui s'appuient sur l'accélération matérielle, comme un encodeur vidéo GPU, ne font pas partie de la version WebAssembly, le travail vidéo retombe donc sur l'encodage logiciel. La mémoire est un autre facteur : tout ce que le moteur lit et écrit doit tenir dans l'onglet, une tâche qu'un outil de bureau lit en flux depuis le disque doit donc être conservée en mémoire ici.
Les limites sont la mémoire, la vitesse et le téléchargement du moteur. Tout s'exécute dans un seul onglet de navigateur, le fichier et le moteur doivent donc tous deux tenir en mémoire, et une tâche qu'un outil de bureau lirait en flux depuis le disque doit être conservée ici. Il n'y a aucun serveur vers lequel décharger. Les plafonds pratiques varient selon l'outil. L'outil de déverrouillage PDF accepte les fichiers jusqu'à 50 MB et le dit, car qpdf doit conserver le document pendant qu'il le déchiffre. Une vidéo très longue est plus lente qu'une tâche serveur et peut manquer de mémoire avant la fin, rogner d'abord est donc le conseil habituel. Les moteurs eux-mêmes sont volumineux à la première utilisation : le cœur FFmpeg que chargent les outils vidéo et audio fait environ 30 MB, le moteur OCR plus le pack de langue anglaise environ 6,7 MB, et le moteur PDF environ 1,3 MB. Rien de tout cela n'est votre fichier, et tout est mis en cache pour la prochaine fois.
Parce que le moteur qui fait le travail est du code, et ce code doit atteindre le navigateur avant de pouvoir s'exécuter. À la première utilisation, la page récupère son moteur sur le réseau, puis le garde en cache dans l'onglet, les fichiers suivants sont donc traités sans aucun téléchargement. Ce téléchargement est le prix à payer pour faire le travail localement plutôt que sur la machine de quelqu'un d'autre. Un site de conversion paie le même coût une fois, sur son propre serveur, et vous ne le voyez jamais. La différence est que vous téléchargez une quantité fixe de code, identique pour chaque fichier : elle ne croît pas avec votre document et ce n'est pas votre document. Les tailles sont toutefois significatives, c'est pourquoi ce site charge les moteurs à la demande plutôt qu'au départ. Une page qui envoie un moteur vidéo de 30 MB à quelqu'un qui voulait seulement fusionner deux PDF gaspille sa bande passante, le moteur n'est donc récupéré que lorsque vous utilisez réellement cet outil.
Oui, une fois le moteur chargé. Une fois le code dans l'onglet, le chemin de traitement ne touche à rien d'externe, une page qui a déjà chargé son moteur peut donc continuer à fonctionner même réseau coupé. C'est la preuve la plus simple que votre fichier n'est pas téléversé. Il vaut la peine d'être précis sur les conditions. Le moteur doit être chargé avant de passer hors ligne, car le récupérer est une requête réseau normale. Un rechargement forcé hors ligne échouera à moins que le navigateur ou un service worker n'ait mis la page en cache, testez donc en terminant une exécution, puis en vous déconnectant et en traitant un autre fichier sans recharger. Certaines langues autres que l'anglais sont tirées d'une source de données distante à la première utilisation, l'outil OCR dans une langue non anglaise peut donc nécessiter une exécution en ligne avant d'être mis en cache. Aucune de ces réserves ne concerne votre document. Elles portent sur le code et les packs de données dont l'outil a besoin, qui sont les mêmes pour chaque visiteur.

Voir un outil local en action

Gratuit, privé et illimité. Aucun compte requis.

Ouvrir le compresseur d'image