How to create your first short link
Shorten a URL, pick a domain and share it in under a minute.
Getting StartedFind answers, learn best practices, and get the most out of Lnki.io.
Create your account, your first short link, and learn how the trial works.
7 articlesBack-halves, expiry, folders, tags, bulk import and the Link Rotator.
15 articlesDesign, download and track QR codes that you can re-point later.
8 articlesClicks, visitors, sources, alerts and campaign tracking with UTMs.
12 articlesConnect your own domain, set up DNS and manage per-domain defaults.
11 articlesSign-in, security, notifications, teammates, roles and your data.
13 articlesAPI keys, authentication, rate limits, webhook events and signatures.
9 articlesPlans and limits, upgrades, invoices, payment methods and cancelling.
8 articlesSet up your account and shorten your first link in a few minutes.
Lnki.io turns long URLs into short, branded links and shows you who clicks them. In one workspace you can:
Go to Sign up and either continue with Google or GitHub, or enter your full name, email and a password of at least 8 characters.
You are signed in straight away and get a personal workspace on a 14-day trial. You do not enter a card to start.
If a teammate invited you, open the link in the invitation email instead. You will join their workspace rather than starting a new one.
Your welcome email contains a confirmation link that is valid for 3 days. Nothing in the product is locked while your address is unconfirmed, but confirming it makes sure password resets and alerts reach you.
Lost the email? Open Settings › Profile and use send the link again under your email address. You can request it up to 3 times an hour.
Accounts created with Google or GitHub are verified automatically.
http:// or https://; if you leave the scheme off, https:// is added for you.The Custom tab on the Create page adds a custom back-half, expiry, folder, tags and a campaign.
Every new workspace starts on a 14-day trial with no card required. During the trial you can have up to 5 active links and 1 custom domain, and import up to 500 rows at a time. Links created on the trial expire after 30 days unless you pick a different expiry.
The workspace owner gets a reminder from 3 days before the trial ends. When it ends:
My Links lists every link in the workspace. Use the All, Favorites and Archived tabs, filter by status, folder, tags or campaign, and sort by newest, oldest, most clicks or least clicks.
Search matches any part of a link's title, back-half or destination. Home also shows your most recent links with quick actions.
A workspace holds your links, QR codes, domains, analytics and billing. You get one when you sign up, and everything you create belongs to it rather than to you personally, so teammates you invite see the same links.
Each person can own one workspace and can be a member of others.
Create, edit, organise and import short links.
Yes, on the Starter, Pro and Business plans. On the Create page, open the Custom tab and type the back-half you want. On the trial, links get a generated 7-character code.
A back-half:
- and _, and starts with a letter or digit;login, pricing, api or settings.Archived links keep their back-half, so it is not free for reuse until the link is permanently deleted.
Yes. Open the link's menu in My Links, on Home or in Campaigns & UTM and choose Edit. The edit page opens with everything filled in: destination, short link, title, backup URL, password, expiry, folder, tags and campaign. Change what you need and choose Save changes.
Changing the destination is safe: the short link and any QR code made from it stay the same, so nothing needs to be reprinted or reshared.
Changing the back-half or domain creates a new short address, and the old one stops working straight away, including on QR codes already printed. The page warns you before you save. Custom back-halves need a paid plan.
Each link can expire after 7, 30 or 90 days, or never. You choose this on the Custom tab of the Create page. The form starts at 30 days, so pick Never expire if the link should stay live.
An expired link stops redirecting but keeps its click history. Owners, admins and editors get one alert covering links that expire within the next 7 days.
Admins can set the workspace default in Settings › General, and each custom domain can have its own.
A clear page that says what happened: This link has expired, This link is no longer active (archived), or We couldn’t find that link (deleted or mistyped). It shows the address they opened and suggests asking whoever shared it.
If the link is on a custom domain with a Fallback URL, visitors are sent there instead, for example to your homepage.
Add a password on the Custom tab when you create the link, or later with Edit. It must be at least 8 characters.
Visitors see a page asking for the password before they reach the destination; the destination itself is never shown on that page. After entering it once, they can open the link again in the same browser without retyping it. Repeated wrong guesses are slowed down.
To change or remove the password, open Edit and use Change or Remove.
Give the link a backup URL with Edit. Lnki.io checks the destination every 15 minutes, and sooner after a failed check. When it fails three checks in a row, visitors are sent to the backup instead, and you get a notification. As soon as the destination answers again, visitors go back to it automatically.
Without a backup URL, links keep pointing at the destination even when it is down, and you still get the broken-link alert.
Good backups are a page that rarely changes, such as your homepage or a status page. If you change the destination, its health is checked again from scratch.
| Archive | Delete | |
|---|---|---|
| Stops redirecting | Yes | Yes |
| Can be undone | Yes, restore it from the Archived tab | No |
| Click history | Kept | Removed |
| Back-half | Stays reserved | Freed |
| QR code | Kept (stops working until restored) | Removed |
Archived links do not count toward the trial's 5 active links.
Folders group links. Folders can be nested inside each other, and a link sits in one folder at a time. Names can be up to 80 characters and must be unique within the same parent folder.
Deleting a folder also deletes its subfolders, but never the links. They simply become unfiled.
Tags are labels you can filter by. A link or QR code can carry up to 10, and you can create a new tag right from any tag picker. Every workspace starts with five: campaign, social, email, promo and launch.
In My Links, filter by several tags at once and choose whether a link must match any or all of them. Tags cannot be renamed or deleted yet.
.xlsx, first sheet). Files can be up to 10 MB.Any row that was not imported keeps its reason, so you can fix the file and try those rows again. The preview is held for 30 minutes.
Only Destination URL is required. Optional columns are Back-half, Title, Folder, Tags (comma-separated), Favorite, UTM source, UTM medium, UTM campaign, Expiry date and Password.
You can download a sample file from the Imports page.
| Plan | Rows per import |
|---|---|
| Trial | 500 |
| Starter | 2,000 |
| Pro | 5,000 |
| Business | 10,000 |
On the trial, an import also cannot take you past 5 active links.
A rotator is one short link that sends each visitor to one of several destinations, which is useful for A/B tests or sharing load between pages. Create one from Link Rotator by giving it a back-half and two destination URLs.
Choose how visitors are split:
You can pause, resume and archive a rotator. Only an active rotator redirects. The Link Rotator is a paid-plan feature.
Yes, with Link Targeting on the Pro and Business plans. Add rules to a short link, each with its own destination. A rule can match:
| Group | What a rule can match |
|---|---|
| Location | Country, world region (Europe, Asia…), state or province, and city — all chosen from lists |
| Technology | Device (desktop, phone, tablet), operating system (iOS, iPadOS, Android, Windows, macOS) and browser |
| Audience | The language their browser uses, and the traffic source: social, messaging, email, search, a QR scan, other websites or direct |
| Time | Day of the week and time of day (morning, afternoon, evening, night) in your workspace's time zone |
Every option is picked from a searchable list. For state and city, start typing and choose from the matching places: about 4,000 states and provinces and every city of 15,000 people or more. Each is saved with its country, so Paris, France and Paris, Texas stay apart, and spelling differences in capitals or accents do not matter.
Rules are checked from top to bottom and the first match wins, so put the most specific rule first. Everyone who matches no rule goes to the link's own destination. You can pause a link's rules, switch single rules off, and see how many clicks each rule received.
Location comes from the visitor's connection, so someone on a VPN is matched by where the VPN is. State and city come from our network's location data and may be missing for some visitors; they then fall through to the next rule. An iPad in desktop mode reports itself as a Mac and is treated as a desktop.
Short links answer with a 302 (temporary) redirect that is never cached, so a changed destination takes effect at once. Back-halves are not case-sensitive.
Query parameters a visitor adds to the short link are not passed on to the destination. Put the parameters you need, such as UTMs, in the destination URL itself.
Create styled QR codes for print and screens.
Each short link can have one QR code.
Yes. A saved QR code always opens its short link, not the destination directly, so you only need to change the link's destination. The printed code stays valid.
Save before you download. When you paste a long URL, the preview points straight at that URL until you press Create. Download the file after creating the code so it carries the short link.
On a custom domain you can save these as the domain's QR defaults.
PNG, SVG and PDF, plus Copy QR code image for pasting into a document. In the builder, PNG and PDF use the size you pick: 256, 500 or 1024 px. Downloads from the QR Codes list are 1024 px.
For print, use SVG. It is a vector file and stays sharp at any size.
A scan is a counted click on the QR code's short link. If you also share that short link as text, those clicks are included too, so use a separate link when you want to measure print on its own.
Bots, link previews and double-taps are filtered out the same way as for any click.
There is no separate QR code limit. A QR code made from a new URL creates a short link, and that link counts toward your plan's link allowance. You need a running trial or a paid plan to create one.
Understand who clicks your links and which campaigns bring them.
Analytics covers the whole workspace in five tabs:
Every plan gets the same reports, and every workspace member can read them.
A click is a real person opening your short link. Automated traffic is filtered out, and a second tap from the same visitor on the same link within 10 seconds counts once.
Unique visitors are counted per day and added up across the period. Someone who clicks on Monday and again on Wednesday counts as two, so treat the figure as an estimate rather than a head count.
Not every request to a short link is a person. These are kept out of your click counts and listed separately so you can see how much there was:
Filtered requests are still redirected normally. They are just not counted.
Clicks are recorded in the background as they happen. While you are viewing a report, today's figures refresh at most every 30 seconds, and the page shows when it was last updated.
Last 7, 30 or 90 days, or a custom range of up to 366 days. Each report is compared with the period of the same length just before it. Trends are shown per day up to 62 days and per week beyond that.
Days and hours in the reports follow UTC.
For each counted click we keep the time, country, device type, operating system, browser, language, the referring site's host name and any UTM values.
See the Privacy Policy for the full picture.
Individual click records are kept for 400 days. This is the same on every plan.
Yes. On the Links tab of Analytics, tick 2 to 4 links to chart them together over the selected period.
Lnki.io regularly checks the destinations of links that have been clicked in the last 30 days, and every 15 minutes for links with a backup URL. If a destination fails three checks in a row, you get a broken link alert in the bell, and it clears itself once the page responds again. Links with a backup URL send visitors there in the meantime.
Once a day we also look for unusual traffic on each link:
Choose which of these also reach you by email in Settings › Notifications.
utm_source, utm_medium and utm_campaign written into its destination.You can also pick a campaign on the Custom tab when creating a single link. UTM values are tidied automatically: lowercased, with spaces turned into underscores.
A campaign is what you are promoting, such as a spring sale. It sets utm_campaign and can have dates, a colour and a status.
A channel is where you share it: a named source and medium pair like newsletter / email. Every workspace starts with 11 common channels, including Facebook, Instagram, LinkedIn, Google Ads, SMS and Print & QR, and you can add your own.
The Campaigns & UTM page then reports clicks by campaign, channel and parameter. Deleting a campaign or channel leaves its links and their UTMs untouched.
Yes. In Settings › UTM, an admin can set default values and switch on auto-append. It is off by default. When on, new links get the defaults for any UTM key the destination does not already carry, so parameters you typed yourself are never overwritten.
The UTM settings panel is available on paid plans. Each custom domain can also have its own UTM defaults.
Use your own domain for branded short links.
go.yourbrand.com.Once the domain is verified you can pick it when creating links, QR codes and rotators. A domain can be connected to only one workspace.
The domain's page shows three options with the exact values to copy. Any one of them is enough to verify the domain:
| Record | Use it for | Name / Host | Points to |
|---|---|---|---|
| CNAME (recommended) | Subdomains such as go.yourbrand.com | The subdomain part, e.g. go | cname.lnki.io |
| A record | Root domains such as yourbrand.com | @ | The IP address shown on the page |
| TXT | Proving ownership | @ | lnki-verify=… (your token) |
Always copy the values from your own domain's page, since the verification token is unique to you.
Usually a few minutes after you save the record, though DNS changes can occasionally take up to 48 hours to spread. Lnki.io re-checks pending domains every 15 minutes, and you can press Check DNS now at any time.
A domain that is still unverified after 24 hours triggers a reminder in the bell. If yours is stuck, check for a typo in the record, make sure there is no conflicting record on the same name, and confirm you edited the DNS zone that is actually live for the domain.
Yes. HTTPS is set up for a domain once its DNS is verified, and Force HTTPS is on by default, so a visitor who types http:// is sent to the secure address first. You can see the certificate's issuer and expiry under View SSL certificate.
A subdomain such as go.yourbrand.com or links.yourbrand.com is the simplest choice. It needs a single CNAME record and leaves your main website untouched.
From Domains you can also use Add subdomain to create one under a domain you have already connected, and label what it is for. Subdomains count toward your plan's domain limit.
It is the domain new links start on. Each workspace has one, and it can be lnki.io or any verified custom domain. Change it from the domain's settings page. You can still choose a different domain for an individual link.
| Plan | Custom domains |
|---|---|
| Trial | 1 |
| Starter | 3 |
| Pro | Unlimited |
| Business | Unlimited |
The built-in lnki.io domain is always available and does not count.
Both are in a domain's settings under Redirects & security:
go.yourbrand.com with nothing after it, sends visitors.Each must be a full http or https URL and cannot point back at the same domain.
Yes. Every custom domain has a settings page where you can set:
The built-in lnki.io domain has no settings of its own.
Open the domain's menu in Domains and choose Remove.
Short URLs on the removed domain stop working, so update anything you have printed or shared with the old address.
When a paid subscription ends, the workspace returns to the trial allowance of one custom domain. The oldest domain is kept. Any others are marked Disabled: plan limit exceeded, and the primary domain falls back to lnki.io if needed.
To use them again, choose a plan with room for them in Settings › Billing. If a domain stays disabled afterwards, contact support.
Manage your sign-in, your teammates and your data.
Resetting signs you out on every device. If no email arrives, check your spam folder and that you used the address you signed up with. For your protection the page shows the same message whether or not an account exists, and sends at most 3 reset emails an hour to one address.
Go to Settings › Security and choose Change password. You need your current password. Changing it signs out your other devices and sends you a confirmation email.
If you signed up with Google or GitHub you never chose a password. Use Forgot password once to set one.
Yes, from the login and signup pages. If the Google or GitHub email matches an existing Lnki.io account, you are signed in to that account and the provider is linked to it.
Manage linked providers in Settings › Profile with Connect and Disconnect. You cannot disconnect your only way of signing in, so set a password first if you want to remove a provider.
Update it in Settings › Profile. The new address must not belong to another account. We send a confirmation link to the new address and a notice to the old one. Verification and unsubscribe links from earlier emails stop working.
Not yet. For now you can protect your account by:
Settings › Security lists every device that is signed in, with its IP address and when it was last active. Sign out any single session, or use Sign out other sessions to keep only the one you are using.
The same page shows your recent sign-in history. Sign-ins are kept for 180 days.
Open Settings › Team, enter an email address, choose a role and send. Inviting needs the Admin or Owner role and a plan with team seats:
| Plan | Seats (including the owner) |
|---|---|
| Trial and Starter | 1 |
| Pro | 3 |
| Business | 10 |
| Role | Can do |
|---|---|
| Viewer | See links, QR codes, folders and analytics. Manage their own profile, password and notifications. |
| Editor | Everything a Viewer can, plus create, edit and archive links, QR codes, folders, tags, rotators and imports. |
| Admin | Everything an Editor can, plus team members, custom domains, API keys, webhooks, workspace settings and data exports. |
| Owner | Everything, including billing and transferring ownership. Each workspace has one owner. |
Admins can change a member's role or remove them from Settings › Team. The owner's role cannot be changed there.
Only the owner can do this. In Settings › Team, open the menu next to an active Admin and choose Make owner, then confirm by typing the workspace name. The new owner must not already own a workspace of their own.
After the transfer you become an Admin. Saved cards are removed from the workspace, so the new owner needs to add a payment method before the next renewal. Both of you get an email.
Everything is in Settings › Notifications:
Every email also has an unsubscribe link in its footer. A few essential messages are always sent: password resets and changes, email changes, export results, payment failures and trial reminders.
The bell is your inbox for things that need attention in the current workspace, and it updates live. Examples:
Items clear themselves when the underlying problem is fixed. Most are also emailed after a short delay unless you have already read them in the app.
Owners and admins can request an export from Settings › Data & Privacy. Choose All data, Links & clicks, Account data or Team data.
The export is prepared in the background as a compressed archive of CSV and JSON files: your links, daily click totals per link, team, account details and, for All data, QR codes and domains. You get an email when it is ready. The download stays available for 7 days, only to the person who requested it, and each type can be requested once every 24 hours.
Account deletion is handled by our support team for now. Contact us from the email address on your account. Before we can delete it:
Deletion is permanent. It removes the workspace you own together with its links, click history, QR codes, domains, webhooks and API keys, so export your data first if you want a copy.
Create and manage links from your own code, and get notified when things happen.
API keys are available on the Business plan. An Admin or Owner can create one on the API Keys page.
The full key, which starts with lnki_live_, is shown once when you create it. We store only a fingerprint of it, so copy it somewhere safe straight away. If you lose it, regenerate the key.
The key itself is not sent with each request. You exchange it for a short-lived access token.
Exchange your key for an access token at POST /api/v1/oauth/token, then send that token in the Authorization header. A token lasts one hour and comes with a refresh token for getting the next one:
Authorization: Bearer lnki_at_…
The API manages links, QR codes (/api/v1/qr_codes) and bulk imports (/api/v1/imports). For links, under /api/v1/links:
GET /api/v1/links lists links.POST /api/v1/links creates one. Send destination_url, plus optional fields such as slug, domain, title, tag_ids, folder_id and expiry_days.GET, PATCH and DELETE /api/v1/links/:id read, update and archive a link.A token has full read and write access to its workspace's links, QR codes and imports. A missing, expired or invalid token gets 401, and so does a raw lnki_live_ key sent in place of a token. See the documentation for full examples.
Each API key can make up to 5,000 requests per minute, shared by all the access tokens issued from it. Creating links is additionally limited to 60 per minute per workspace, and imports to 10 per minute.
Every response tells you where you stand in the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. Over the limit you get 429 Too Many Requests with a Retry-After header that says how many seconds to wait. Read it and pause, rather than retrying immediately.
List requests take page and per_page. For links, per_page can be 5, 10, 25 or 50; anything else is treated as 10. The response's meta object carries the total and the current page.
Errors come back as JSON with a readable message and a stable code, { "error": "…", "code": "…" }. Validation failures add an errors list.
| Status | Meaning |
|---|---|
| 400 | The request body could not be read |
| 401 | Missing, invalid or expired access token |
| 403 | Not allowed on your plan |
| 404 | No such link, QR code or import |
| 422 | The request was not valid |
| 429 | Rate limit reached |
On the API Keys page, Regenerate issues a new key under the same name and stops the old one immediately. Revoke stops a key for good. Either one also ends every access and refresh token issued from that key.
The page shows each key's requests this month, and you are reminded about keys that have gone unused for 90 days. Treat a key like a password: keep it on your server, never in browser code or a public repository.
whsec_. It is shown only once.webhook.test event.Webhooks are a paid-plan feature. You can pause and resume an endpoint at any time.
| Event | Sent when |
|---|---|
link.created | A link is created |
link.updated | A link is changed |
link.deleted | A link is archived |
link.clicked | A link gets a counted click |
domain.connected | A custom domain is verified |
api_key.created | An API key is created |
Clicks are grouped so a busy link does not flood your endpoint: up to 50 clicks, or 5 seconds' worth, arrive together as one link.clicked.batch event.
Every payload has the same envelope: event, event_id, created_at and data.
Each request carries an X-Lnki-Signature header of the form sha256=<hex>. It is the HMAC-SHA256 of the raw request body, keyed with your endpoint's signing secret. Compute the same value and compare:
const crypto = require("crypto")
function isFromLnki(rawBody, header, secret) {
const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex")
return header.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected))
}
Use the body exactly as received, before any JSON parsing. To ignore repeats, remember the event_id from the payload: retries of the same delivery also share one X-Lnki-Delivery-Key header.
Reply with any 2xx status within 10 seconds to acknowledge a delivery. If your endpoint times out, cannot be reached, or returns 429 or a 5xx, we try again: up to 5 attempts in total, waiting 30 seconds, then 1, 2 and 4 minutes. Other 4xx responses are not retried.
After 5 deliveries in a row have failed, the webhook is paused and admins are notified. Fix the endpoint and press Resume.
View deliveries shows each attempt with its status, response code and duration for the last 30 days.
Understand your plan, your invoices and how changes take effect.
Every workspace starts on a 14-day trial. The paid plans are Starter, Pro and Business:
| Trial | Starter | Pro | Business | |
|---|---|---|---|---|
| Active links | 5 | Unlimited | Unlimited | Unlimited |
| Custom domains | 1 | 3 | Unlimited | Unlimited |
| Custom back-halves | No | Yes | Yes | Yes |
| Team seats | 1 | 1 | 3 | 10 |
| Rows per import | 500 | 2,000 | 5,000 | 10,000 |
| Webhooks | No | 5 | 10 | Unlimited |
| API keys | No | No | No | Yes |
Analytics reports are the same on every plan. Current prices are shown in Settings › Billing when you choose a plan.
The workspace owner opens Settings › Billing, chooses Change plan and picks a plan. Payment is completed on a secure Stripe checkout page, and the new plan is active as soon as the payment goes through.
Only the owner can see and change billing.
Credit and debit cards. In Settings › Billing you can add a card, choose the default and remove old ones, and Manage billing opens the Stripe customer portal.
Payments are processed by Stripe. Your card details go straight to Stripe and are not stored on Lnki.io servers.
Settings › Billing lists your invoices with date, amount, status and the card used. Each has a PDF to download, and you can filter the list by status and period.
The owner gets an urgent bell notification and an email with a link to update the payment method. It clears as soon as a payment succeeds, and a receipt is emailed.
To help you avoid this, we also email the owner when the default card is due to expire this month or next.
The owner can cancel from Settings › Billing with Cancel Subscription. Your plan stays active until the end of the period you have already paid for. We do not offer partial refunds for unused time.
When the period ends:
Nothing you made is lost. Your links and QR codes keep working and your analytics stay available. To create new links, QR codes or imports, the owner needs to choose a plan in Settings › Billing.
Each plan has a monthly click figure, shown as a usage meter in Settings › Billing: 1,000 on the trial, 10,000 on Starter, 100,000 on Pro and 1,000,000 on Business. It counts real clicks in the current calendar month, after bots and previews are filtered out.
Your links are not switched off if you pass it. If you are regularly above your plan's figure, consider moving up a plan.
Try fewer or different words, or pick a topic. If the answer is not here, ask us and we will add it.
Contact supportShorten a URL, pick a domain and share it in under a minute.
Getting StartedThe exact CNAME, A and TXT records, and which one to use.
Custom DomainsHow bots, link previews and double-taps are kept out of your numbers.
Analytics & UTMRoute by country, city, device, browser, language, traffic source or time of day.
Link ManagementA backup URL takes over automatically while the destination is broken.
Link ManagementQR codes open the short link, so you can re-point them any time.
QR CodesViewer, Editor, Admin and Owner permissions side by side.
Account & TeamOne short link per channel, each tagged with the right UTMs.
Analytics & UTMLinks, domains, seats, imports, webhooks and API access by plan.
Billing & PlansFollow the getting started guide and create your first branded short link in under 5 minutes.
Start the guide