tools / inspect

Filename case checker

Windows and macOS treat Logo.png and logo.png as the same file; Android does not. A site that looks perfect on your laptop can load with missing images and a blank script inside the app. This finds every reference that only works by accident — and fixes the case ones for you.

Check every reference

Reads src, href, srcset, CSS url(), @import and quoted asset paths in scripts, then resolves each one against the files actually in the ZIP.

Drop your site ZIP here, or click to choose .zip · opened in this tab, never uploaded

Why it works on your laptop and not in the app

The default file systems on Windows (NTFS) and macOS (APFS) are case-insensitive: ask for images/Logo.png and you get images/logo.png, no questions asked. Android is Linux underneath, and the asset storage inside an APK is case-sensitive: Logo.png and logo.png are two different names, and only one of them exists. The request for the other comes back as a 404.

So a site can pass every test you run on your own machine — including opening it in Chrome from disk — and still load inside the app with a missing logo, an unstyled page, or a blank screen if the file with the wrong case was the main script. This is the single most common cause of "some images are missing in my APK".

What the checker reports

  • Wrong case — a file with that name exists, but with different capitalisation. Fixable automatically: the reference is rewritten to match the real file.
  • Missing — no file of that name exists in any case. Either the file was never copied into the folder you zipped, or the link has a typo.
  • Root path — the reference starts with /. In the app your files are served from a sub-folder, so /css/app.css points outside it. Remove the leading slash (see the paths reference).
  • Backslash — images\logo.png is a Windows path, not a URL. Browsers on Windows sometimes forgive it; nothing else does.

What it reads

HTML attributes (src, href, srcset, poster, data-src), CSS url() and @import in stylesheets and <style> blocks, SVG links, and string literals in JavaScript that look like a relative path ending in a known asset extension (for example "sprites/Hero.png" passed to a game engine). Paths built at runtime by concatenation cannot be seen by any static scan — test those in the builder's preview.

References inside JavaScript that do not match any file are not reported as missing, because scripts are full of strings that merely look like paths. Case mismatches in scripts are reported, because a string that matches a real file except for its capitals is almost always a bug.

Preventing it

Name every file in lower case, with hyphens instead of spaces: hero-image.webp, not Hero Image.WEBP. It avoids this problem, the %20 problem and the "which extension did I use" problem in one habit.

Frequently asked questions

Why does Chrome on my computer load the image fine?

Because your computer's file system ignores case, so the operating system hands Chrome the file whatever capitals were used. Android's asset storage does not, so the same request fails in the app.

Does the fix rename my files or change my links?

It changes the links. Files keep their names; each mismatched reference is rewritten to the file's real capitalisation, only in the file where the reference was found.

Some references are in JavaScript template strings — are those checked?

Only when the whole path is a literal. A path assembled at runtime (for example 'img/' + name + '.png') cannot be resolved without running the code. Keep file names lower case and those become safe too.

What does 'root path' mean for my app?

A link starting with / is resolved from the top of the app's address, not from your index.html, and in the app your files live one folder down. Make it relative — css/app.css instead of /css/app.css.

Read in the docs

Related tools

Unzip it on a phone today

Upload the ZIP, name the app, pick an icon — and download a signed APK a few minutes later. Free builds, no watermark, no Android Studio.

Convert a ZIP — free site.zip → app-release.apk