Valid HTML and app-ready HTML are different things
A page can pass the W3C validator perfectly and open as a blank white screen inside an app. The rules that matter when you bundle a website into an APK are not about markup correctness; they are about what a WebView can and cannot load from a file:// origin with no web server behind it. This validator checks those rules, in your browser, without uploading the file.
What it checks
- Module scripts.
<script type="module">is blocked on bundled pages, so the JavaScript never runs. If the JavaScript builds the page — every React, Vue and Svelte app — the result is nothing. This is the cause of most blank-screen reports, and Vite emits it by default. - Absolute paths.
/css/style.cssmeans "from the server root", and there is no server. So does anything pointing at your own computer. Paths must be relative. - External resources. Fonts, scripts and styles loaded from a CDN are blank spaces when the phone is offline. Flagged so you can decide whether to inline them or accept that the app needs a connection.
- The viewport meta tag. Without it, the page renders at desktop width and is shrunk to fit — tiny text, horizontal scrolling.
- The DOCTYPE. Missing, and the WebView renders in quirks mode with different box sizing than your browser showed you.
- Local fetches and service workers, which the same file-origin rule blocks.
Drop an .html file or paste the source. Each finding names the line and says why it matters; "Load a broken example" shows all of them at once.
Which route are you taking?
These checks matter for a bundled app — an HTML file or a ZIP shipped inside the APK. If you are making the app from your site's URL, the page is served by your server as usual and module scripts, absolute paths and CDN resources all work; what matters there is HTTPS, a phone-width layout and no mixed content. The validator still catches the viewport and DOCTYPE problems that affect both. The bundled-app rules in full →