Skip to content

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.

Notch / My workspaceLocal demo

Website visits

Every visit, accounted for.

Active
Total count1,284One request. One more.
Public keynotch_pub_demoReady for your frontend

Request

POST/api/counters/public/
notch_pub_demo

Response

200 OK
{
  "message": "Success",
  "count": 1284
}

Try the increment button.
The count updates right here.

A small API forPage viewsArticle likesDownload countsLittle milestones

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.

Article likesCounter created
0 Ready for the first one.
Public keynotch_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
A request is all it takesHTTP
// 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
No SDK. No dependencies. Just HTTP.

One 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 API

Small 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.

JavaScriptfetch
// 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
No SDK. No dependencies. Just HTTP.
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 GitHub

What developers are saying.

Don't just take our word for it, here's what users have to say.

Alex Morgan
I wanted a view count on my blog without building a whole backend for it.
Sam Lee
A public key, a fetch call, and a number I can put wherever I need it.
Jordan Patel
The kind of small tool I like having around for a weekend project.
Casey Kim
Read the count with GET. Add one with POST. That is the whole integration.
Taylor Reed
Sometimes all a static site needs is a little bit of shared state.
Jamie Chen
Being able to read the source and run it myself is a useful part of the deal.

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.