Wie browserbasierte Datei-Tools funktionieren (und warum nichts hochgeladen wird)

Browserbasierte Datei-Tools erledigen die Arbeit innerhalb der Seite statt auf einem Server. Deine Datei wird vom File API von der Festplatte gelesen, von einer WebAssembly-Engine wie qpdf oder FFmpeg verarbeitet, die im Tab läuft, und als Download zurückgeschrieben. Es gibt keinen Upload-Schritt, es wird also nichts gesendet.

Die Architektur hat drei Teile. Die APIs File und Blob bewegen Bytes zwischen deiner Festplatte und der Seite, ohne einen Netzwerk-Roundtrip. WebAssembly führt Engines aus, die ursprünglich für den Desktop geschrieben wurden, weshalb die Ergebnisse zu einem Desktop-Tool passen und nicht zu einer vereinfachten Web-Näherung. Canvas, Web Worker und MediaRecorder decken die Aufgaben ab, die Zeichnen, Hintergrundverarbeitung oder eine Kamera brauchen. Der Kompromiss ist, dass der erste Durchlauf die Engine herunterlädt und alles in den Speicher eines Tabs passen muss.

Die Aihangsoft-Startseite im dunklen Design, mit der Überschrift Jedes Bild-, PDF- und Video-Tool, direkt in deinem Browser
Das Badge über der Überschrift ist die ganze Prämisse der Seite: Die Arbeit geschieht im Browser, es gibt also keinen Upload-Schritt, dem man vertrauen oder misstrauen müsste.

Die meisten Menschen begegnen dieser Idee in einer Datenschutzzeile auf einer Tool-Seite: Dateien verlassen dein Gerät nie. Dieser Satz ist entweder wahr oder nicht, und er wird von der Architektur entschieden und nicht von der Absicht. Dieser Leitfaden erklärt, was ein Browser heute tatsächlich ausführen kann, warum der Upload-Schritt verschwindet, wenn man so baut, und welche Kosten das mit sich bringt.

Bild-Kompressor

Ein konkretes Beispiel. Canvas und OxiPNG laufen im Tab, die Größen vorher und nachher werden nebeneinander angezeigt, und die Datei wird nie hochgeladen.

Ein lokales Tool ausprobieren

Zwei Architekturen: der Server-Roundtrip und der lokale Tab

Die meisten Online-Konverter folgen derselben Form. Dein Browser sendet die Datei mit einem HTTP-Upload an einen Server, der Server führt ein Tool wie ImageMagick oder ein headless FFmpeg aus, und ein Download-Link kommt zurück. Die Arbeit ist real und oft schnell, aber die Datei muss deine Maschine verlassen, damit das geschieht, und sie bleibt auf dieser Maschine, solange der Betreiber sie behält.

Ein browserbasiertes Tool behält dieselben Schritte und lässt den Server weg. Das Lesen der Datei, das Ausführen der Engine und das Schreiben des Ergebnisses geschehen alle im Tab. Das ist keine kleine Abwandlung des Upload-Modells. Es beseitigt eine ganze Klasse von Problemen, weil es keinen Transfer zum Abfangen, keine Warteschlange zum Warten und kein Aufbewahrungsfenster zum Nachlesen gibt.

SchrittServerbasiertes ToolBrowserbasiertes Tool
Die Datei lesenIn deren Speicher kopiertVom File API gelesen, bleibt lokal
VerarbeitungDeren CPU, meist in der WarteschlangeDeine CPU, im Tab
ErgebnisEin Download-Link, der abläuftEin Blob-Download, sofort bereit
Wer die Datei lesen kannJeder mit Zugriff auf deren SpeicherNur du

Was der Browser tatsächlich ausführt

Ein kurzer Rundgang durch den Stack, denn diese Fähigkeiten sind es, die das Datenschutzversprechen möglich machen, und nicht eine aufgesetzte Marketingebene.

WebAssembly bringt Desktop-Engines in den Tab

WebAssembly ist ein kompaktes Binärformat, das in einer sandboxed virtuellen Maschine mit nahezu nativer Geschwindigkeit läuft. In C, C++ oder Rust geschriebene Engines werden dorthin kompiliert und als gewöhnliche Dateien ausgeliefert: qpdf für PDF-Verschlüsselung, FFmpeg für Video und Audio, Tesseract für optische Zeichenerkennung, pdf-lib zum Erstellen und Bearbeiten von PDFs und OxiPNG für verlustfreie PNG-Optimierung. PDF.js übernimmt das PDF-Rendering und die Textextraktion. Weil dies dieselben Engines sind, die auf dem Desktop verwendet werden, ist die Ausgabe keine Web-Näherung: Ein Video, das der FFmpeg-Build in deinem Tab codiert, ist die Ausgabe von FFmpeg.

