Free tool

HTML Validator for App Conversion

A standards validator tells you your markup is invalid. This one tells you what will actually break once your page is running inside an Android WebView.

Check your page

Parsed in your browser. Nothing is uploaded, so you can safely check unpublished pages.

Drop an .html fileor paste the markup below

Valid HTML and app-ready HTML are not the same thing

The W3C validator answers one question: does this markup follow the spec? Useful, but it will happily pass a page that renders as a blank screen inside an Android app. A page becomes app-ready when it survives a different environment — one with no web server, no address bar, an old rendering engine on some devices, and often no network at all.

This checker looks for the failures specific to that environment. Every rule below comes from something that actually breaks conversions.

The file:// problem, which catches nearly everyone

When your site is bundled into an app, the pages are loaded from the device's filesystem rather than a server — the URL is file://, not https://. Browsers treat that as a unique, restrictive origin, and three things stop working:

There are two ways out: build your modules into a single classic script, or serve the bundled content from a tiny local HTTP server inside the app so the origin becomes http://localhost. Our builder takes the second approach for exactly this reason.

Paths that only exist on your computer

A page referencing C:\Users\me\site\style.css works perfectly until it is packed into an app, at which point that file does not exist. The same goes for root-relative paths like /css/style.css once the content is unpacked somewhere other than a web root. Relative paths — style.css, ./img/logo.png, ../about.html — are the ones that survive the move.

Mixed content and cleartext HTTP

Android has blocked cleartext HTTP traffic by default since Android 9, and a WebView showing an https page refuses to load http subresources at all. In both cases the resource fails silently: no error dialog, just a missing image or an unstyled page. Every URL in your markup should be https, or relative.

The viewport tag decides whether your site looks like an app

Without <meta name="viewport" content="width=device-width, initial-scale=1">, a WebView assumes a 980px desktop layout and zooms out to fit, which is why a converted site can appear as a tiny, unreadable version of itself. It is one line, and it is the difference between a responsive design working and being ignored entirely.

The reverse mistake is user-scalable=no. It stops users zooming — an accessibility failure that reviewers do notice, and one that helps nobody once your layout is genuinely responsive.

What this tool does not check

It is not a full HTML5 conformance validator: it does not verify every attribute against the spec, and it cannot catch problems that only appear at runtime, like a script that throws on an older WebView. Run it alongside the W3C validator rather than instead of it — and test the finished app on a real device, which remains the only way to be sure.

Frequently asked questions

Why does my website show a blank screen in the app?

By far the most common cause is <script type="module">. Bundled pages load from file://, and ES modules are blocked at that origin, so your JavaScript never executes. Other frequent causes are absolute paths to your own computer, and a missing DOCTYPE putting the page into quirks mode.

Is this the same as the W3C validator?

No, and it is not a replacement. The W3C validator checks conformance to the HTML specification. This one checks the specific things that break when a page is bundled inside an Android WebView — file:// restrictions, mixed content, machine-specific paths, viewport problems. Running both is reasonable.

Does my HTML get uploaded anywhere?

No. Parsing happens in your browser with the built-in DOMParser, so you can safely check unpublished or private pages. The tool works with your network disconnected.

Do I need to fix every warning?

The blocking items, yes — those are things that will not work. Warnings are judgement calls: root-relative paths are fine if you know where your content is mounted, and external resources are fine for an app that always has a connection.

Will fixing these guarantee my app works?

It removes the most common causes of failure, but nothing replaces installing the finished app on a real device. Static analysis cannot see a script that throws only on an older WebView, or a layout that breaks on a small screen.

Read next

Related tools

Ready to turn your site into an app?

Upload an HTML file or a ZIP, set your icon and name, and download a signed Android app. No Android Studio, no command line.

Open the builder