harbor Sign in

Clear decks for every visitor.

Harbor is a small widget that lets someone reading your site adjust how it is presented to them — contrast, text size, line and letter spacing, motion, link and focus visibility, a reading guide, and an optional reader typeface. Their choices are stored in their own browser and are never sent anywhere.

It installs as one <script> tag. Every control is available to every visitor on every site, with no cap on traffic, and the widget itself is free.

Get started — or read what else Harbor does.


What it does not do

This section is deliberately first, and it is the same one that leads the widget's own README.

It is not silent, though, and it would be easy to imply otherwise. On each page view the bootstrap asks our API which version to load and how your site is configured, using an account id that identifies the site, not the person. If you switch usage analytics on, it also reports which controls were used — never a URL, never a referrer, never anything typed. What that request carries, and what it unavoidably reveals anyway, is set out in the Privacy Policy.


Installing it

Add a site in your account and it gives you a snippet like this one, with your own account id in it. Put it in the <head> of every page you want the widget on.

<script src="https://cdn.harboraccessibility.com/v1/s.js"
        data-account="your-account-id"></script>

That is the whole installation. There is no build step, no framework, and nothing to redeploy when we ship a fix — the bootstrap applies stored preferences before first paint with no network at all, then loads the current version. A fix reaches every installed site on the next page load rather than whenever each owner next redeploys.


What it respects without being asked

With nothing stored, the widget follows the preferences a visitor has already set on their own device: prefers-reduced-motion and prefers-contrast are followed by default, because plenty of sites ignore them. Where Windows High Contrast is active it stands aside completely rather than repainting a page the operating system is already repainting.

The middle notch of each spacing control is the value named in WCAG 2.1 success criterion 1.4.12 — line height 1.5, letter spacing 0.12em, word spacing 0.16em — because those are the numbers a tester would apply by hand.


Create an account to get a site key and an install snippet.

Service Terms · Privacy Policy · Harbor Accessibility Co.