Canvas und die Bildpipeline

Bilder sind die eine Kategorie, die kein WebAssembly braucht. Die Canvas API bietet dieselbe Zeichenfläche, die ein nativer Bildeditor verwendet. createImageBitmap decodiert eine Datei, ein Canvas hält die Pixel, und toBlob codiert das Ergebnis zurück zu PNG, JPEG, WebP oder AVIF. Zuschneiden, Größe ändern, Wasserzeichen und Formatkonvertierung sind alles Pixeloperationen auf dieser Fläche. Der Bild-Kompressor paart es mit OxiPNG für die PNG-Ausgabe, das die Datei verlustfrei neu komprimiert, statt Qualität wegzuwerfen.

Web Worker halten die Oberfläche am Leben

Schwere Arbeit im Hauptthread friert die Seite ein, deshalb laufen die langen Aufträge in einem Web Worker, einem Hintergrundthread ohne Zugriff auf das DOM. Die Video-Tools übergeben die Arbeit an FFmpeg in einem Worker und erhalten Logzeilen und Fortschrittsereignisse zurück, weshalb sich der Fortschrittsbalken weiterbewegt, während der Encoder beschäftigt ist. Tesseract folgt demselben Muster. Bemerkenswert ist, dass das OCR-Setup hier einen Single-Threaded-Engine-Build verwendet, es braucht also nicht die SharedArrayBuffer-Header, die viele WebAssembly-Tools vom Server verlangen.

File und Blob bewegen die Bytes

Das File API ist das, was den Upload ersetzt. Wenn du eine Datei auf die Seite ziehst, erhält JavaScript ein File-Objekt, und file.arrayBuffer() liest ihre Bytes bei Bedarf in den Speicher. Das Ergebnis ist ein Blob, der zu einer temporären lokalen URL werden oder direkt an einen Download übergeben werden kann. Die Bytes reisen von der Festplatte in den Speicher und zurück, und es gibt in dieser Schleife keinen Codepfad, der mit einem Netzwerk spricht. Das ist auch der Grund, warum ein Browser-Tool kein vom Server auferlegtes Upload-Größenlimit hat, sondern nur das Speicherlimit des Geräts.

Warum lokale Verarbeitung bedeutet, dass nichts hochgeladen wird

Die Behauptung ist leicht aufzustellen und leicht zu überprüfen. Ein Upload ist eine Netzwerkanfrage, die deine Datei trägt, und ein Browser-Tool stellt niemals eine, weil am anderen Ende nichts ist, das sie braucht. Die einzigen Anfragen, die eine Seite wie diese stellt, gelten ihrem eigenen Code und ihren Ressourcen: das HTML, das Stylesheet, die Engine bei der ersten Nutzung und die Schriftart.

Du musst das nicht auf Treu und Glauben hinnehmen. Öffne die Entwicklertools des Browsers, wechsle zum Netzwerk-Panel, leere es, verarbeite dann eine Datei und schau zu. Die Anfragen, die erscheinen, tragen Code und Ressourcen. Keine davon trägt dein Dokument, und wenn du dich vom Netzwerk trennst, nachdem die Engine geladen ist, funktioniert die Verarbeitung weiter. Es gibt einen längeren, schrittweisen Leitfaden zu der Prüfung, ob ein Tool deine Datei hochlädt wenn du die vollständige Vorgehensweise willst.

Anfrage, die du sehen wirstWas es transportiert
Die Seite, ihr CSS und ihr JavaScriptWebsite-Code, nicht deine Datei
Die Engine, bei der ersten NutzungEin kompiliertes Tool, danach zwischengespeichert
WebschriftartenEine Schriftart
Analytics-SkriptEin Seitenaufruf, keine Dateibytes

Die letzte Zeile ist wichtig, weil sie die übliche Quelle falschen Alarms ist. Analytics laden auf der Seite und melden, dass eine Seite aufgerufen wurde, nicht den Inhalt deines Dokuments. Diese Seite selbst lädt Google Tag Manager, weshalb das Netzwerk-Panel ein Skript von Google zeigt. Diese Anfrage meldet einen Seitenaufruf und ist kein Dateitransfer.

Was du dafür bezahlst

