Try free tools
App source code · one-time purchase

LinkForge: your own link-in-bio page, with real click counts

LinkForge is a self-hosted web app that gives you one tidy page to put in your Instagram or TikTok bio. The page lists all your important links as big buttons, and every click goes through your own server so you can see which links people actually use. You buy the source code once and host it yourself: no subscription and no per-click fee.

£29or $39.99 · XAF 22,500 · one-timeBuy on Selar See it in action
Self-hosted: you own the dataNo subscription, no per-click feeNo IP addresses storedFull source code (Next.js)

What LinkForge does

Social apps only let you put one link in your profile. A link-in-bio page solves that: your single link opens a simple mobile page with your photo, a short bio and a stack of buttons (your latest video, your shop, your booking page, your other profiles).

LinkForge is that page, running on your own website at an address like yourdomain.com/yourname. Each button points at a short tracked address on your server. When someone taps it, your server counts the click and sends them on to the real destination. You can change a destination, reorder the buttons or switch one off at any time, and the page updates straight away.

Who it is for

  • Creators, photographers, coaches, small shops and local businesses who want a link-in-bio page on their own domain.
  • Anyone paying a monthly fee for a link-in-bio service who would rather own the page and the numbers.
  • Agencies and freelancers who set up a page for one client and host it on the client's domain.

Who it is not for

  • People who want a ready-made website to sign up to: this is software you install and host yourself.
  • Teams that need many separate users or one install serving many customers: it has one account and one page.
  • Anyone who needs custom colours, a custom button design, drag-and-drop ordering, location analytics or a hidden "Made with LinkForge" line without touching code: those are not built in.

How it works

Two parts do the work: a public page that anyone can open, and a private dashboard where you manage it.

You set up your page

Choose a username, a display name, a short bio, an optional photo address and one of five colour themes. Your public page appears at your-domain/username.

You add your links

Each link has an emoji icon, a label and a destination. You can reorder links, switch them off and on, edit them or delete them.

People tap a button

Every button on the public page points at your-domain/l/<link id>. Your server logs the click (time, device type and referrer) and redirects the visitor to the destination.

You read the numbers

The dashboard shows total clicks and your top links. Each link has its own page with a 14-day chart, referrer and device breakdowns and the latest clicks.

Because every button goes through your own server, your server has to stay online for the buttons to work.

Click analytics: see which links people use

Every click is logged by your own server and shown in the dashboard and on each link's page. It is deliberately simple and privacy-friendly: enough to tell which links work, without tracking individuals.

What you can see

  • Total clicks across all links, and the average per link
  • Your top five links on the dashboard
  • For each link: total clicks and a bar chart of clicks per day for the last 14 days
  • A breakdown by device type: Mobile, Tablet, Desktop, Bot or Unknown
  • A breakdown by referrer, which is whatever the visitor's app sent. Many apps send none, so expect some "Direct / no referrer"
  • The 20 most recent clicks, with time, device and referrer

What it does not record

  • No IP addresses are stored
  • No city, country or other location
  • No names, emails or cookies for your visitors
  • No fingerprinting: device type comes only from the browser's User-Agent text
  • Crawlers and link-preview bots that follow a link are counted too, in their own "Bot" group, so totals can include some non-human visits
LinkForge link page with a 14-day click chart, referrer and device breakdowns and recent clicks
A link's page: the 14-day chart, the referrer and device breakdowns and the latest clicks. These are sample clicks that ship with the app.

Features

This is the complete list of what version 1.0.1 does. Nothing here is a roadmap item.

Public link-in-bio page

A fast, server-rendered, mobile-friendly page at your-domain/username with your photo (or an initial), name, bio and link buttons. It needs no login to view.

Five colour themes

Slate, Rose, Emerald, Indigo and Sand. Pick one in the Profile page and the public page changes immediately.

Add, edit and delete links

Each link has an emoji icon, a label and a destination. If you leave off https:// it is added for you.

Reorder with arrows

Move a link up or down the list with the arrow buttons. The public page follows the same order.

Switch links on and off

Deactivate a link and it disappears from the public page. Anyone who still has the old tracked address sees a clear "No longer active" page. A deleted link shows "Link not found".

Click analytics

Dashboard totals, top links, and a page for each link with a 14-day chart, device and referrer breakdowns and recent clicks.

Your own domain

The page runs wherever you deploy it, so it can live on your own domain or subdomain. Set BASE_URL so the dashboard shows the right address to copy.

Copy-and-open buttons

The dashboard shows your public page address with a Copy button and a link to open it.

Login-protected dashboard

Email and password login (passwords stored hashed with bcrypt, session in a signed httpOnly cookie). The public page and the click redirect are public on purpose.

Full source code

Next.js, React, TypeScript, Tailwind and Prisma with SQLite by default. The code is small and readable.

LinkForge dashboard with the public page address, total clicks and top links
The dashboard: your public page address, total clicks, the average per link and your top links.

Walkthrough: set up a page, add a link, read the clicks

These are real screenshots from LinkForge running with the sample data it ships with (a fictional photographer called Jamie Rivera). The address shown is localhost because this copy ran on my own computer; on your site it will be your domain.

1Start from the dashboard

You see your public page address with a Copy button, total clicks, the average per link and your top links.

LinkForge dashboard with the public page address, total clicks and top links

2Set up your profile

Choose your username, display name, bio, an optional photo address and a colour theme. Save, and your public page is updated.

LinkForge profile form with username, display name, bio, avatar URL and five theme swatches

3Share the page

This is what your visitors see on a phone: your photo or initial, your name and bio, and your active links as buttons.

