Some things just need a count.
Hit the API. Keep track.
A simple API for the numbers in your app. Create a counter, make a request, and get on with building. No SDK or database setup required.
Open source. Free to use. Built for developers.
Website visits
Every visit, accounted for.
Request
/api/counters/public/
notch_pub_demoResponse
200 OK{
"message": "Success",
"count": 1284
}Try the increment button.
The count updates right here.
You have something to build.
A counter shouldn't slow you down.
A like button shouldn't need its own backend. Notch stores the number and handles the updates. You decide what to count and where to show it.
Public keys, by design.
Read and increment a counter directly from your frontend. Each counter has its own public key.
Every increment counts.
Atomic database updates keep simultaneous requests from overwriting one another.
Fits your existing stack.
Use fetch, curl, or any HTTP client. The API returns JSON your code already knows how to read.
Your static site can count.
Add view counts, likes, or download totals without setting up a database of your own.
From an idea to an increment.
A pretty short trip.
Create it in the dashboard. Connect it in your code. Keep an eye on it whenever you need to.
notch_pub_7f2a…Give your number a home.
Name your counter and copy its public key. Keep separate counters for your blog, side project, or whatever you're shipping next.
Create your first counter// Your API host and counter's public key
const endpoint = `${apiBase}/api/counters/public/${publicKey}`;
// Add one to the count
const response = await fetch(endpoint, {
method: "POST",
});
const { count } = await response.json();
console.log(count); // 1285One request. One more.
Send a POST request when something happens. Read the current total with GET. It works anywhere you can make an HTTP request.
Explore the APISmall on purpose.
Straightforward under the hood.
Public endpoints for counting. Authenticated routes for managing counters. An Express API backed by MongoDB, with the source open to read.
// Your API host and counter's public key
const endpoint = `${apiBase}/api/counters/public/${publicKey}`;
// Add one to the count
const response = await fetch(endpoint, {
method: "POST",
});
const { count } = await response.json();
console.log(count); // 1285- Read with GET
- Fetch the current count without changing it.
- Increment with POST
- Add exactly one and get the updated count in the response.
- Atomic updates
- MongoDB applies the increment in one database operation.
- Account controls
- Create, rename, reset, and delete your counters from the dashboard.
The code is part of the product.
Take a look. Run it yourself.
Read the implementation, report a bug, or bring your own server. The client, API, and setup instructions live in one repository.
Clone the Source Code on GitHubWhat developers are saying.
Don't just take our word for it, here's what users have to say.
A few things you
might be wondering.
Is Notch free to use?
Yes. Notch is open source and free to use. You can also run the client and API yourself using the setup instructions on GitHub.
Do I need an account?
You need an email and password to create and manage counters. Reading or incrementing a counter only requires its public key.
How do I create my first counter?
Sign up, open “Create New Counter” in the sidebar, and give it a name. Copy its public key from the dashboard and use it in your API requests.
Can I put a public key in my frontend?
Yes. Public keys are intended for client-side use. Anyone with a key can read and increment that counter, so use Notch for public counts rather than sensitive or trusted records. Managing and deleting counters requires your account.
What does the API return?
A read request returns a JSON object with the count. An increment request returns a success message and the updated count. Both use the same public counter endpoint.
Can I host it myself?
Yes. The repository includes the React client and the Express API. You will need Node.js, pnpm, and a MongoDB instance. The README covers installation, environment variables, and deployment.
Build your thing.
We'll keep count.
Open source, and always free.