You said you were 90 % sure. Were you?
→ Open it — no install, no account, no server. Everything stays in your browser.
Record a prediction with a confidence. Later, say what actually happened. After
enough of them, hitrate can tell you what your confidence is worth — and until
then, it tells you that it can't.
"I'm 90 % sure" is one of the most common sentences in engineering and one of the least examined. Nobody writes it down, so nobody ever checks it, so it never gets better. Most people who do check discover the same thing: their 90 % is somewhere around 70 %, and it is far worse for deadlines than for anything technical.
That is not a character flaw. It is a measurement you have never taken.
- A verdict in one sentence — overconfident by n points, underconfident, or well calibrated. Or, honestly: not enough data yet.
- A reliability diagram — your claimed confidence against how often you were actually right, with an uncertainty bar on every point.
- A Brier score — one number that punishes being wrong and being vague, compared against the 0.25 you would score by answering "50 %" to everything.
- A breakdown by tag — because calibration is not one number. Most people are sharp in one domain and hopeless in another.
Press Load example data on the page to see all of it working, on a history belonging to somebody who is excellent at judging code and catastrophic at judging deadlines.
A dot without an uncertainty bar is a lie.
With eight predictions in a band, a reliability diagram will happily plot a point at exactly your claimed rate and look every bit as authoritative as one drawn over eight hundred. The Wilson interval on each point is the honest width of what you actually know, and on a young dataset the bars run most of the height of the chart. That is the correct picture. It is also why:
- no band gets a verdict below 10 resolved predictions — it says "too few (6 more)" instead of guessing;
- "calibrated" is worded as "no contradiction", because failing to detect miscalibration is not the same as demonstrating calibration;
- the overall verdict refuses outright until there is enough to say anything, and tells you exactly how much is missing.
A tool that reports a confident-looking number from four data points is doing the very thing you came to it to stop doing.
Confidence below 50 % is flipped, not scored separately. "30 % it rains" and "70 % it stays dry" are the same belief; scoring them as two would let one claim count twice. Below 50, the confidence and the outcome are flipped together.
Loading the example data into a real history is refused, not confirmed. Not a "are you sure?" dialog — a refusal. Invented predictions mixed into your own would make every number on the page meaningless, and that is not a trade-off worth offering behind an OK button somebody will click without reading.
localStorage, in your browser, and nowhere else. It survives a reload. It does
not survive clearing site data, a private window, or a different device — so
the page says exactly that instead of implying a safety it does not have.
Export JSON gives you everything; Import JSON merges it back, skipping
anything already present.
There is no analytics, no telemetry, no network request of any kind after the page loads.
git clone https://github.com/KatoHearto/hitrate
cd hitrate
python -m http.server 8000 # any static server will doIt is plain HTML, CSS and ES modules. No build step, no dependencies, no framework.
node --test # 50 tests, Node 18+There is no browser in CI, so test/app.smoke.test.js
installs the smallest DOM the app actually touches — with one sharp edge:
getElementById is backed by the real id list parsed out of index.html
and throws for anything else.
Pure logic tests stay green forever while markup and script drift apart. Rename a section in the HTML and the app quietly renders into an element that no longer exists. Verified by doing exactly that on a copy:
error: 'app.js asks for #tag-table, which does not exist in index.html
— the markup and the script have drifted apart'
- It measures calibration, not judgement. You can be perfectly calibrated and still be useless, by only ever predicting things that are obvious. A good forecaster is calibrated and takes on hard questions — the Brier score is the number that notices the difference, which is why it is the headline.
- You choose which predictions to record. Nothing here can stop you from quietly not writing down the ones you would rather forget. It is a mirror, not an auditor.
- Ten resolved predictions is a low bar. It is enough to stop the numbers being noise, not enough to be confident about a band. The intervals are shown precisely so you can see how much is still unknown.
- Tags are freeform. No taxonomy, no enforcement. Two spellings are two tags.
MIT — see LICENSE.