Phone-sized public link-in-bio page in the Indigo theme with five link buttons

4Change the look in one click

Pick another theme and save. Here the same page in Emerald.

The same public page in the Emerald theme

5Add a link

Type an emoji, a label and the destination. You can leave off https://.

LinkForge links page with the Add a link form filled in

6Manage your links

The new link joins the list. Use the arrows to reorder, Deactivate to hide a link without losing its numbers, or Delete to remove it.

LinkForge list of links with reorder arrows, click counts and Deactivate and Delete buttons

7Open a link to see its numbers

Each link has its own page: the tracked address, an edit form, a 14-day chart, referrer and device breakdowns and the latest clicks.

LinkForge link page with an edit form, a 14-day click chart, referrer and device breakdowns and recent clicks

These steps use only features that are in the product.

Install and set up

LinkForge is a standard Next.js project. If you have deployed a Node.js site before, this will feel familiar. If you have not, ask a developer or hosting support to do the install once: after that, using it needs no technical skill.

What you need

  • Node.js 20.9 or newer (the project was built and tested on Node 24) and npm
  • A place to run a Node.js web app, with a domain or subdomain that you control
  • A terminal to run a handful of commands
  • A long random text string for the session secret

Running it on a real website

  • Set BASE_URL to your real public address before you share the page, so the dashboard shows the right address
  • Run npm run build and npm run start on a normal Node server, with the SQLite file kept on a disk that survives restarts
  • On serverless hosts such as Vercel there is no permanent disk, so switch the Prisma database to Postgres as the README describes
  • Serve it over HTTPS

Unzip and install

Unzip the download, open a terminal in the folder and install the packages.

npm install

Set your settings

Copy the example settings file, then set BASE_URL to your domain and SESSION_SECRET to a long random string.

cp .env.example .env

Create the database

Apply the schema.

npx prisma migrate dev

Create your account

There is no sign-up page. The seed script creates the account, a sample profile, six sample links and about two weeks of sample clicks. Edit the email, password, username and links in prisma/seed.ts first, then run it.

npx prisma db seed

Start it

Run it locally to try it, or build and start it on your server.

npm run dev (try it locally) npm run build && npm run start

Before you go live: the seed creates a demo account (demo@example.com) with a sample password, and sample clicks. The sign-in form is not pre-filled, but anyone who reads this page could try the sample password, so change the seeded account in prisma/seed.ts before you run the seed.

What you receive after buying

You receive the complete source code as a single zip download from Selar, straight after payment.

In the download

  • The full LinkForge source code (Next.js, React, TypeScript, Tailwind)
  • The Prisma database schema, the first migration and a seed script with sample data
  • A README with setup steps, the project structure and the known limits
  • An example settings file (.env.example) and the package list
  • No node_modules folder: you install the packages yourself with npm

Not included

  • Web hosting, a domain name or an installation service
  • A hosted copy to sign in to: you run your own
  • Updates or new features are not promised. You get the current version, 1.0.1
  • A single-buyer licence file (LICENSE.txt) is included: you may run and modify the code for your own business or hosted clients, but not resell or share the source

Limits and honest notes

Better you know now than discover it after you start. These come from the project's own README and code.

  • One account, one page. There is no sign-up and no multiple users. The account comes from the seed script and there is no password-change screen.
  • Five fixed themes. No colour picker, fonts or custom buttons. The themes live in one small file (src/lib/themes.ts) that a developer can extend.
  • Your photo is a web address, not an upload. The profile takes the address of an image that is already online. If you leave it empty, your initial is shown in a circle.
  • The public page says "Made with LinkForge". It is plain text in the page's source code that you can edit or remove if you are comfortable changing code.
  • Buttons only. No social-icon rows, embedded videos, forms or email sign-ups on the page. Links have an emoji, not a picture.
  • Arrow reordering, not drag-and-drop. Fine for the handful of links a bio page has.
  • No location analytics, by design. It does not store IP addresses, so it cannot show cities or countries.
  • Bots are counted. Anything that follows a link, including link-preview crawlers, is logged as a click (grouped as "Bot").
  • Your server must stay online. If it is down or the domain lapses, the page and every button stop working.
  • SQLite by default. Fine for one page on a normal server. Switch to Postgres for serverless hosting, as the README describes.

Questions

Do I need to be a programmer?

You need to be comfortable installing a Node.js project and running a few terminal commands once. After it is installed, everything is point-and-click in the dashboard.

Can I use my own domain?

Yes. Deploy it on your domain or a subdomain and set BASE_URL. Your page is then at your-domain/username. Pointing the domain at the server is a hosting step, not a code change.

Does it store my visitors' IP addresses?

No. Each click records only the time, a coarse device category from the browser's User-Agent text, and the referrer if the app sent one.

Can I change the colours or add my logo?

You can pick one of five themes and set a photo from a web address. Custom colours and fonts are not built in, but the theme file is small and a developer can add more.

Can I remove the "Made with LinkForge" line?

It is a line of text in the public page's source code. If you are comfortable editing code, or have a developer, it can be changed or removed.

Can I have more than one page?

No. One install has one account and one public page. Run another copy for another person or brand.

Is there a limit on links or clicks?

LinkForge does not count or limit them and there are no per-click fees. Capacity depends on the server you run it on.

What happens to a link I turn off?

It disappears from your public page. If someone still has its tracked address, they see a clear "No longer active" message instead of an error, and the click is not counted.

One link in your bio. All of them on your page.

One payment, full source code, and the page and its numbers live on your own domain.

Buy LinkForge · £29

All our tools are listed on the tools catalogue. Free browser tools are in the tools hub.