Skip to content


Repository files navigation

WARNING: I've deleted a number of binaries from the repo history, reducing the repo size from 2G to 120M. You may see consequences when you attempt to browse old versions, but there should be no impact on the code itself. Thanks to buhtz here for notification of the problem, and to rohannicholls for the solution (

Static Site Checker
(an opinionated HTML nitpicker)
version 0.1.60
(c) 2020-2024 dylan harris
see LICENCE.txt and LICENSE.txt for copyright & licence notice

ssc analyses static X/HTML snippets, files and sites:
- HTML living standard, Jan 2005 to Jan 2024
- HTML Tags/1.0/+/2.0/3.0/3.2/4.00/4.01/5.0/5.1/5.2/5.3-draft
- CSS 1/2.0/2.1/2.2-draft, 2007-2023 snapshots, more
- SVG 1.0/1.1/1.2 Tiny/1.2 Full/2.0/2.x-draft
- MathML 1/2/3/4-draft
- XHTML 1.0/1.1/2.0/5.x
- finds broken links
- server side includes, mostly
- many ontologies

with opinions on:
- standard english where dialect is required
- legal but slovenly HTML
- abhorrent rudeness such as AUTOPLAY on <VIDEO>

It does NOT:
- analyse or understand scripts
- analyse or understand XML or derivatives, except as noted above

It can output:
- 'repaired' HTML (not XHTML)
- HTML with resolved server side includes
- JSONs of ontological content
- website statistical information
- deduplicated websites

ssc -h
for a usage summary.

ssc -f config_file
analyse site using preprepared configuration

ssc directory
analyse website based in directory

To build & run:
1. Follow the build instructions in build.txt
2. Gleefully run ssc. It will misbehave if you are insufficiently

This is an alpha version of ssc. It is incomplete. What is complete
needs refining. The developer needs coffee.

It may contain unexpected features. If you encounter one, please help
improve ssc by collecting the following information (where relevant)
and forwarding it to the developer:
- version of ssc;
- precise version of the operating system;
- hardware architecture and system information;
- detailed description of the problem;
- detailed description of the steps to recreate it;
- copy of output file/s and relevant logs;
- copy of pages/website being analysed;
- precise command used;
- configuration file/s used, if any;
- any ndx file or other pre-existing file used during the run;
- any known workarounds, fixes or solutions;
- a video of a dance interpretation of the issue.
Email everything to (if the collected files are more than
small, please use a public fileserver and email the link). Do NOT send
anything confidential. Furthermore, unless you state otherwise, we
reserve the right to publish some or all of the information sent in
future versions of ssc, usually in the test suite. If you have a fix,
you are invited to submit a pull request on github, at . Thank you.

SSC can be run in a CGI environment. This is intended for use with
OpenBSD's native httpd web server (
You are reminded that SSC is not production software. Do NOT expose it
to untrusted data sources, such as those found on the open web.

Notes on names:
- recipe: a nod to Vernor Vinge's "A Fire Upon the Deep";
- tea: without tea, nothing works; then there's builders' tea;
- sauce: makes the dull tasty; identifies linguistically weak pedants;
- toast: toasts code; i liked burnt toast;
- heater: i'm not stopping now;
- unii: my preferred plural of unix: to my ears, both unixes and unices
        sound like they sing castrato.
- andor: and/or sans ancienne; land of Gift (aber nicht das Gift)

build.txt        notes on building ssc
gen.txt          a model man page
usage.txt        how to use ssc
releasenotes.txt fishless chips
LICENCE.txt      ssc licence information
LICENSE.txt      formal GPL 3 licence
more licences    licences for borrowed external content

I have a website, arts & ego, at It has
approaching 60G of original content. It contains hand coded HTMLs 2
to 5. It is a complete mess. Despite a long search, I could not find
any tools to properly identify its flaws. Anything I did find was at
most cursory.

Then came the cow flu*.

Hence ssc is a covid project that grew out of hand.

* corvid means crow, thus covid means cow**.
** by the laws of sympathetic spelling.

Unabashed Opportunism
If you appreciate modernist poetry or abstract photography, click on
books at for gen.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

dylan harris
December 2023