Lokale Verarbeitung ist nicht kostenlos, und die ehrliche Version der Sache ist es wert, klar gesagt zu werden. Drei Kosten treten auf, und ein vierter Punkt erklärt, wo der Browser an seine Grenze stößt.

  • Der erste Durchlauf lädt herunter. Jede Engine wird einmal geholt: etwa 30 MB für den FFmpeg-Kern hinter den Video- und Audio-Tools, etwa 6,7 MB für die OCR-Engine und die englischen Daten, etwa 1,3 MB für die PDF-Engine und etwa 1,4 MB für den PDF.js-Worker, der für Seitenvorschauen genutzt wird. Nichts davon ist deine Datei, und alles davon wird zwischengespeichert, aber ein Kaltstart auf einer langsamen Verbindung ist ein langsamer Start.
  • Der Speicher ist die Obergrenze. Alles, was die Engine liest und schreibt, lebt in einem Tab. Ein Desktop-Tool streamt eine große Datei von der Festplatte, während ein Browser-Tab sie hält, ein riesiges Video oder PDF kann also den Speicher erschöpfen, bevor es fertig ist. Manche Tools nennen aus diesem Grund eine harte Obergrenze, etwa das Limit von 50 MB beim PDF-Entsperr-Tool.
  • Ein Server kann schneller sein. Die Videocodierung ist CPU-gebunden, und eine dedizierte Maschine mit mehr Kernen und wärmerem Cache schlägt einen Laptop-Tab. Der Browser-Build setzt außerdem auf Software-Encoding statt auf einen Hardwareencoder, er bekommt also nicht die GPU-Beschleunigung, die ein nativer Build nutzen kann.
  • Einige Aufgaben brauchen trotzdem einen Server. Hintergrundentfernung, Objektlöschung und generative Bildverbesserung hängen von großen Modellen ab, die kein vernünftiges Download-Budget abdeckt. Diese drei werden von Cloud AI behandelt, und sie laden das Bild tatsächlich hoch. Alles andere auf der Seite ist lokal.

Bei einem Dokument von ein paar Megabyte oder einem Clip von einer Minute sind diese Kosten nicht spürbar, und der Kompromiss erkauft Privatsphäre und das Fehlen von Kontingenten. Für eine zweistündige 4K-Aufnahme ist ein Desktop-Tool oder ein Server-Job die bessere Wahl, und die ehrliche Antwort ist, das auch zu sagen.

Dasselbe Muster über die ganze Tool-Sammlung

Die Startseite gruppiert die Tools in fünf Abschnitte, und die Architektur ist in jedem dieselbe. PDF-Arbeit läuft mit qpdf, pdf-lib und PDF.js. Zum Beispiel PDF zusammenfügen verbindet Dateien mit pdf-lib, während PDF zu Text extrahiert Text mit PDF.js und greift nur bei gescannten Seiten auf Tesseract zurück. Bildarbeit läuft mit Canvas und OxiPNG. Video und Audio laufen mit FFmpeg, wobei Video-Kompressor und die Audio-Tools sich eine einzige Engine teilen. OCR läuft auf Tesseract. Die drei Cloud AI-Tools sind die Ausnahme, und die Seite kennzeichnet sie als solche, statt die Grenze zu verwischen.

Das praktische Fazit ist, dass du über jedes Tool auf dieselbe Weise nachdenken kannst. Wenn es eine echte Engine nennt und sie im Tab ausführt, bleibt die Datei, wo sie ist. Wenn es ein größeres Modell braucht, als ein Browser herunterladen kann, wird es sagen, dass es hochlädt, und es sollte das auf der Seite sagen und nicht in einer Fußnote.

Eine Reihe von Bild-Tool-Karten auf der Aihangsoft-Startseite, jede Karte benennt, was das Tool macht
Die browserbasierten Tools sind nach Dateityp gruppiert. Keines von ihnen braucht ein Konto, und keines von ihnen sendet die Datei irgendwohin.

Häufig gestellte Fragen

