Static Website Deploy Checker & Host Config Generator
Find what breaks a static site on its host before upload, fix it, and get its host config.
Try before you buy.
- Free preview: the summary counts and the first findings (up to 5) with their files and lines, and the first lines of each config file.
- Locked until you unlock it: download, copy and print.
- Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.
Ways to unlock shows how to get the full result.
Printing this result is locked in the free preview.
Site
The folder that holds the home page (index.html), as your host will serve it.
Settings
Links to this address count as the site’s own; social images get full addresses.
/ for the top of the domain, or a sub-path such as /project/.
Host configuration settings
Status 301 when left out. End a folder with * to move everything in it. A _redirects file in the site fills this in.
The folder next to firebase.json that holds index.html.
Summary
Choose the site’s folder or ZIP, or try the example site.
- Errors
- Warnings
- Notes
- Fixable
- Pages
- Files
Findings
Fixed ZIP
Host configuration
Report
Every finding with its file and line, for a ticket or a spreadsheet.
Locked in the free preview. Opens the ways to unlock this result.
Locked in the free preview. Batch runs unlock with a pass.
Locked in the free preview. Query results unlock with a pass.
About the Static Website Deploy Checker & Host Config Generator
Check a static site before you upload it. Drop the folder your build writes, or a ZIP of it (up to 500 MB and 20,000 files), and the page reads every page, style sheet and script the way a static web server serves them: each href, src, srcset, url(), @import and module import is resolved — a folder's index.html, an address without .html, a site served under a sub-path such as /project/ — and checked against the files that are really there. It finds missing files, letter-case mismatches that work on Windows and macOS but answer 404 on a case-sensitive server, accented names stored in another Unicode form, **file:// and drive-letter paths and localhost addresses left from your computer, root-relative links that break under a sub-path, mixed content** (http:// on an https:// page), module scripts browsers cannot load, a missing index.html or 404.html, pages without a title, description, language or viewport, images over 500 KB, files over the per-file limit you set, and files that must never be published: .env files, .git folders, database dumps and server code.
Then it writes the host configuration the site needs — the single-page-app fallback, the 404 page, redirects, clean URLs, the trailing slash, a year's cache for fingerprinted files, and security headers with a Content-Security-Policy built from what your pages load — as _redirects and _headers files, vercel.json, firebase.json, staticwebapp.config.json or an nginx server block. Redirect lists are checked with the rules of the Redirect Generator. Everything happens in your browser: the files are never uploaded.
Without a pass the result is a free preview: the summary counts and up to five findings with their files and lines, and the first lines of each config file; every finding, the fixed ZIP (case renames and link rewrites), the config files and the CSV and PDF reports unlock with a Pro pass.
How to use it
- Drop the folder your build writes into — often dist, build, public or out — or a ZIP of it onto the page, or press Choose a folder or Choose a ZIP. Try the example site checks a small site full of mistakes.
- Under Settings, enter the site’s address if you know it (links to it then count as the site’s own), the sub-path it is served under, the largest file your host takes, and whether it is a single-page app, uses clean URLs or adds or removes the trailing slash.
- Read the summary and the findings: errors first, then warnings and notes, each with its file and line and what to do about it.
- Choose the fixes — addresses rewritten to the files that exist, decomposed Unicode names renamed, secrets and junk left out — and download the fixed ZIP, ready to upload, with a Pro pass (without one the page shows the free preview).
- Under Host configuration, choose the file your host reads, add redirects and pick the headers; copy or download the file with a Pro pass.
- Download the findings as CSV or PDF, print them, or copy a Markdown summary for a ticket, with a Pro pass.
Examples
index.html: <link rel="stylesheet" href="CSS/Site.css"> · the file is css/site.css
Error, index.html line 6: only the letter case differs, so a case-sensitive server answers 404 · the fixed ZIP writes href="css/site.css"
Served under /project/ · blog/index.html: <img src="/img/logo.png">
Error: the address starts at the top of the domain, outside /project/ · rewritten to ../img/logo.png
A relative address keeps working wherever the site is served; /project/img/logo.png would break the day the site moves to its own domain.
Single-page app on · the folder assets/ holds index-BfZy1oJ3.js and index-D4r5t6y7.css
_redirects: /* /index.html 200 · _headers: /assets/* gets Cache-Control: public, max-age=31536000, immutable
Common uses
- Checking a build folder before its first upload, when a site that works on your computer shows unstyled pages and missing images on the host.
- Finding the letter-case and backslash mistakes that Windows and macOS hide and Linux servers do not.
- Moving a site to a sub-path (/project/) or to another host, and getting that host’s configuration file right the first time.
- Catching .env files, .git folders and database dumps before they go public with the site.
- Writing the single-page-app fallback, redirects and security headers without reading each host’s reference.
How addresses are checked
Each address is resolved as a browser resolves it — from the page’s folder, or from its <base href> — and looked up as a static server looks it up: the file itself, then a folder’s index.html, then (for pages) the address with .html added, which only hosts with clean URLs serve. A page is checked as it will be served: with Trailing slash: remove, a folder’s page answers at /blog and its relative links start one folder up; with clean URLs and add, about.html answers at /about/. Under a sub-path, an address that starts with / points to the top of the domain, not of the site. srcset candidates, url() and @import in style sheets and style attributes, module imports (followed from module to module), workers, service workers, the web app manifest and the sitemap are all read; only addresses written out in full are followed, not ones a script builds at run time. With Single-page app on, page links without a file extension count as the app’s own routes.
What the fixes change
- Addresses: an address that misses only by letter case, a backslash, a double slash, a sub-path or a module import without
.jsis rewritten to the file that exists, in its own form (relative stays relative). Only the characters of that address change: every other byte of the file stays as it was. A file that is not valid UTF-8, and an address written with character references or escapes, are left alone and listed. - Renames: names stored in decomposed Unicode (as macOS stores some) are renamed to the composed form links use; optionally, a file every link spells the same other way is renamed instead of rewriting the links.
- Left out:
.envfiles, keys,.gitfolders, database dumps and system junk; source maps if you choose. - The config files you generate can go into the ZIP as well.
The host configuration
Pick the file your host reads. Redirects are read one a line (/old /new 301, /blog/* /news/* 301) and checked for duplicates, loops and chains, which can point straight at the final address; each file writes the status codes its format documents and lists the rules it cannot express. The security headers are X-Content-Type-Options, Referrer-Policy, X-Frame-Options, a Permissions-Policy that leaves open the camera, microphone or location your scripts use, Strict-Transport-Security and a Content-Security-Policy that allows the origins your pages load from and their inline scripts by hash. It starts report-only: it blocks nothing and lists in the browser console what it would block, so you can enforce it once the console stays quiet. Folders of fingerprinted files (app.3f2a9c1b.js) get a year’s cache; pages keep the host’s default. The header values follow the Security Headers Checker.
Limits
Hosts limit the size of one file and of a whole site, and the limits differ by host and plan: set the largest file your host takes under Settings (25 MB by default). Images over 500 KB (or the size you pick) are listed because they slow every page that shows them; the Image Compressor makes them smaller. One check reads up to 20,000 files and 500 MB; text files over 20 MB are counted but not read.
Limitations
- Nothing is fetched: links to other sites are not visited, and a page’s look is not shown.
- Addresses that scripts build at run time, and the routes of a client-side router, cannot be followed; only addresses written out in full are checked.
- Each host adds rules of its own: the files hold what each format documents. Try a deploy on a preview address before you move your domain.
- The free preview shows the summary counts and up to five findings.
Privacy
On this device: nothing is sent
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
What do I get without a pass?
Without a pass, Static Website Deploy Checker & Host Config Generator shows the summary counts and the first findings (up to 5) with their files and lines, and the first lines of each config file. Until you unlock it, the result can’t be downloaded, copied or printed. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.
Are my files uploaded?
No. The folder or ZIP is read in your browser, and the fixed ZIP and the config files are made there too. Closing the tab forgets them.
Why does my site work on my computer but not on the host?
Usually letter case (Windows and macOS find CSS/Site.css for css/site.css, Linux servers do not), a file:// or C:\ path that only exists on your computer, a root-relative address under a sub-path, or a localhost address left from development. The findings say which, with the file and line.
Which config file do I need?
The one your host reads: a _redirects and a _headers file in the top folder, vercel.json, firebase.json (next to the site folder) or staticwebapp.config.json, or the nginx server block for a server of your own. If your host’s documentation names one of these files, that is the one.
Can I use the Content-Security-Policy as it is?
Start with it in report-only mode, as written: it blocks nothing. Open each page and watch the browser console; add any source it reports, then choose Enforce. A script that adds inline code at run time needs more than the files show.
Will the fixed ZIP change anything else?
No. Only the addresses listed as fixed are rewritten, files are renamed or left out only as listed, and every other byte stays the same, so the ZIP is safe to upload as your site.