Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Software License Key Generator & Verifier (Signed Offline Keys)

Ed25519-signed licence keys your app checks offline, with code for eight languages.

Free preview, no sign-upIncluded in your pass Pro tool Pro pass: ₹179 / $5.99 for 30 days On this device: nothing is sent
+3 +1 more details No uploadWorks offline once opened Developer

Free preview: demo licence keys signed with a key pair made on this page, and the first lines (up to 20) of each verification snippet without the public key. Locked until you unlock it: download and copy.

Pro pass ₹179 for 30 days or ₹79 for 1 week, one‑time. Pro pass $5.99 for 30 days or $2.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: demo licence keys signed with a key pair made on this page, and the first lines (up to 20) of each verification snippet without the public key.
  • Locked until you unlock it: download and copy.
  • Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Batch runs unlock with a pass only. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews. Batch runs unlock with a pass only.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

For software you own: keys are signed with your own key pair, and your app checks them with its public key. This page cannot find, guess or crack the keys of other software.

1 · Your signing key pair

Keep the private key

At least 8 characters; a long passphrase is best. The file is encrypted PKCS#8 (PBKDF2-HMAC-SHA256, 600,000 rounds, AES-256), which OpenSSL and every crypto library can open. Nobody can recover a lost password.

Use a key pair you saved before

Opens “ENCRYPTED PRIVATE KEY” and “PRIVATE KEY” Ed25519 files, including those OpenSSL writes. The key stays in this tab.

2 · A licence key

Your app accepts only keys with its own product id.

The key works through this whole day (UTC). Empty: it never expires.

Key style

The key

 

3 · Check a key

Check it with

4 · Code for your app

 

5 · Keys for a buyers’ list

Every key is for the product id above; columns you match below fill each key’s fields.

6 · Revocation list

The code above has the same serials in its REVOKED list. Ship the file with your next update, or let your app download it; a key that is already in someone’s hands keeps working in builds that do not have the list.

 

Next steps Done. What next?

Start over

A Pro pass unlocks the full result. See passes

All developer tools

About the Software License Key Generator & Verifier (Signed Offline Keys)

Sell or hand out licences for software you own without a licence server: make an Ed25519 key pair in this browser, sign each customer’s licence (product, plan, licensee, e-mail, seats, an optional expiry date and an optional machine id) into a key, and let your app check the key offline with the public key. The private key makes keys and stays with you; the public key, built into your app, can only check them — so nobody can make new keys from your app.

Keys come as easy-to-type groups (7Q2K9-…, Crockford Base32: no I, L, O or U, case and hyphens ignored) or as a shorter LK1. token. The page writes the checking code for JavaScript, TypeScript, Python, Go, Java, C#, Rust and Swift with your public key built in, checks pasted keys and shows what they say, turns a CSV of buyers (a store’s sales export, for example) into one key per row, and writes a revocation list. Your private key can be saved as a password-protected file that OpenSSL and every crypto library can open.

Everything runs on your device; nothing is uploaded. Without a pass the result is a free preview: demo keys signed with a key pair made on this page that cannot be saved, and the first lines of each snippet; your own saved key pairs, the full code, the key files, the buyers’ file and the revocation list unlock with a Pro pass.

How to use it

  1. Make a new key pair (or, with a pass, open the one you saved before). Its key id identifies it.
  2. With a pass, save the private key as a password-protected .pem file and keep it somewhere safe: anyone with it can make keys for your product.
  3. Enter your product id and the customer’s details, choose the key style, and make the licence key.
  4. Check any key under Check a key: paste it and see whether the signature matches and what it says.
  5. Choose your app’s language under Code for your app; with a pass, copy or download the code (or all eight languages as a ZIP) and call its check function when the user enters a key.
  6. For many customers, choose a CSV of buyers, match its columns, and make keys for every row; with a pass, download the CSV with a key for each buyer.
  7. To revoke keys, list their serials under Revocation list and ship the list with your next update; the code checks the same serials.

Examples

A yearly Pro licence for one customer
Input
acme-editor · plan pro · Ada Lovelace · ada@example.com · 3 seats · expires 2027-12-31
Result
A key of 41 groups of five (242 characters with the hyphens), or an LK1. token of 172 characters

The key says all of this, signed: change one character and the check fails.

A key bound to one computer
Input
acme-editor · machine id HOST-7F3A (the id your app computes)
Result
Valid on HOST-7F3A; “bound to another machine” anywhere else
What your app gets back
Input
checkLicence(key) in the JavaScript code
Result
{ valid: false, reason: "expired", licence: { product: "acme-editor", expires: "2027-12-31", … } }