Es liest die Datei von deiner Festplatte in die Seite selbst, führt den Verarbeitungscode im Tab aus und gibt das Ergebnis als Download zurück. Die Datei wird über das File API an JavaScript übergeben und verlässt die Maschine nie, weil kein Teil der Pipeline einen Server braucht. Die Engines, die die Arbeit machen, sind zu WebAssembly kompiliert und werden wie jedes andere Skript als Dateien ausgeliefert: qpdf für PDF-Verschlüsselung, FFmpeg für Video und Audio, Tesseract für OCR, PDF.js und pdf-lib zum Lesen und Schreiben von PDFs und OxiPNG für verlustfreie PNG-Optimierung. Bei der ersten Nutzung lädt die Seite die Engine, die sie braucht, das ist Code und nicht dein Dokument. Danach hält der Tab die Engine im Speicher und dieselbe Seite kann Datei um Datei verarbeiten, ganz ohne Netzwerkaktivität. Du kannst das in den Entwicklertools des Browsers beobachten: Die Anfragen, die du siehst, tragen die Engine, Schriftarten und Seitenressourcen, und keine davon trägt deine Datei.
Nicht ganz, aber es ist viel näher als JavaScript allein. WebAssembly läuft bei der Berechnung ungefähr mit nativer Geschwindigkeit, und die Engines hier sind die echten Tools und keine Nachbauten: qpdf ist dasselbe qpdf, das du auf einem Desktop ausführen würdest, und FFmpeg ist dasselbe FFmpeg, kompiliert für den Browser. Die Lücke kommt von der Umgebung und nicht vom Ausführungsmodell. Eine Browser-Sandbox kann nicht jede CPU-Funktion nutzen, die ein nativer Build erwartet, und die Arbeit läuft in einem Tab statt in einem Prozess mit direktem Festplatten- und Mehrkernzugriff. Encoder, die auf Hardwarebeschleunigung setzen, etwa ein GPU-Videoencoder, sind nicht Teil des WebAssembly-Builds, die Videoarbeit fällt also auf Software-Encoding zurück. Der Speicher ist ein weiterer Faktor: Alles, was die Engine liest und schreibt, muss in den Tab passen, ein Auftrag, den ein Desktop-Tool von der Festplatte streamt, muss hier im Speicher gehalten werden.
Die Grenzen sind Speicher, Geschwindigkeit und der Engine-Download. Alles läuft in einem Browser-Tab, Datei und Engine müssen also beide in den Speicher passen, und ein Auftrag, den ein Desktop-Tool von der Festplatte streamen würde, muss hier gehalten werden. Es gibt keinen Server zum Auslagern. Praktische Obergrenzen zeigen sich je nach Tool unterschiedlich. Das PDF-Entsperr-Tool akzeptiert Dateien bis 50 MB und sagt das auch, weil qpdf das Dokument beim Entschlüsseln halten muss. Sehr langes Video ist langsamer als ein Server-Job und kann den Speicher erschöpfen, bevor es fertig ist, zuerst zuschneiden ist also der übliche Rat. Die Engines selbst sind bei der ersten Nutzung groß: Der FFmpeg-Kern, den Video- und Audio-Tools laden, liegt bei etwa 30 MB, die OCR-Engine plus das englische Sprachpaket bei etwa 6,7 MB und die PDF-Engine bei etwa 1,3 MB. Nichts davon ist deine Datei, und alles davon wird für das nächste Mal zwischengespeichert.
Weil die Engine, die die Arbeit macht, Code ist, und dieser Code muss den Browser erreichen, bevor er laufen kann. Bei der ersten Nutzung holt die Seite ihre Engine über das Netzwerk und hält sie danach im Tab zwischengespeichert, spätere Dateien werden also ganz ohne Download verarbeitet. Dieser Download ist der Preis dafür, die Arbeit lokal statt auf einem fremden Rechner zu erledigen. Eine Konverter-Seite zahlt denselben Preis einmal auf ihrem eigenen Server, und du siehst ihn nie. Der Unterschied ist, dass du eine feste Menge Code herunterlädst, und sie ist für jede Datei dieselbe: Sie wächst nicht mit deinem Dokument und sie ist nicht dein Dokument. Die Größen sind allerdings bedeutsam, weshalb diese Seite Engines bei Bedarf lädt und nicht im Voraus. Eine Seite, die jemandem, der nur zwei PDFs zusammenfügen wollte, eine 30-MB-Video-Engine schickt, verschwendet dessen Bandbreite, die Engine wird also nur geholt, wenn du dieses Tool tatsächlich nutzt.
Ja, nachdem die Engine einmal geladen wurde. Sobald der Code im Tab ist, berührt der Verarbeitungspfad nichts Externes, eine Seite, die ihre Engine bereits geladen hat, kann also weiterarbeiten, während das Netzwerk aus ist. Das ist der einfachste Beweis dafür, dass deine Datei nicht hochgeladen wird. Es lohnt sich, die Bedingungen genau zu benennen. Die Engine muss geladen sein, bevor du offline gehst, denn sie zu holen ist eine normale Netzwerkanfrage. Ein hartes Neuladen während des Offline-Zustands schlägt fehl, es sei denn, der Browser oder ein Service Worker hat die Seite zwischengespeichert, teste also, indem du einen Durchlauf beendest, dich dann trennst und ohne Neuladen eine weitere Datei verarbeitest. Einige andere Sprachen als Englisch werden bei der ersten Nutzung aus einer entfernten Datenquelle geholt, das OCR-Tool in einer nicht-englischen Sprache braucht also möglicherweise einen Online-Durchlauf, bevor es zwischengespeichert ist. Keiner dieser Vorbehalte betrifft dein Dokument. Sie betreffen den Code und die Datenpakete, die das Tool braucht, und die für jeden Besucher gleich sind.

Sieh ein lokales Tool in Aktion

Kostenlos, privat und unbegrenzt. Kein Konto nötig.

Bild-Kompressor öffnen