Come funziona la conversione file nel browser
Quando senti «il tuo file non lascia mai il tuo browser», potrebbe sembrare uno slogan di marketing. Non lo è. È una descrizione tecnica precisa di come i browser moderni elaborano i file usando le API web. Ecco esattamente cosa succede.
📂
File API
Legge i file dal disco nella memoria del browser senza inviarli da nessuna parte.
⚙️
WebAssembly
Esegue codice compilato a velocità nativa (C/C++/Rust) all'interno del sandbox del browser.
🖼️
Canvas API
Disegna, trasforma e codifica immagini interamente nel browser.
🧵
Web Workers
Esegue l'elaborazione intensiva in un thread in background così l'interfaccia resta reattiva.
Passo 1: leggere il file — la File API
Quando selezioni o trascini un file, la File API del browser lo rende accessibile a JavaScript come oggetto File. Il browser lo legge in memoria tramite un FileReader o file.arrayBuffer().
Questa è una lettura locale. Non viene effettuata alcuna richiesta di rete. I dati del file entrano nella memoria del browser (RAM), esattamente come se aprissi il file in un'applicazione desktop.
Punto chiave: un file letto tramite la File API non è diverso da un'applicazione desktop che apre un file dal disco. I dati non toccano mai la rete.
Passo 2: elaborazione — WebAssembly, Canvas e JavaScript
Una volta che il file è in memoria, viene eseguita la logica di conversione. Diversi tipi di conversione usano tecnologie browser diverse:
Operazioni PDF (unisci, dividi, ruota) — pdf-lib via JavaScript
pdf-lib è una libreria JavaScript pura che analizza, crea e modifica file PDF. Operazioni come unire due PDF o ruotare pagine avvengono come trasformazioni di array in memoria.
Rendering PDF (da PDF a immagini) — pdfjs-dist via WebAssembly
PDF.js (il renderer PDF open source di Mozilla) è compilato in WebAssembly e renderizza le pagine PDF in elementi canvas HTML. Nessun server. Nessun plugin.
Operazioni sulle immagini (comprimi, ridimensiona, converti) — Canvas API
La Canvas API dà a JavaScript accesso diretto a un buffer di pixel. canvas.toBlob() codifica i dati dei pixel come JPEG o WebP usando il codec integrato del browser.
Passo 3: mantenere l'interfaccia reattiva — Web Workers
JavaScript è single-thread per impostazione predefinita. Elaborare un PDF da 50 MB sul thread principale congelerebbe la scheda del browser. Il lavoro computazionalmente intensivo viene scaricato su un Web Worker.
I Web Workers sono isolati: non possono accedere al DOM, ai cookie o alla rete a meno che tu non glielo permetta esplicitamente.
Passo 4: scaricare il risultato
Una volta completata l'elaborazione, il risultato è un Blob in memoria. Il browser crea un URL temporaneo (URL.createObjectURL) e avvia un download. Il file va direttamente dalla memoria del browser al disco locale.
E i limiti di prestazione?
L'elaborazione nel browser è limitata dalla RAM e dalla CPU disponibili sul tuo dispositivo. I browser moderni gestiscono comodamente file fino a diverse centinaia di megabyte.
- Un PDF di 100 pagine è tipicamente 5–15 MB — elaborato in secondi
- Una foto da 20 MP è circa 60 MB non compressa in memoria — gestita facilmente
- Un batch di 50 immagini viene elaborato sequenzialmente, ognuna velocemente
La garanzia del sandbox
I moduli WebAssembly operano all'interno del sandbox di sicurezza del browser. Il codice non può accedere al file system oltre a quello che concedi esplicitamente, né fare richieste di rete a meno che non siano avviate dal JavaScript della pagina.
Puoi verificare che non venga effettuata alcuna richiesta di rete durante una conversione aprendo i DevTools (F12), passando alla scheda Rete e osservando mentre esegui una conversione.
Trasparenza open source
Le librerie principali utilizzate da converteo.app sono open source e verificabili:
- pdf-lib — licenza MIT, verificabile su GitHub
- PDF.js — Apache 2.0, sviluppato da Mozilla
- libheif/libde265 — decodifica HEIC, LGPL
Domande frequenti
Il browser deve scaricare la libreria di conversione?
Sì — una volta. I moduli JavaScript e WebAssembly vengono scaricati quando visiti per la prima volta la pagina dello strumento. Questo download è il codice della libreria, non il tuo file.
Cosa succede al mio file quando chiudo la scheda?
Il browser libera la memoria usata dal tuo file. Non rimane alcuna traccia del file originale né della sua versione convertita.
Il JavaScript del sito potrebbe caricare segretamente il mio file?
Per converteo.app, puoi aprire la scheda Rete e verificare in tempo reale che non avvenga alcun upload. Puoi anche usare uBlock Origin per bloccare tutte le richieste in uscita — la conversione funzionerà lo stesso.
WebAssembly è sicuro?
WebAssembly gira all'interno dello stesso sandbox di sicurezza di JavaScript. Non può accedere al file system, alla rete o al sistema operativo direttamente. È stato standardizzato dal W3C dal 2019.