Absolute vs relative, in one paragraph
A path that starts with / is absolute: it is resolved from the root of the current origin. On https://example.com/pages/about.html, /css/style.css means https://example.com/css/style.css. A path without the leading slash is relative: it is resolved from the folder the current page is in, so from the same about.html, css/style.css means pages/css/style.css and ../css/style.css means css/style.css at the root. Inside a ZIP to APK app the pages are loaded from the app bundle, where "the root of the origin" is not your project, so absolute paths miss and relative paths hit.
Why the depth setting matters
The correct relative path depends on where the page lives. /css/style.css becomes css/style.css from index.html at the root, but ../css/style.css from pages/about.html. The tool cannot know where you copied the text from, so you tell it: root, one folder deep, two, or three. Run the tool once per depth — all the root pages together, then all the pages in pages/, and so on. A site with many pages at many depths is quicker to fix in your editor with a find-and-replace using the same rules, and the output here shows you exactly what those rules produce.
What it rewrites
src,href,poster,actionanddata-srcattributes that start with a single/.- Every candidate in a
srcsetlist. url(/…)inside inline styles or a pasted stylesheet.href="/"— the home link — becomesindex.html, because there is no directory index in a bundle.- Optionally, a
<base href>tag is removed. A base pointing at your old domain sends every relative link back to the website.
Protocol-relative URLs (//cdn.example.com/…), full https:// URLs, anchors, mailto:, tel: and data: URIs are left alone.
What it deliberately does not do
It does not touch paths built in JavaScript (fetch('/api/data.json'), router.push('/about')), because rewriting code by pattern breaks more than it fixes; the tool lists module scripts so you know to look. It does not rewrite paths that are already relative, and it does not follow links to check the target exists — the ZIP Checker does that across the whole archive.
Better: fix it at the source
If the site comes from a static-site generator or a bundler, set the base path once and every build is correct. Vite: base: './'. Create React App: "homepage": "." in package.json. Next.js static export: assetPrefix: './' and hash-based navigation. Hugo: relativeURLs = true plus uglyURLs = true. Jekyll: {{ '/css/style.css' | relative_url }} with url left empty. The framework guide lists each setting.