Common uses

  • Licensing a desktop app, plug-in, game or command-line tool without running a server.
  • Selling through a store that sends you a CSV of orders, then e-mailing each buyer a key.
  • Trial and subscription keys that end on a date, checked without an internet connection.
  • Keys bound to one machine for software that must not be copied to another.
  • Revoking leaked or refunded keys in the next release.

The key format

A key is a short payload followed by its 64-byte Ed25519 signature (RFC 8032). The payload, numbers big-endian: the format version (1), flags (bit 0: the key expires; bit 1: it is bound to a machine), the issue date and the expiry date as days since 1970-01-01 (two bytes each, so dates run to 2149-06-06), the number of seats (0 = unlimited), an 8-byte random serial, then the product id, plan, licensee, e-mail and machine id, each a length byte and UTF-8 text. The signature covers the whole payload, so no field can be changed.

The grouped form is Crockford Base32 of those bytes in groups of five; it ignores case and hyphens and reads O as 0 and I or L as 1, so a key read over the phone still works. The token form is LK1. followed by base64url (RFC 4648) of the same bytes. Every snippet reads both.

What the code checks

  • The signature, with the Ed25519 public key built into the code.
  • The product id: a genuine key for another of your products is refused.
  • The revocation list: serials you listed are refused.
  • The expiry date: the key works through the whole expiry day (UTC).
  • The machine id: a key bound to a machine works only where your app reports the same id.

Each function returns the reason when a key is refused — not-a-key, bad-signature, other-product, revoked, expired or other-machine — and the licence fields of every genuine key, so your app can show the licensee or turn on the plan’s features. Seats are written into the key; counting them is up to your app.

Keeping it secure

  • The private key is made by your browser’s Web Crypto and never leaves this tab unless you save it. The saved file is PKCS#8 encrypted with PBES2 (RFC 8018): PBKDF2-HMAC-SHA256 with 600,000 rounds, as OWASP recommends for PBKDF2, and AES-256-CBC. OpenSSL opens it with openssl pkey -in key.pem.
  • Offline keys can be shared like any other licence key, and code inside an app can be patched to skip the check. Signed keys stop people from making keys; they cannot stop a cracked copy of the app. Many developers accept that and keep checks light.
  • Keep the private key off build servers and out of your app and its repository. If it leaks, make a new key pair and ship code with the new public key.

Sources

Limitations

  • Ed25519 in Web Crypto needs a current browser: Chrome or Edge 137 or later, Firefox 129 or later, Safari 17 or later. Older browsers cannot make or check keys here.
  • Keys are long: the 64-byte signature alone takes 103 characters in groups (86 in a token), and the fields add to that. Shorter keys would need a weaker signature.
  • Text fields are limited to 64–254 bytes each (255 at most in the format); dates run to 2149-06-06.
  • The page does not compute machine ids: use whatever stable id your app computes, and enter the same text here.
  • A buyers’ file holds at most 10,000 rows at a time, and the table on the page shows the first 200.
  • The C# code needs the BouncyCastle.Cryptography package, the Python code the cryptography package and the Rust code the ed25519-dalek crate; the others use their standard libraries.

Privacy

On this device: nothing is sent

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

What do I get without a pass?

Without a pass, Software License Key Generator & Verifier (Signed Offline Keys) shows demo licence keys signed with a key pair made on this page, and the first lines (up to 20) of each verification snippet without the public key. Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

Can this make keys for software I did not write?

No. A key is valid only for the public key built into an app, and only its owner has the matching private key. This page makes keys for your own key pair and checks keys against a public key; it cannot find, guess or crack keys for other software.

Do my app’s users need an internet connection?

No. The code checks the signature with the public key inside your app, so keys work offline. Revoked serials reach users with your next update (or a list your app downloads, if you add that).

What happens if I lose the private key?

Keys already issued keep working, but you cannot make new ones for the same public key. Make a new key pair and release your app with its public key. That is why the page offers a password-protected file of the private key: keep it, and its password, in two safe places.

What does the free preview give?

Demo keys signed with a key pair made on this page, which cannot be saved, the key checker, and the first lines of the code in each language without the public key. Your own saved key pairs, the full code with your public key, the key files, the keys for a buyers’ CSV, the revocation list and the copies and downloads come with a Pro pass.

Which key style should I choose?

Groups of five are easier to read and type, and survive confusions like O and 0. The token is about a third shorter and suits copy and paste, links and e-mails. Your app’s code reads both, so you can mix them.

Was the code tested?

Each language’s code was compiled and run against keys made by this page — valid keys in both styles, expired, revoked, other-product, other-machine and altered keys — and gave the same answer as the page’s own checker.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.