URL mode

Route: Spread → URL tab (default)

How it works

  1. Paste a URL and press Run spread. Any public http(s) page.
  2. Tostada fetches the page and scans it — no AI yet, nothing spent.
  3. The checkpoint. Spread stops and shows you what it found before it costs anything. See below.
  4. Continue. The rebuild streams; you can cancel at any point with the button or the Esc key, and nothing is charged for a cancelled run beyond what was already generated.
  5. Compare and download. Drag the slider to wipe between original and spread. Download HTML gives you a standalone file with the report inside it.

The checkpoint

The step that exists so nothing is spent on your behalf without you seeing it first. It shows:

  • What to keep "legacy". Logos, maps, videos and third-party widgets Spread detected. Tick anything you want left exactly as it is — the original element is embedded verbatim rather than rebuilt. Default is to spread everything.
  • The estimate, in euros, on your key.
  • A size verdict, if the page is big enough to be trimmed or too big to rebuild honestly.
  • A JavaScript warning, if the page turns out to be an empty shell.

If the page is a JavaScript app

Modern apps render in the browser, so fetching one over HTTP returns a shell — often just "You need to enable JavaScript to run this app". Spread detects this and says so rather than charging you to rebuild a loading screen.

The fix is HTML file mode: open the page yourself, save the rendered HTML, and upload that. It is also how you spread a page behind a login — your credentials never go anywhere near Tostada.

The page fetcher

A browser cannot fetch another site's HTML directly; the same-origin policy forbids it. So Tostada fetches on your behalf, and that fetcher deliberately refuses a lot:

  • http(s) only
  • no private networks — loopback, internal ranges, and cloud metadata addresses, re-checked after every redirect
  • HTML only, and 1 MB maximum
  • signed-in users only, on the hosted app

Running locally with npm run dev, the dev server does the same job with the same refusals; the difference is who is allowed to ask.

When a fetch fails

Some sites block automated requests. The error says so and offers file mode, which always works because you have already loaded the page yourself.